我有一个 3x9 重复部分的纹理。我不想存储纹理的镶嵌 1920x1080 图像,我宁愿在代码中生成它,以便它可以在其他分辨率下正确应用。关于如何做到这一点的任何想法?原始纹理在这里:http: //img684.imageshack.us/img684/6282/matte1.png
我知道纹理不是 2 的幂,所以我必须在着色器中进行重复,我这样做:
uniform sampler2D tex;
varying vec2 texCoord;
void main() {
gl_FragColor = texture2D(tex, mod(texCoord, vec2(3.0, 9.0)) * vec2(0.75, 0.5625));
}
这就是我绘制四边形的方式:
glBegin(GL_QUADS)
glColor4f(1.0, 1.0, 1.0, 1.0)
glMultiTexCoord2f(GL_TEXTURE1, self.widgetPhysicalRect.topLeft().x(), self.widgetPhysicalRect.topLeft().y())
glVertex2f(-1.0, 1.0)
glMultiTexCoord2f(GL_TEXTURE1, self.widgetPhysicalRect.topRight().x(), self.widgetPhysicalRect.topRight().y())
glVertex2f(1.0, 1.0)
glMultiTexCoord2f(GL_TEXTURE1, self.widgetPhysicalRect.bottomRight().x(), self.widgetPhysicalRect.bottomRight().y())
glVertex2f(1.0, -1.0)
glMultiTexCoord2f(GL_TEXTURE1, self.widgetPhysicalRect.bottomLeft().x(), self.widgetPhysicalRect.bottomLeft().y())
glVertex2f(-1.0, -1.0)
glEnd()
任何想法将不胜感激。
谢谢!