我遇到的问题与this question中描述的类似,但从未得到过回答。基本上当我打电话时
glVertexAttribPointer
stride
大于此确切值:640
。引发了OpenGL GL_INVALID_VALUE错误。根据{{3}},可以在一个案例中提出这样的恐怖:
如果步幅为负,则生成GL_INVALID_VALUE。
这显然不是我的理由。
在OpenGL 4.4中,根据documentation
指定最大值并设置为GL_MAX_VERTEX_ATTRIB_STRIDE
对于最大顶点跨度,旧版本的OpenGL(在我的情况下为3.3)中是否存在某个幻数?该函数是否有任何其他原因可以引发GL_INVALID_VALUE
?
答案 0 :(得分:1)
对于最大顶点跨度,旧版本的OpenGL(在我的情况下为3.3)中是否存在某个幻数?
旧的版本?没有。实施没有给予拒绝使用任何步幅。只要它是正数或零,实施就必须允许它。
此函数是否有任何其他原因可以引发GL_INVALID_VALUE?
是:硬件无法处理。如果您只获得GL 3.3,那么您的硬件已经很老了。所以它的下限可能比2048的4.4要求低。
现在很明显,实现不应该发出错误,除非规范说它可以。但是遵守规范从来就不是NVIDIA实施的主要目标......