我编写的一个 OpenGL 应用程序可以作为一个适当格式的大型数据文件的查看器。
这很简单,它一次遍历每个数据集,使用 glCallList 绘制每个数据集:
for (all objects in our in our data set)
{
if (first time drawing this object)
{
glNewList(...);
for (all pixels in object_memory)
{
drawpixel();
}
glEndList();
glCallList(...);
delete object_memory
}
else
{
glCallList(...);
}
}
我正在尝试添加一个功能,我可以在其中更改单个 glCallList 的透明度。问题是,数据文件太大了,我生成了 glCallList,然后必须删除我从中读取的实际数据。这使内存使用量从4GB下降到400MB左右。glCallLists 的使用对应用程序的速度也非常重要,如果没有它们,它会变得缓慢。
有没有办法在我实际调用列表之前修改当前矩阵的全局透明度?
每次需要更新 alpha 值时更新列表不是一种选择。
或者,是否有另一种具有与 CallLists 相同的性能优势但可以轻松更新的方法?
我之前读过 VBO(顶点缓冲区对象),它们听起来很相似,但我不确定我的数据是否适合应用程序域。
任何想法或意见都会受到重视。
谢谢,
〜布赖恩