假设我有一个由4个顶点组成的无纹理平面。顶点的UV坐标如下:
(0,0)------------------(1,0)
| |
| |
| |
| |
(0,1)------------------(1,1)
我也有纹理,我希望这个纹理占据平面上水平空间的X%和垂直空间的Y%。如何计算顶点着色器中的uv坐标以允许这些任意数字?
据我所知,如果我想要纹理(50%,50%),我需要制作uvCoords * 2f
,如果我想要(200%,200%)那么我需要{ {1}},但如何为任何数字执行此操作?
答案 0 :(得分:1)
您可以随时按比例缩放坐标:
uvCoords / vec2 (X/100.0, Y/100.0)
以百分比形式取X和Y,然后将uvCoords
的各个分量除以X和Y的小数表示。
但是,目前尚不清楚您在这里使用的OpenGL版本,无论是固定功能管道还是GLSL。如果它是固定功能,你还可以考虑另一种称为纹理矩阵的东西。您可以使用glScalef (...)
设置缩放矩阵,而矩阵模式为GL_TEXTURE
,而不是在设置顶点时执行此计算。只需确保重置该矩阵,否则您将缩放所有纹理坐标。
用户纹理矩阵也可用于转换GLSL中的纹理坐标,但设置可能比我最初建议的更乏味。如果除了缩放之外还想旋转或平移这些坐标,那么我可能会建议使用纹理矩阵。