0
如果要重新编译现有编译显示列表,是否需要先调用glDeleteLists()和glGenLists()?或者可以通过在现有编译的显示列表ID上调用glNewList()来重新编译显示列表?opengl重新编译显示列表
如果要重新编译现有编译显示列表,是否需要先调用glDeleteLists()和glGenLists()?或者可以通过在现有编译的显示列表ID上调用glNewList()来重新编译显示列表?opengl重新编译显示列表
只要调用glNewList/glEndList就足够了。
注意,删除只会变得对glEndList调用有效:
If a display list with name `list` already exists,
it is replaced only when glEndList is called.
如果你宁愿较早释放前面的列表,然后通过各种手段,做电glDeleteLists
。明确表示并不会受到伤害。
最后一点... glGenLists从不需要。你总是可以在任何正整数上调用glNewList,即使它不是通过glGenLists提供的。 glGenLists API的主要原因是确保名称尚未被使用。但是你已经知道,如果你刚删除它。
因此不调用glDeleteLists()不会导致某种服务器端内存泄漏?另外,它是否适用于其他服务器端对象,如纹理,缓冲区对象等? – 2010-10-18 21:22:39
在重新分配该句柄之前,不要调用对象上的Delete *(不能泄漏)(但实现中的错误可能存在)。这是GL工作的一部分,以确保它不会泄漏到那里。对于可以决定名称的所有对象(如纹理和缓冲区对象)都是如此。 – Bahbar 2010-10-19 07:08:52