GL_TEXTURE_2D和GL_TEXTURE_EXTERNAL_OES有什么区别

时间:2018-12-20 08:38:06

标签: android opengl-es

我是android开发中的OpenGL ES的新手。我在学习期间发现了两种类型的纹理:

  1. GL_TEXTURE_2D
  2. GL_TEXTURE_EXTERNAL_OES

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

我有两个问题:

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

1 个答案:

答案 0 :(得分:5)

  

它们之间有什么区别?

普通纹理完全由图形驱动程序定义,分配和管理。

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

  

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

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