gpt4 book ai didi

opengl - glVertexPointer()何时复制数据?

转载 作者:行者123 更新时间:2023-12-02 08:14:41 24 4
gpt4 key购买 nike

调用glVertexPointer()(以及其他相关函数)时使用堆栈上的顶点数组是否安全?我不清楚 OpenGL 何时实际从传入的结构中复制数据。

如果不安全,那么您如何知道何时可以安全地销毁/重用传递给 glVertexPointer() 的结构?

(不使用 VBO)

最佳答案

在顶点数组情况下,假设 GL_VERTEX_ARRAY 已为 glEnableClientState(),则在执行 glDrawElements() 及其友元期间,指针将被取消引用>编辑。

一旦 glDrawElements() 返回,OpenGL 将拥有它需要的所有数据,因此您可以自由地 free()

对于 VBO,你永远不会传递真正的指针,所以这并不重要:)

所以像这样的东西应该有效:

void draw()
{
vector< float > verts;
verts.push_back( 0 );
verts.push_back( 0 );
verts.push_back( 0 );
verts.push_back( 10 );
verts.push_back( 0 );
verts.push_back( 0 );
verts.push_back( 10 );
verts.push_back( 10 );
verts.push_back( 0 );

glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, &verts[0]);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableClientState(GL_VERTEX_ARRAY);
}

关于opengl - glVertexPointer()何时复制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6987276/

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