创建我的第一个简单几何着色器

时间:2015-07-28 20:02:10

标签: opengl shader

我正在尝试创建最简单的几何着色器。

我有一个工作顶点和片段着色器,我用

绘制三角形
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 我的问题解决了,我想哭了

由于

0 个答案:

没有答案