作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我正在研究的有趣的事情。
varray.c:
static GLint vertices[] = {25, 25,
100, 325,
175, 25,
175, 325,
250, 25,
325, 325};
glEnableClientState (GL_VERTEX_ARRAY);
glVertexPointer (2, GL_INT, 0, vertices);
这有 6 个顶点元素。现在如果我画画
glDrawArrays (GL_TRIANGLES, 0, 6);
它正在按预期工作。
现在如果我给出类似的东西
glDrawArrays (GL_TRIANGLES, 0, 126);
我要求 glDrawArrays 绘制 126 个元素。哪些不存在于内存中。OpenGL 如何处理这样的情况?
最佳答案
我想说,对 glDrawArrays()
的第二个nd调用会遇到未定义的行为,因为该函数将尝试读取超出顶点
的内容”的边界。
Does it do some array calculations, and knows that it has 6 elements?
它不能,因为顶点
通过向下传递到glVertexPointer()
而衰减为C指针。从 C 指针不可能得出有关它指向多少已分配内存的任何信息。
应用程序没有崩溃只是运气不好。
关于c - glVertexArrays,越界。索引无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21810199/
这是我正在研究的有趣的事情。 varray.c: static GLint vertices[] = {25, 25, 100, 325,
我是一名优秀的程序员,十分优秀!