我想輸出gl_PrimitiveID作爲片段着色器中的顏色。但是它總是等於0GLSL gl_PrimitiveID始終爲0
這裏是我的片段着色器:
void main(void)
{
if(gl_PrimitiveID == 0)
gl_FragColor.rgba = vec4(1, 0, 0, 1); // red for 0
else
gl_FragColor.rgba = vec4(0, 0, 1, 1); // blue otherwise
}
和頂點着色器
void main(void)
{
gl_Position = ftransform();
}
爲三角形輸出顏色總是紅色。 我使用glDrawElements繪製三角形,並且在使用默認着色器時呈現效果良好。
我到底做錯了什麼?
這裏是我畫的三角形:
glBindBuffer(GL_ARRAY_BUFFER, vertexPosBuffer);
glVertexPointer(3, GL_FLOAT, 0, NULL);
glBindBuffer(GL_ARRAY_BUFFER, vertexNormalBuffer);
glNormalPointer(GL_FLOAT, 0, NULL);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementBuffer);
glDrawElements(GL_TRIANGLES, countVertices, GL_UNSIGNED_INT, (void*)0);
其他着色器階段在哪裏?特別是幾何,如果你有一個。 – 2014-09-25 23:03:26
對於某些要到達片段着色器的內容,* *會在其他着色器中傳遞。還有你的着色器中的任何編譯鏈接錯誤? – 2014-09-26 10:26:42
@Andon我將頂點着色器添加到原始帖子中。我沒有任何幾何着色器。 – Milo 2014-09-26 13:56:25