可能是有点强迫症,但我感到很烦人的是,在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!!!