我在 OpenGL 中使用纹理时遇到了麻烦(仅 2D)
我想显示一个级别(大小 15x15)并且每个字段都可以有不同的值/图片。
我有大约 100 种不同的字段类型,根据关卡设计,我必须为每种类型显示不同的图像。
如果我为每个可能的字段(100 个文件)使用单个 tga-Image,一切正常,但现在我将所有图像放在一个文件中,并且根据字段类型,我总是显示与图片。
问题:有时图像中的细线不显示,在不同的精灵之间,经常有黑色或灰色的线条,使整个图形难看。
有没有办法轻松解决这个问题?
(也许我必须将 tga-image 加载到一个 GLuint 中,然后将其拆分为 100 个不同的 GLuint?或者是否有改善渲染的设置?或者我是否必须更改 tga-image 文件本身的分辨率?)
这是我的图像文件的一部分,每个元素的分辨率为 220x220 像素 --> 整个图片:2200x2200 像素
这就是 OpenGl 输出:
我真的不想拥有数百个图像文件。特别是因为加载所有这些文件会消耗大量时间,而且我确信那里有解决方案
编辑:
我正在使用以下设置:
// Specify filtering and edge actions
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP);
编辑2:
现在我将 GL_LINEAR 更改为 GL_NEAREST 并在纹理坐标中添加了半纹素,图像之间不再有线条 :)
但我还有另一个问题:
图像中的小元素(线条)显示不正确。
它应该是这样的: