Java-纹理映射的奇怪问题
作者:互联网
我正在尝试使用通过LWJGL的slick-util扩展加载到Java中的Quads的3d世界上的预生成PNG文件中的纹理坐标.
纹理文件为192×96像素,并且格式正确.它由6×3 32×32瓦片组成.
3d方形块的宽度为1.5f.它们的间距适当.
我在获取正确的纹理坐标时遇到问题.当我将0.0f设置为0.333333f作为y坐标时,我得到的值略大于显示的顶部图块的高度.但是,如果我将0.0f-0.25f放进去,我得到的恰好是1/3的高度,即我瓷砖的高度.我还没有找到X坐标的幻数,但是也许有人可以向我解释,为什么根据纹理坐标,96的1/4是24,还是我做错了?我怀疑这可能是我的四边形尺寸和纹理之间的冲突.
Screenshot http://i52.tinypic.com/2qbafqp.jpg
立方体的顶部使用纹理坐标(0.0,0.0f),(0.0,0.333333f),(0.166666f,0.333333f),(0.166666f,0.0f),该纹理坐标从左上角到右上角.再次,主要纹理文件是32×32瓦片,排列为192×96(96是高度).
请注意,我在其中一个图块的顶部放置了一条白线以查看其边框,在其底部放置了一条黑线,然后在其下方的下一个放置了一条白线.纹理“出血”太深了.如您所见,其他纹理具有自己甚至更陌生的坐标.
在假设图像的顶部为1.0而不是底部的情况下排列纹理坐标会生成奇数正方形,其中心应有一个四边形的矩形孔.
我正在使用TEX_ENV GL_MODULATE.
解决方法:
纹理大小通常是2的幂.我怀疑有些东西会将您的192×96纹理调整为256×128或256×256纹理.但是,这并不能真正解释您找到的值…但是,我认为,如果将纹理的大小调整为256×256(增大大小,不缩放!)并据此计算纹理坐标,问题就会解决.远.
标签:lwjgl,opengl,java 来源: https://codeday.me/bug/20191102/1989309.html