我有这个基本的着色器,虽然我遇到了一些真正让我烦恼的麻烦!
我正在使用片段着色器应用纹理,但是我移动或旋转相机,脸上的纹理将始终面向相机(我添加了一个 GIF 图像作为示例)。
因此,正如您在上面的图像中看到的那样,纹理始终面向相机,如果我离得更近,它将保持其比例。
我试图实现我可以四处移动,并且纹理将根据面和顶点保持它的位置、旋转和缩放,而不是像现在这样根据相机。
这是所需的结果,尽管使用了不推荐使用的方法glVertex2f
,glTexCoord2f
这与我通过着色器想要的结果相同,我想我的问题是计算纹理上的正确 UV 坐标。
(来源:gyazo.com)
重要的是,我想使用着色器来实现这一点,这样我就可以对实际纹理的颜色进行/计算更改。(例如将其设为黑白)。
这是我当前的顶点和片段着色器代码。
顶点着色器代码
void main() {
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
片段着色器代码
uniform vec2 size;
uniform sampler2D texture;
void main() {
gl_FragColor = texture2D(texture, gl_FragCoord.xy / size.xy);
}
片段着色器uniform vec2 size;
内是应用纹理的面本身的宽度和高度。当然是uniform sampler2D texture;
草纹理本身。