【发布时间】:2013-08-12 10:41:22
【问题描述】:
我有这个基本的着色器,虽然我遇到了一些真正让我烦恼的问题!
我正在使用片段着色器应用纹理,尽管我移动或旋转相机,脸上的纹理将始终面向相机(我添加了一个 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; 当然是草纹理本身。
【问题讨论】:
标签: opengl glsl shader fragment-shader vertex-shader