在OpenGL ES 2.0中,我想使用16位配置以及32位配置,并在相同的上下文中根据需要在它们之间切换。这可能吗?
答案 0 :(得分:1)
如果您的OpenGL ES实现使用EGL进行窗口系统集成,例如Android的情况就是如此,答案是 NO 。
eglCreateContext()
(documentation)的签名如下:
EGLContext eglCreateContext(EGLDisplay display,
EGLConfig config,
EGLContext share_context,
EGLint const* attrib_list);
因此,在创建过程中指定了上下文的配置,以后不能修改。
请注意,配置也被指定为创建曲面的部分。例如,请参阅eglCreateWindowSurface()
(documentation),其中也使用EGLConfig
作为参数之一。因此,就像你不能在相同的上下文中使用多个配置一样,你也不能使用具有相同表面的多个配置。
因此,如果你想使用多个配置,你需要多个上下文,以及多个表面/窗口。
在单个上下文中渲染具有不同颜色格式的目标的唯一方法是使用帧缓冲对象(FBO)。 FBO附件可以具有与默认帧缓冲区格式不同的颜色格式,所有这些都在一个上下文中。