我正在阅读有关现代OpenGL的这些tutorials。在教程5中,有一个练习用于在立方体之外绘制额外的三角形。我的理解是我可以重复使用相同的顶点着色器来绘制多个三角形(即立方体的三角形和一个额外的独立三角形)。我的问题是顶点着色器
#version 330 core
// Input vertex data, different for all executions of this shader.
layout(location = 0) in vec3 vertexPosition_modelspace;
layout(location = 1) in vec3 vertexColor;
layout(location = 2) in vec3 vertexTriangle_modelspace;
// Output data ; will be interpolated for each fragment.
out vec3 fragmentColor;
// Values that stay constant for the whole mesh.
uniform mat4 MVP;
void main(){
// Output position of the vertex, in clip space : MVP * position
gl_Position = MVP * vec4(vertexPosition_modelspace,1); // Cube
//gl_Position = MVP * vec4(vertexTriangle_modelspace,1); // Triangle
// The color of each vertex will be interpolated
// to produce the color of each fragment
fragmentColor = vertexColor;
}
它只绘制一个gl_Position
和最后一个xyžřy
。是否可以为一个顶点着色器输出多个gl_Position?
答案 0 :(得分:2)
顶点着色器无法渲染三角形。或立方体。管他呢。它们只是在顶点上执行操作。该顶点是否是三角形,线条,立方体,擎天柱等的一部分。它并不关心。
顶点着色器取一个顶点并写出一个顶点。对象由多个顶点组成。因此,当您发出渲染命令时,该命令中的每个顶点都会转到VS. VS为它接收的每个顶点写一个顶点。