gpt4 book ai didi

c++ - glVertexAttribPointer 返回 GL_INVALID_OPERATION

转载 作者:太空宇宙 更新时间:2023-11-04 08:47:23 28 4
gpt4 key购买 nike

我正在使用 OpenGL 核心配置文件 3.3 版

当我调用 glVertexAttribPointer 时,我得到 GL_INVALID_OPERATION。我已经 checkout http://www.opengl.org/sdk/docs/man3/xhtml/glVertexAttribPointer.xml

struct
{
GLuint program;

GLint uni_texture;
GLint att_coord;
} shader_fbo;

...

shader_fbo.att_coord = glGetAttribLocation(shader_fbo.program, "coordIn");
glGenVertexArrays(1, &vao);
glGenBuffers(1, &vbo);


/*shader_fbo.att_coord stores now 0*/
/*vao stores now 1*/

...

GLfloat vertices[] = { -1.0, -1.0,
-1.0, 1.0,
1.0, -1.0,
1.0, 1.0 };
GLubyte indices[] = { 0, 1, 2,
1, 2, 3 };
...

glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBindVertexArray(vao);
glEnableVertexAttribArray(shader_fbo.att_coord);
glVertexAttribPointer(shader_fbo.att_coord,
2,
GL_FLOAT,
GL_FALSE,
0,
vertices);

...

glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, indices);

我的顶点着色器来了

#version 330
in vec2 coordIn;
out vec2 coordFS;
void main() {
gl_Position = vec4(coordIn, 0.0, 1.0);
coordFS = (1.0+coordIn)/2.0;
}

它编译和链接没有任何错误。

更新:glVertexAttribPointer 现在可以工作,但调用 glDrawElements 时出现 GL_OUT_OF_MEMORY 错误。代码已更新。

最佳答案

GL_INVALID_OPERATION is generated if zero is bound to the GL_ARRAY_BUFFER buffer object binding point and the pointer argument is not NULL.

您似乎没有绑定(bind)缓冲区对象。 glVertexAttribArray 将最近的缓冲区对象与指定的顶点属性相关联。

关于c++ - glVertexAttribPointer 返回 GL_INVALID_OPERATION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21217337/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com