gpt4 book ai didi

opengl - glDrawArrays 的计数可能超过缓冲区大小

转载 作者:行者123 更新时间:2023-12-02 03:27:11 28 4
gpt4 key购买 nike

我有一个未声明顶点属性的顶点着色器。它根据 UBO、gl_VertexIdgl_InstanceID 计算所有需要的值。

know必须绑定(bind)非零 VAO 才能渲染。

那么,在当前 VAO 状态下的缓冲区很小(即仅包含四个 float )的情况下,调用具有大 count 参数的绘图命令是否合法?由于某些平台上的隐式和未使用的读取,可能会导致视频内存访问冲突吗?这样的绘制调用似乎在我的机器上运行良好,但我不确定它在任何地方运行是否安全。

最佳答案

这是完全合法的。非零 VAO 并不意味着属性计数不能为零。如果属性为零,则不会从顶点缓冲区读取任何内容。

编辑:规范链接 https://www.khronos.org/registry/OpenGL/specs/gl/glspec46.core.pdf

Client vertex and index arrays - all vertex array attribute and element array index pointers must refer to buffer objects. The default vertex array object (the name zero) is also deprecated. Calling VertexAttribPointer when no buffer object or no vertex array object is bound will generate an INVALID_- OPERATION error, as will calling any array drawing command when no ver tex array object is bound.

但是创建并绑定(bind)“空”VAO 可以解决问题。请参阅第 580 页上的表格 - VAO 的初始(有效)状态已禁用所有属性。

关于opengl - glDrawArrays 的计数可能超过缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48638116/

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