可能是有点强迫症,但我感到很烦人的是,在OpenGL中,glGenLists直接返回列表的ID,而glGenTextures使用引用参数来反馈ID。



GLuint glGenLists(GLsizei range);

void glGenTextures(GLsizei n, GLuint * textures);


这种不一致背后有什么充分的理由吗?

最佳答案

Christian Rau谈到了正确的主题。

glGenLists保证返回值的顺序是字符串绘制。使用模型希望glListBase + glCallLists允许简单

// ascii model
// init
asciiBase = glGenLists(128);
// usage
glListBase(asciiBase);
glCallList(strlen(string), GL_UNSIGNED_BYTE, string);


对于该使用模型,您确实需要范围是连续的。没有针对纹理的模型,因此删除了获取连续名称的要求,因为它简化了GL的实现。

另外,请注意glGen *调用都是可选的。没有什么可以阻止您执行以下操作:

glBindTexture(GL_TEXTURE_2D, 5);
// never called glGenTextures to get that 5!!!

10-04 15:08