我需要将一个属性变量传递给着色器,以了解如何计算gl_Position
。对于绘制的任何对象,此值应该不同。这是宣言:
attribute int drawText;
根据它的价值,我决定如何计算gl_Position
。这很热我在c ++程序中传递它:
// Pass some uniforms
GLint location= glGetAttribLocation(program_id, (char*)"drawText");
glEnableVertexAttribArray(location);
glVertexAttribI1i(location,1);
glutSolidCube(15);
glDisableVertexAttribArray(location);
但我得到了分段错误。我试着评论我发送属性的行(glVertexAttribI1i
),在这种情况下程序不会崩溃。问题是什么?
答案 0 :(得分:1)
整数顶点属性需要OpenGL 3.0和GLSL> = 1.30。
也许您正在使用GLEW?在使用之前,您应该检查(void*)(glVertexAttribI1i) != 0
。
此外,当一个属性对每个顶点具有相同的值时,就像你发布的片段一样,你应该使用制服。
答案 1 :(得分:0)
检查数据类型是否相同,或者属性名称“drawText”是否正确。