Opengl 根据所需纹理大小计算UV坐标
假设我有一个由4个顶点组成的无结构平面。顶点的UV坐标如下所示:Opengl 根据所需纹理大小计算UV坐标,opengl,glsl,Opengl,Glsl,假设我有一个由4个顶点组成的无结构平面。顶点的UV坐标如下所示: (0,0)------------------(1,0) | | | | | | | | (0,1)------------------(1,1) 我还有一个纹理,我希望这个纹理占据平面上X%的水平空间和Y%的垂直空间。如何计算顶点着色器中的uv坐
(0,0)------------------(1,0)
| |
| |
| |
| |
(0,1)------------------(1,1)
我还有一个纹理,我希望这个纹理占据平面上X%的水平空间和Y%的垂直空间。如何计算顶点着色器中的uv坐标以允许这些任意数字
我知道,如果我想让纹理成为平面的(50%,50%),我需要制作
uvCoords*2f
,如果我想(200%,200%),我需要uvCoords/2f
,但是对于任何数字,如何做到这一点呢?你总是可以这样缩放坐标:
uvCoords / vec2 (X/100.0, Y/100.0)
这将以百分比表示X和Y,然后将uvCoords
的各个组件除以X和Y的分数表示
然而,现在还不清楚您在这里使用的是什么版本的OpenGL,是固定函数管道还是GLSL。如果它是固定函数,还有另一件事可以考虑称为纹理矩阵。当矩阵模式为GL_纹理时,可以使用glScalef(…)
设置缩放矩阵,而不是在设置顶点时执行此计算。只需确保重置该矩阵,否则将缩放所有纹理坐标
用户纹理矩阵也可以用于在GLSL中变换纹理坐标,不过设置起来可能比我最初建议的更繁琐。如果除了缩放之外,还想旋转或平移这些坐标,那么我建议使用纹理矩阵。对于任何数字,您都可以这样做,uvCoords
是一个变量。您的问题是不知道如何将百分比转换为分数吗uvCoords/vec2(X/100.0,Y/100.0)
将根据X和Y的两个独立百分比缩放纹理坐标。@AndonM.Coleman我想我把头脑中的一切都复杂化了。谢谢你的回答,现在一切如我所料。如果你把它作为一个答案,我会接受的。