今日我用着色器在屏幕上画圆,发现只画了1/4圆,我反复问ai代码。他并没有找出问题。我也没有看出问题。
后来我才意识到是顶点着色器的问题。这个ai生成的顶点着色器有问题。我直接用了。将顶点着色器删除使用默认着色器就成功了。
我总结一下坐标知识:
片段着色器获取像素纹理颜色
#version 330 core
uniform sampler2D texture; // 纹理
void main() {
vec2 texCoords = gl_TexCoord[0].xy;
vec4 pixel = texture2D(texture, texCoords);
...
}
sfml创造纹理并传入着色器
sf::Texture texture;
if (!texture.loadFromFile("pic.jpg"))
{
// 处理加载纹理失败的情况
return -1;
}
// 通过设置纹理参数来传递纹理给着色器
shader.setUniform("texture", texture);归一化坐标
uniform vec2 resolution;//传入的屏幕分辨率
void main()
{
vec2 uv = gl_FragCoord.xy / resolution;
...
}