c++ - glVertexAttribPointer stride GL_INVALID_VALUE opengl 3.3

标签 c++ opengl

我遇到的问题与 this question 中描述的类似,从未得到答复。基本上在我打电话的时候

glVertexAttribPointer

stride 大于这个精确值:640。引发 OpenGL GL_INVALID_VALUE 错误。根据documentation在一种情况下可以提出这样的警告:

GL_INVALID_VALUE is generated if stride is negative.

这显然不是我的情况。

在 OpenGL 4.4 中,根据 this site 指定最大值并将其设置为 GL_MAX_VERTEX_ATTRIB_STRIDE

在旧版本的 OpenGL(在我的例子中是 3.3)中是否有一个特定的魔数(Magic Number)用于最大顶点步幅?这个函数是否有任何其他原因可以引发 GL_INVALID_VALUE

最佳答案

Is there a certain magic number in older versions of OpenGL (3.3 in my case) for a maximum vertex stride?

在旧的版本中?不可以。没有允许实现拒绝您使用任何步幅。只要它是正数或零,实现就必须允许它。

Is there any other reason that this function can raise GL_INVALID_VALUE?

是的:硬件无法处理。如果您只获得 GL 3.3,那么您的硬件已经很旧了。所以它可能会比 2048 年的 4.4 要求有一个更低的限制。

显然,除非规范说明可以,否则实现不应该给出错误。但是,遵守规范从来都不是 NVIDIA 实现规范的主要目标......

关于c++ - glVertexAttribPointer stride GL_INVALID_VALUE opengl 3.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39038621/

相关文章:

java - NetBeans OpenGL Pack 中缺少 GLCanvas 和其他 JOGL 类吗?

opengl - 如何修复 GLFW 光标位置值在 GLFW_CURSOR_DISABLE 下不断变大?

iphone - 如何在iPhone屏幕上用线条画签名?

c++ - glGenBuffers 没有定义?

c++ - 使用 CONFIG += staticlib 构建 Qt 应用程序会导致 "undefined reference to vtable"错误

c++ - 不能在 dev c++ 5.9 中包含 std 数组

c++ - (gcc) 编译器是否优化了空体函数?

c++ - 通过预定义的静态地址访问寄存器是 C++ 中未定义的行为吗?

c++ - 虚幻引擎 4 : Converting DrawMesh() from Unity

opengl - 使用 OpenGL 进行延迟渲染,在表面的光照边界附近经历严重的像素化