将参数传递到OpenGL显示列表

将参数传递到OpenGL显示列表,opengl,graphics,displaylist,Opengl,Graphics,Displaylist,我想知道是否有任何方法(标准或巧妙的技巧)将参数传递到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 paramete

我想知道是否有任何方法(标准或巧妙的技巧)将参数传递到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();
GLuint l=glgenlist(1);
glNewList(l,GL_编译);
//…一些OpenGL函数调用

glBindTexture(GL_纹理_2D,一些_纹理);// 是的,绑定的纹理是全局状态,如果绑定一个纹理,然后调用一个显示列表,那么当列表执行时,纹理仍然应该被绑定


但最好停止使用显示列表,使用VAs/VBOs,我推荐它们

是的,绑定的纹理是全局状态,如果绑定一个纹理,然后调用一个显示列表,则在执行列表时纹理仍应绑定


但最好停止使用显示列表,使用VAs/VBOs,我推荐它们

那不行。请务必仔细阅读规范和常见问题解答,尤其是:

德国劳埃德船级社可能被指示处理 特定显示列表(可能 重复)通过提供一个 唯一地指定它。这样做会导致 要删除的列表中的命令 就好像他们被杀了一样 正常地唯一的例外是 到依赖于客户端的命令 国家当执行此命令时 累积到显示列表中 (即在发布时,而不是在发布时) 已执行),有效的客户端状态 此时应用于命令。

16.010为什么显示列表占用这么多内存?OpenGL显示列表 必须将所有数据复制到它 需要重新创建调用序列 这就创造了它

换句话说,如果您计划稍后更改纹理的数据存储,它将不会有任何区别,因为OpenGL保留自己的副本,以确保它可以准确地再现当前状态


让显示列表具有某种可变性的唯一方法是通过嵌套显示技巧,但正如Matias Valdenegro已经建议的那样,如果可以的话,根本不应该使用显示列表。其他功能(如VBO)更灵活,并具有相同或更好的性能。

这不起作用。请务必仔细阅读规范和常见问题解答,尤其是:

德国劳埃德船级社可能被指示处理 特定显示列表(可能 重复)通过提供一个 唯一地指定它。这样做会导致 要删除的列表中的命令 就好像他们被杀了一样 正常地唯一的例外是 到依赖于客户端的命令 国家当执行此命令时 累积到显示列表中 (即在发布时,而不是在发布时) 已执行),有效的客户端状态 此时应用于命令。

16.010为什么显示列表占用这么多内存?OpenGL显示列表 必须将所有数据复制到它 需要重新创建调用序列 这就创造了它

换句话说,如果您计划稍后更改纹理的数据存储,它将不会有任何区别,因为OpenGL保留自己的副本,以确保它可以准确地再现当前状态


让显示列表具有某种可变性的唯一方法是通过嵌套显示技巧,但正如Matias Valdenegro已经建议的那样,如果可以的话,根本不应该使用显示列表。其他功能(如VBO)更灵活,具有相同或更好的性能。

现在没有人在新代码中使用显示列表。太麻烦了,不能有效地使用。您刚刚遇到了一个特殊的问题。现在没有人在新代码中使用显示列表。太麻烦了,不能有效地使用。你刚刚经历了一个特别的问题。