Questions tagged «vertex-buffer-object»

2
GL_STATIC_DRAW与GL_DYNAMIC_DRAW与GL_STREAM_DRAW:有关系吗?
在OpenGL中,缓冲对象函数(glBufferData,glBufferSubData和,可能还有其他一些)具有参数usage,该参数在文档中被描述为预期用途的暗示,可能意在帮助实现更好的性能。 用法 指定数据存储的预期使用方式。符号常量必须是GL_STREAM_DRAW,GL_STREAM_READ,GL_STREAM_COPY,GL_STATIC_DRAW,GL_STATIC_READ,GL_STATIC_COPY,GL_DYNAMIC_DRAW,GL_DYNAMIC_READ,或GL_DYNAMIC_COPY。 [...] 用法向GL实现提供了有关如何访问缓冲区对象的数据存储的提示。这使GL实现能够做出更明智的决策,从而可能显着影响缓冲区对象的性能。但是,它并不限制数据存储的实际使用。 维基同样含糊不清: 毕竟,这些只是提示。在创建STATIC缓冲区之后修改它,或者永远不要修改STREAM缓冲区,这是完全合法的OpenGL代码。 [...] 这些问题只有通过仔细分析才能回答。即便如此,答案也仅对来自特定硬件供应商的特定驱动程序版本是准确的。 最后,这个参数有多相关(如果有的话)?驾驶员是否真的考虑到了这一点,如果确实如此,根据您的经验,它在实践中会对性能产生多大影响?您有数据要共享吗? 我已经编写了一个薄的图形API抽象层,打算将其作为现有API中的任何一个实现,并且很想完全忽略此参数并将其从公开的抽象中隐藏起来。

2
什么是索引缓冲区?它与顶点缓冲区有何关系?
我有一个这样的顶点缓冲区: 0.0, 0.0, 1.0, 0.0, 0.0, 0.6, 1.0, 0.6, 0.5, 1.0 我有以下索引缓冲区: 0, 2, 2, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, 3, 3, 1 我知道我想gl.LINES使用WebGL 进行绘制,这意味着多个分开的线段。 gl.drawElements(gl.LINES, 16, gl.UNSIGNED_SHORT, indexBuffer); 似乎可以在WebGL的一次绘制调用中绘制多个线段。 有人可以给我ELI5吗?什么是索引缓冲区?它与顶点缓冲区有何关系?如何从我的原语生成索引缓冲区?

3
为什么顶点缓冲区对象可以提高性能?
根据我的基本了解,顶点缓冲区对象的工作原理如下(伪代码): 通常,如果要说画一个正方形,可以发出画线命令。 line (0, 0) -> (1, 0) line (1, 0) -> (1, 1) line (1, 1) -> (0, 1) line (0, 1) -> (0, 0) 如果我理解正确,则使用VBO会将顶点加载到VBO中。 define VBO load (0,0) -> VBO load (1,0) -> VBO load (1,1) -> VBO load (0,1) -> VBO load (0,0) -> VBO 然后,您可以发出一个绘图命令。 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.