【问题标题】:Vertex Shader trouble顶点着色器问题
【发布时间】:2012-02-05 07:59:56
【问题描述】:

我无法让我的顶点着色器 (1.20) 工作。我正在渲染一个简单的白色三角形,但是当我加载顶点着色器时,三角形消失了。

void main()
{
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}

我也试过了:

void main()
{
    gl_Position = ftransform();
}

无济于事。我真的很困惑,因为我的片段着色器确实工作。例如,

void main()
{
    gl_FragColor = vec4(.5, .6, .3, 1);
}

将使我的三角形变成绿色。我没有发现任何错误(并且着色器编译时没有错误),所以我想知道是否有人有任何想法。

【问题讨论】:

  • 你应该展示你用来编译和链接你的着色器和程序的代码。

标签: opengl glsl vertex-shader


【解决方案1】:

我认为您还需要复制颜色和纹理信息:

            gl_FrontColor = gl_Color;
            gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;

(如果您打算模拟固定功能管道的所有行为,还有更多)

【讨论】:

  • 谢谢;那行得通。但我不太明白为什么我需要设置颜色和纹理坐标。您的意思是说,一旦我加载着色器,颜色和其他属性就不会自动通过管道推送?
  • 对。当您加载顶点着色器时,您将完全替换固定功能管道中的内容。例如,你的 1 行和我的 2 行仍然没有光照或多重纹理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-13
相关资源
最近更新 更多