这是我正在研究的有趣内容。
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);
这有15个顶点元素。 现在如果我画画
glDrawArrays (GL_TRIANGLES, 0, 6);
它按预期工作。
现在,如果我给出类似
的内容glDrawArrays (GL_TRIANGLES, 0, 126);
我已经要求glDrawArrays绘制126个元素。哪些不存在于内存中。 OpenGL如何处理这种情况?
答案 0 :(得分:0)
我会说对glDrawArrays()
的2 nd 调用会遇到未定义的行为,因为该函数会尝试超出vertices
的边界。
是否进行了一些数组计算,并知道它有6个元素?
它不能,因为vertices
通过传递给glVertexPointer()
而衰减到C指针。从C指针开始,无法绘制有关它指向的已分配内存量的任何信息。
运气不好,应用程序不会崩溃。