gpt4 book ai didi

c++ - 混合 VBO 和非 VBO 渲染的 Opengles 给出 EXC_BAD_ACCESS

转载 作者:太空宇宙 更新时间:2023-11-03 10:20:46 25 4
gpt4 key购买 nike

大家好。我正在尝试呈现如下所示的两种方法。 RenderA() 使用的是 VBO 而 RenderB() 不是。当它到达 RenderB() 中的 glDrawArrays() 时,我收到一个 EXC_BAD_ACCESS 错误。

RenderB() 工作正常,但如果我不创建和使用任何 VBO,即当我注释掉 CreateVBOs() 和 RenderA() 时。

  1. 那么这是否意味着一旦您开始使用 VBO,所有渲染都必须使用 VBO?
  2. 或者我在这里做错了什么?
Render() {     CreateVBOs(); //glGenBuffers,glBindBuffer,glBufferData etc            RenderA();           RenderB();    }RenderA(){               glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vbo->indexBuffer);    glBindBuffer(GL_ARRAY_BUFFER, vbo->vertexBuffer);    glVertexPointer(3, GL_FLOAT, sizeof(Vertex), 0);    glColorPointer(4, GL_FLOAT, sizeof(Vertex), colorOffset);       glEnableClientState(GL_VERTEX_ARRAY);       glEnableClientState(GL_COLOR_ARRAY);    glDrawElements(GL_TRIANGLES,vbo->indexCount, GL_UNSIGNED_SHORT, bodyOffset);    glDisableClientState(GL_COLOR_ARRAY);       glDisableClientState(GL_VERTEX_ARRAY);}RenderB(){    static GLfloat vertices[] = {1.0,1.0,1.0,2.0,1.0,1.0};    glEnableClientState(GL_VERTEX_ARRAY);    glVertexPointer(3, GL_FLOAT, 0, vertices);    glDrawArrays(GL_POINTS, 0, 2);    glDisableClientState(GL_VERTEX_ARRAY);}

Edit(Solved)

Figured it out. Apparently you have to make sure you unbind the buffer if it was binded before in order to render without vbo.

My CreateVBOs() function binded but did not unbind the buffer so thats what created bad access when RenderB() was trying to use glDrawArrays. Unbinding the buffer is just binding it to 0 like so:

glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glBindBuffer(GL_ARRAY_BUFFER, 0);

最佳答案

在执行非 VBO 绘制调用之前尝试将 GL_ELEMENT_ARRAY_BUFFER 和 GL_ARRAY_BUFFER 绑定(bind)为零。

将以下代码行添加到 VBO 绘制调用 (RenderA) 的末尾:

glBindBuffer(GL_ElEMENT_ARRAY_BUFFER, 0);
glBindBuffer(GL_ARRAY_BUFFER, 0);

关于c++ - 混合 VBO 和非 VBO 渲染的 Opengles 给出 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6153704/

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