为什么 OpenGL 函数不使用模板?

Why don't OpenGL functions use templates?

本文关键字:OpenGL 函数 为什么      更新时间:2023-10-16

例如,如果我想清除颜色缓冲区,我必须调用:

glClearBufferfv(GL_COLOR, 0, color); //color is a float array of 4 numbers

但是OpenGL也提供

glClearBufferiv(); //expects an int array
glClearBufferuiv(); //expects an unsigned int array

那么OpenGL为什么不使用模板呢?像这样:

glClearBuffer<float>(...)
因为OpenGL实际上是一个C库,而不是C++。您之所以可以在C++中使用它,是因为C++中的一个主要设计考虑因素是它能够使用C代码,但不可避免的是,您使用的C API不会有好的C++接口。