我正在尝试创建最简单的几何着色器。
我有一个工作顶点和片段着色器,我用
绘制三角形glDrawElements(GL_TRIANGLES, size, GL_UNSIGNED_INT, 0);
顶点着色器:
// vertex shader
#version 120
attribute vec3 in_position;
uniform mat4 modelViewProjectionMatrix;
void main() {
gl_Position = modelViewProjectionMatrix * vec4(in_position, 1.0);
}
Fragment Shader:
// fragment shader
#version 120
void main() {
gl_FragColor = vec4(1.0,0.0,0.0,1.0);
}
几何着色器
//geometry shader
#version 120
#extension GL_EXT_geometry_shader4: enable
void main(void) {
for (int i = 0; i < gl_VerticesIn; i++) {
gl_Position = gl_PositionIn[i];
EmitVertex();
}
EndPrimitive();
}
我的编译方法编译所有着色器而不返回任何gl_error
这是我的附加和链接方法,这是我在尝试为着色器指定输出值时得到的地方
void attached_and_link_shaders() {
glAttachShader(programid, shaderV);
glAttachShader(programid, shaderG);
glAttachShader(programid, shaderF);
glProgramParameteriEXT(programid, GL_GEOMETRY_INPUT_TYPE_EXT, GL_TRIANGLES);
gl_error("EXT INPUT TYPE");
// error here
glProgramParameteriEXT(programid, GL_GEOMETRY_OUTPUT_TYPE_EXT, GL_TRIANGLES);
gl_error("EXT OUTPUT TYPE"); // OUTPUT TYPE 1281 invalid value
glProgramParameteriEXT(programid, GL_GEOMETRY_VERTICES_OUT_EXT, 3);
gl_error("EXT VERTICES OUT");
glLinkProgram(programid);
}
我的问题在哪里?对版本120的良好几何着色器教程的任何引用都会有所帮助,
编辑我的out顶点是正确的,解决方案是使用GL_TRIANGLE_STRIP 我的问题解决了,我想哭了
由于