C++ opengl重新编译显示列表

C++ opengl重新编译显示列表,c++,c,opengl,C++,C,Opengl,如果要重新编译现有的已编译显示列表,是否需要先调用GLDeleteList()和GLGenList()?或者只需在现有已编译的显示列表ID上调用glNewList()即可重新编译显示列表?只需调用glNewList/glEndList就足够了 请注意,删除仅在glEndList调用时生效: If a display list with name `list` already exists, it is replaced only when glEndList is called. 如果您希

如果要重新编译现有的已编译显示列表,是否需要先调用GLDeleteList()和GLGenList()?或者只需在现有已编译的显示列表ID上调用glNewList()即可重新编译显示列表?

只需调用glNewList/glEndList就足够了

请注意,删除仅在glEndList调用时生效:

If a  display list with name `list` already exists, 
it is replaced only when glEndList is called.
如果您希望更早地释放上一个列表,那么请务必调用
glDeleteLists
。直言不讳当然没有坏处


最后一点。。。glgenlist从来都不是必需的。您始终可以对任何正整数调用glNewList,即使它不是通过glgenlist提供的。使用glgenlistapi的主要原因是确保该名称尚未被使用。但是你已经知道,如果你只是删除了它。

只要调用glNewList/glEndList就足够了

请注意,删除仅在glEndList调用时生效:

If a  display list with name `list` already exists, 
it is replaced only when glEndList is called.
如果您希望更早地释放上一个列表,那么请务必调用
glDeleteLists
。直言不讳当然没有坏处


最后一点。。。glgenlist从来都不是必需的。您始终可以对任何正整数调用glNewList,即使它不是通过glgenlist提供的。使用glgenlistapi的主要原因是确保该名称尚未被使用。但是您已经知道,如果您刚刚删除了它。

那么不调用glDeleteLists()不会导致某种服务器端内存泄漏?另外,它对其他服务器端对象(如纹理、缓冲区对象等)是否也同样有效?在重新分配句柄之前不调用对象上的Delete*(但实现中可能存在bug)。德国劳埃德船级社的工作之一是确保它不会泄漏到那里。所有可以决定名称的对象(如纹理和缓冲区对象)都是这样,所以不调用gldeleteList()不会导致某种服务器端内存泄漏?另外,它对其他服务器端对象(如纹理、缓冲区对象等)是否也同样有效?在重新分配句柄之前不调用对象上的Delete*(但实现中可能存在bug)。德国劳埃德船级社的工作之一是确保它不会泄漏到那里。这适用于所有可以确定名称的对象(如纹理和缓冲区对象)。