我遇到的问题与 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/