C glDrawArrays在GLESv2上抛出无效的GLU值
我正在尝试将OpenGL程序移植到GLESv2。该程序使用以下代码将纹理添加到默认帧缓冲区(如果我将其渲染到同样适用于OpenGL的fbo,它也会失败) 这在OpenGL上运行良好,但在GLESv2下的glDrawArrays()上失败。我读到这个问题:这与我的问题非常相似,但我不知道如何将解决方案应用到我的代码中,因为我没有使用VertexArray,而且我对GL非常陌生 inst->纹理是使用GLTEXAGE2D()上载的纹理。在初始化EGL并编译着色器之后,我立即创建了vertex_缓冲区:C glDrawArrays在GLESv2上抛出无效的GLU值,c,opengl-es,opengl-es-2.0,C,Opengl Es,Opengl Es 2.0,我正在尝试将OpenGL程序移植到GLESv2。该程序使用以下代码将纹理添加到默认帧缓冲区(如果我将其渲染到同样适用于OpenGL的fbo,它也会失败) 这在OpenGL上运行良好,但在GLESv2下的glDrawArrays()上失败。我读到这个问题:这与我的问题非常相似,但我不知道如何将解决方案应用到我的代码中,因为我没有使用VertexArray,而且我对GL非常陌生 inst->纹理是使用GLTEXAGE2D()上载的纹理。在初始化EGL并编译着色器之后,我立即创建了vertex_缓冲区
glGenBuffers(1, &vertex_buffer);
glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices),
vertices, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer);
glVertexAttribPointer(bgra_pos, 2, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(bgra_pos);
DEBUG_ERROR_CHECK();
编辑:您可以在此处查看整个源文件:。该文件是合成器的视频“驱动程序”,它所做的只是创建二维曲面并将其渲染到屏幕上。如果这个问题有什么问题或者我遗漏了什么,请发表评论,这样我就可以解决它。谢谢。我想出来了。我在eglCreateContext()之后调用了eglBindAPI(),所以我想我实际上是在创建一个GLES1上下文
glGenBuffers(1, &vertex_buffer);
glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices),
vertices, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer);
glVertexAttribPointer(bgra_pos, 2, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(bgra_pos);
DEBUG_ERROR_CHECK();