我这个OpenGL调用顺序,是不是不符合某种约束

谢 @Xi Yang 邀无论是不是符合规范,在那里调用glBufferData都是极不合适的。glBufferData可以认为是在“建立”一个buffer。glGenBuffers只是生成buffer id。如果在创建VAO的时候,buffer还没有被建立出来,驱动会非常郁闷。你如果是封装vertex buffer和index buffer,应该设计成一开始就确定大小,之后就用glBufferSubData填数据。
■网友
几个问题1.对于一个buf是不能多次调用bufferData的 第一次调用就决定了buf的存储 之后是不能改的 你要修改buf内部数据 用map或bufferSubData 如果要改变buf存储 要deleteBuffer后重新genBuffer 然后bindBuffer bufferData2.以前记得也说过vao初始化的时候设置之后别改 你update里bindVao后又bindBuffer就是修改了vao数据了主要错误是1 2是对vao的误用 虽然不影响结果 但是你这比不用vao还慢这里没坑是你代码有明显错误 对同一个buf多次bufferData是ub 无法预测结果


    推荐阅读