2012-02-04 166 views
0

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

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

我也试过:

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

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

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

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

+0

你应该表现出您正在使用的代码来编译和链接着色器和程序。 – 2012-02-04 23:22:31

回答

3

我认为你需要复制的颜色和纹理信息,以及:

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

(如果你打算模拟所有固定管线的行为更多)

+0

谢谢;那工作。但我不太明白为什么我需要设置颜色和纹理坐标。你的意思是说,一旦我加载着色器,颜色和其他属性不会自动通过管线? – mwlow 2012-02-04 23:52:34

+0

对。当你加载一个顶点着色器时,你完全替换了固定函数管道中的东西。例如,对于你的1行和2行,你仍然没有光照或多纹理。 – 2012-02-05 00:03:57