答案 0 :(得分:0)
很难从此屏幕截图中分辨出问题是出在映射问题还是缺少网格划分,所以我将对两者进行回应。
可能性1:映射错误
确保在地图集上关闭了mipmapping。在GL中,这意味着您的缩小过滤器应为线性过滤器或最接近过滤器,但不是 mipmapped变体。
glBindTexture(GL_TEXTURE_2D, texAtlas);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, 0);
该地图集非常紧密地包装在一起,标准的Mip生成将在补丁边界上模糊化,从而导致接缝。
可能性2:缺少网格分割
也可能是模型(作为不正确的方式)作为一个连续的网格被加载,而纹理图集清楚地表明应将网格分解为许多部分。
丑陋的接缝是由于OpenGL在要使网格不连续的边界上插补纹理坐标(UV)而产生的。纹理图集中的每个小“块”都应对应于网格上的一个不同补丁,并且与该补丁边缘对应的顶点不得与其他顶点共享,因为纹理坐标是不连续的。
某些网格格式(例如常见的.obj)可以以怪异的方式指定顶点,必须谨慎处理这些顶点才能在OpenGL中正常工作。例如,一个顶点可以与两个不同的纹理坐标关联。为了正确地渲染模型,我们必须复制这样一个顶点,为每组纹理坐标创建一个唯一的顶点。查看文档以了解用于加载模型的任何API,并查看其是否提及顶点重复,纹理坐标等。