GL_TEXTURE_2D和GL_TEXTURE_EXTERNAL_OES之间有什么区别?

Jia*_*Guo 2 android opengl-es

我是Android开发中的OpenGL ES的新手.我在研究期间发现了两种类型的纹理:

  1. GL_TEXTURE_2D
  2. GL_TEXTURE_EXTERNAL_OES

有人告诉我,他们彼此不兼容.

我有两个问题:

  1. 他们之间有什么区别?它们是完全不同类型的纹理吗?
  2. 是否GL_TEXTURE_EXTERNAL_OES质地必须是YUV格式?如果没有,是什么决定数据格式?

sol*_*xel 5

他们之间有什么区别?

正常纹理完全由图形驱动程序定义,分配和管理.

外部纹理在其他地方定义和分配,并以某种实现定义的方式导入到图形驱动程序中.一个常见的用途是导入YUV视频,因此外部采样器也必须能够处理颜色空间转换和非标准存储器布局(例如,多平面YUV表面).

GL_TEXTURE_EXTERNAL_OES纹理是否必须是YUV格式?

否.系统中的某些外部实体定义了格式 - 它对应用程序是不可见的,并且颜色空间转换由驱动程序堆栈神奇地处理.确切支持哪些格式是实现定义的.