如何解决将参数传递给OpenGL显示列表
| 我想知道是否有任何方法(标准或巧妙的技巧)将参数传递给OpenGL显示列表。让我举一个例子来阐明我的意思。 假设我们有以下代码:GLuint l = glGenLists(1);
glNewList(l,GL_COMPILE);
// ...some OpenGL function calls
glBindTexture(GL_TEXTURE_2D,some_texture); // <-- here,I want `some_texture\' to be a parameter that I can set when calling the display list
//...some more stuff...
glEndList();
有没有办法实现我想要的?
解决方法
好吧,是的,绑定纹理是全局状态,如果您绑定纹理然后调用显示列表,则在执行列表时仍应绑定纹理。
但是最好停止使用显示列表,而使用VA / VBO,我推荐他们!
,那行不通。请务必仔细阅读规范和FAQ,尤其是:
可以指示GL处理
特定的显示列表(可能
重复)通过提供一个数字
唯一地指定它。这样做的原因
列表中的命令是
就像被给予一样执行
一般。唯一的例外是
依赖于客户端的命令
州。当这样的命令是
累积到显示列表中
(即发布时,而不是发布时
执行),客户端状态有效
当时适用于该命令。
16.010为什么显示列表占用这么多内存? OpenGL显示清单
必须复制所有数据
需要重新创建通话顺序
创造了它。
换句话说,如果您计划以后更改纹理的数据存储,则不会有任何区别,因为OpenGL会保留自己的副本以确保它可以精确地复制当前状态。
使显示列表具有某种可变性的唯一方法是通过嵌套显示技巧,但是正如Matias Valdenegro所建议的那样,如果可以帮助,则根本不要使用显示列表。其他功能(例如VBO)更灵活,并且具有相同或更好的性能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。