如果我通过阅读OES_EGL_image_external规范理解正确,对于
EGLImageTargetTexture2DOES
函数,可以使用TEXTURE_EXTERNAL_OES
目标,然后您需要通过着色器中的samplerExternalOES
采样器对EGL图像进行采样,或者,如果 GL 上下文支持 GL_OES_EGL_image 扩展,则还可以简单地使用常规 2D 纹理采样器和 TEXTURE_2D
目标。
假设我做对了,除了与 GL_OES_EGL_image 由于某种原因不可用的上下文兼容之外,还有什么理由使用
TEXTURE_EXTERNAL_OES
而不是 TEXTURE_2D
呢?是否有驱动程序支持 OES_EGL_image_external 而无需 GL_OES_EGL_image,或者仅使用常规采样器会出现问题?常规采样器似乎比仅针对从 EGL 图像导入的纹理使用特殊着色器版本方便得多。
常见的用例是从相机/视频解码器导入 YUV 视频表面。对于这些,您需要
TEXTURE_EXTERNAL_OES
绑定和匹配采样器; TEXTURE_2D
路径仅处理传统的RGBA数据格式。
TEXTURE_2D可以支持RGB888格式吗?