我正在使用OpenGL ES 2进行一些测试,但遇到了一些问题,我目前的程序是这样的:
Init
-------
-> create index buffer
-> fill index buffer glBufferData …
-> create vertex buffer
-> fill vertex buffer glBufferData …
Draw
-------
1. Apply vertex buffer
-> Bind VAO
-> bind vertex buffer
- enable attributs (glVertexPointer, …)
-> unbind vertex buffer
-> Unbind VAO
-> Bind VAO
3. Apply index buffer
4. Draw
问题
给定的代码崩溃,经过一些研究,我明白了为什么:我需要在初始部分中取消索引缓冲区的绑定(在“填充索引缓冲区glBufferData”之后),或者在第一个“绑定VAO”之前将其取消绑定
我的问题是:
- 我可以将指标缓冲区放入VAO(VAO股票指标缓冲区吗?)?
- 每次更新(glBufferData)之后是否都必须取消绑定缓冲区吗?
在我的应用程序中,我有一些在每一帧都更新的缓冲区(例如:粒子),所以我有一个像这样的OpenGL堆栈:
-> bind buffer 1
-> update buffer 1
-> close buffer 1
-> bind buffer 1
-> draw
前三行将更新顶点缓冲区,最后两行是绘制对象,它应类似于以下内容:
-> bind buffer 1
-> update buffer 1
-> draw
谢谢