我正在绘制一些纹理映射的矩形,它们使用以下代码相互叠加:
glBegin(GL_QUADS);
glTexCoord2f(0.0, 1.0); glVertex3f(x, y, 0);
glTexCoord2f(0.0, 0.0); glVertex3f(x, y + dy, 0);
glTexCoord2f(1.0, 0.0); glVertex3f(x + dx, y + dy, 0);
glTexCoord2f(1.0, 1.0); glVertex3f(x + dx, y, 0);
glEnd();
这样可以正确地呈现完整尺寸,但是当我使用glScale
调整其大小时,在一些矩形之间会出现单像素间隙。
但是,如果我删除纹理贴图,矩形总是正确地相互邻接。
出了什么问题,我该如何解决这个问题?
答案 0 :(得分:1)
纹理如何?也许你要使用不同的夹紧模式,具体取决于纹理的内容。
答案 1 :(得分:1)
首先,确保它们确实是间隙,而不是纹理工件,不使用任何alpha通道(假设你是这样)并选择一个像拇指一样突出的背景颜色。
即使你将纹理设定为根本原因,更可能的罪魁祸首是在顶点坐标中舍入错误。如果使用的顶点坐标匹配100%,则仅保证相邻三角形的光栅化无间隙。而不是在运行中计算它们(x + dx,y + dy),为什么不将它们存储在一个数组中并确保重复使用相同的坐标?
答案 2 :(得分:1)
原始的“全尺寸”渲染已经调整了纹理大小,并且它是一个纯粹的侥幸,调整工件大小导致透明行在这种情况下不显示。
然后当我用glScale再次调整整个批次时,一些工件必须消失,透明像素显示为间隙。