例如,我正在使用GL_LUMINANCE_ALPHA将两个组件数据传输到纹理。 有人告诉我,一些内部格式常量如GL_LUMINACE_ALPHA在OpenGL 3.0(可能是4.0?)或更高版本中已被弃用,因此请使用GL_RG或GL_RG8等。
但是,我的目标OpenGL版本是2.0或更高版本,OpenGL 2.0的规范不包含GL_RG / GL_RG8。 在这种情况下,我认为有三种可能性:
我应该选择什么? 我不想采取3.除非我不得不因为它使事情变得更加困难和复杂。
答案 0 :(得分:3)
不,使用OpenGL令牌是不安全的,驱动程序一无所知。幸运的是,绝大多数API调用只会引发GL_INVALID_ENUM
错误,操作会在它有机会真正搞砸之前提前失败。
解决GL_LUMINANCE_ALPHA
两难问题远不只是简单地交换令牌GL_RG8
。您需要在着色器中使用纹理调色或调色才能使纹理的颜色为(R,R,R,G)。
确定您早期定位的OpenGL版本,或编写单独的代码路径。但它永远不会像在运行时切换枚举值那么简单。