AndroidNDKOpenGLES3.0使用glDrawArrays和glDrawElements时抛出GL_INVALID_OPERATION错误。
创始人
2024-10-09 10:02:15
0

这个错误通常发生在OpenGL ES 3.0中的一些操作被错误地执行。在Android NDK中,需要使用特定的上下文来创建OpenGL环境,否则glDrawArrays和glDrawElements可能会抛出GL_INVALID_OPERATION错误。

为了解决这个问题,您需要确保使用正确的上下文来创建OpenGL环境,并在渲染时使用正确的着色器程序和顶点缓冲对象。下面是一个简单的代码示例,可以演示如何避免GL_INVALID_OPERATION错误:

GLuint vertexBufferId = 0; glGenBuffers(1, &vertexBufferId); glBindBuffer(GL_ARRAY_BUFFER, vertexBufferId); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0); glEnableVertexAttribArray(0);

GLuint indexBufferId = 0; glGenBuffers(1, &indexBufferId); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBufferId); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);

glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClearDepthf(1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glDrawElements(GL_TRIANGLES, sizeof(indices) / sizeof(indices[0]), GL_UNSIGNED_SHORT, 0);

在此代码示例中,我们首先创建一个顶点缓冲对象,并将数据绑定到它上面。然后,我们使用glVertexAttribPointer启用顶点属性,并使用glBindBuffer绑定索引缓冲区。我们还在渲染之前启用了深度测试,清除颜色缓冲区和深度缓冲区,并使用glDrawElements绘制三角形。通过这种方式,我们可以避免发生GL_INVALID_OPERATION错误。

相关内容

热门资讯

6分钟透视辅助!pokemmo... 6分钟透视辅助!pokemmo修改器手机版,扑克之星辅助,详细教程(有挂教程)在进入pokemmo修...
八分钟私人局辅助器!如何下载德... 八分钟私人局辅助器!如何下载德普之星辅助软件,德扑圈有透视吗,详细教程(有挂细节);暗藏猫腻,小编详...
九分钟模拟器!竞技联盟透视插件... 九分钟模拟器!竞技联盟透视插件,agpoker辅助,详细教程(有挂内幕)1)竞技联盟透视插件辅助挂:...
1分钟辅助软件!德普之星怎么开... 1分钟辅助软件!德普之星怎么开辅助(透视辅助)详细辅助教程(原来教程)1、进入到黑科技之后,能看到左...
二分钟透视方法!xpoker辅... 二分钟透视方法!xpoker辅助工具,德州透视脚本,详细教程(有挂秘籍)德州透视脚本是一种具有地方特...
十分钟安卓版!德普之星怎么开辅... 十分钟安卓版!德普之星怎么开辅助(透视辅助)详细辅助模拟器(总是模拟器)1、超多福利:超高返利,海量...
三分钟能控制牌!智星德州插件2... 三分钟能控制牌!智星德州插件2024最新版,werplan外挂,详细教程(有挂详情);1、超多福利:...
9分钟辅助工具!德普之星怎么设... 9分钟辅助工具!德普之星怎么设置埋牌(透视辅助)详细辅助程序(一贯程序);1、每一步都需要思考,不同...
4分钟辅助!拱趴大菠萝有什么挂... 4分钟辅助!拱趴大菠萝有什么挂,steampokermaster辅助,详细教程(有挂脚本);1、构建...
5分钟私人局透视!德普之星辅助... 5分钟私人局透视!德普之星辅助器app(透视辅助软件)详细辅助脚本(竟然脚本);1、在德普之星辅助器...