gpt4 book ai didi

c++ - OpenGL 显示列表是否烘焙 glVertex 数据?

转载 作者:太空宇宙 更新时间:2023-11-03 10:27:40 26 4
gpt4 key购买 nike

我已经在简单的即时模式下使用 OpenGL 一段时间了,并且正在尝试转到带有显示列表的保留模式(遗憾的是我得知它已经被弃用了一段时间)。我想知道的是,我何时输入:

glNewList(list, GL_COMPILE);
glBegin(GL_TRIANGLE_FAN);
glVertex2f(0.0f, 0.0f);
for (int i = 0; i < 10; i++)
{
glVertex2f(radius * cos(i * 2.0f * PI / 9.0f), radius * sin(i * 2.0f * PI / 9.0f));
}
glEnd();
glEndList();

OpenGL是否预先计算好for循环中的所有10个顶点,然后将它们发送给baked的显卡,如:

glVertex2f(0.5f, 0.0f);
glVertex2f(0.499f, 0.0055f);
//so and so forth 10 times...

或者它是否尝试对每一帧都执行 for 循环(以及许多 sin/cos 操作)?换句话说,在显示列表中存储这样一个圆形是否合理(其余的使用 glTranslatef、glRotatef 等...)以避免在每个帧更新中进行三角函数运算,还是根本没有性能提升?

编辑:为了避免混淆,我打算使用 for 循环创建一次此显示列表,然后在每个帧更新中通过 glCallList(list) 调用它(即 glutDisplayFunc( ))。我不会为每一帧都创建一个列表。

最佳答案

显示列表(以及它所提供的即时模式渲染)是古老的弃用功能,底层机制取决于驱动程序,有些人可能会将其返回到绘制数组调用中,而其他人只会使用它的参数重播调用明白了,实际上没有重新执行您的代码。

相反,您应该通过将数据放入 VBO 并使用 glDrawArrays 来明确地进行烘焙。

关于c++ - OpenGL 显示列表是否烘焙 glVertex 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28048881/

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