gpt4 book ai didi

c - glVertexArrays,越界。索引无效

转载 作者:行者123 更新时间:2023-11-30 17:39:27 27 4
gpt4 key购买 nike

这是我正在研究的有趣的事情。

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 如何处理这样的情况?

  • 它是否进行了一些数组计算,并且知道它有 6 个元素?在这种情况下,它会忽略剩余的 120 个?
  • 或者它会继续画垃圾吗?

最佳答案

我想说,对 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/

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