如果你真的只是想畫上有一個質感的正方形,你應該考慮做一個新的空VAO,並調用glDrawArrays(GL_TRIANGLE_STRIP, 0,3);
頂點着色器那麼看起來是這樣的:
out vec2 mapping;
void main()
{
float size = 1.0f;
vec2 offset;
switch(gl_VertexID)
{
case 0:
//Bottom-left
mapping = vec2(0.0f, 0.0f);
offset = vec2(-size, -size);
break;
case 1:
//Top-left
mapping = vec2(0.0f, 1.0f);
offset = vec2(-size, size);
break;
case 2:
//Bottom-right
mapping = vec2(1.0, 0.0);
offset = vec2(size, -size);
break;
case 3:
//Top-right
mapping = vec2(1.0, 1.0);
offset = vec2(size, size);
break;
}
gl_Position = vec4(offset, 0.0f, 1.0f);
}
映射變量告訴fragmentshader什麼紋理座標。
你沒有指定你的目標GL版本。使用可編程管道,你可以做這個_attribute-less_,所以VBO和EBO都可以完全跳過。儘管如此,您仍然需要獲取頂點數據着色(除非它是常量),但現在還有其他可能性。 – derhass