在使用OpenGL ES进行图形图像开发时,我们常使用GL_TEXTURE_2D
纹理类型,它提供了对标准2D图像的处理能力。这种纹理类型适用于大多数场景,可以用于展示静态贴图、渲染2D图形和进行图像处理等操作
。
另外,有时我们需要从Camera
或外部视频源
读取数据帧并进行处理。这时,我们会使用GL_TEXTURE_EXTERNAL_OES
纹理类型。其专门用于对外部图像或实时视频流进行处理
,可以直接从 BufferQueue 中接收的数据渲染纹理多边形
,从而提供更高效的视频处理和渲染性能
。
在实际应用中,我们通常将GL_TEXTURE_2D
和GL_TEXTURE_EXTERNAL_OES
这两种纹理类型分开使用,并且它们互不干扰。实际上,这种情况占据了80%的使用场景。我们可以根据具体需求选择合适的纹理类型进行处理和渲染。当然,有时候我们也会遇到一些特殊情况,需要将GL_TEXTURE_EXTERNAL_OES
纹理转化为GL_TEXTURE_2D
纹理进行视频处理或计算。这种情况可能出现在需要对视频数据进行特殊的图像处理或者与GL_TEXTURE_2D
纹理类型的其他渲染操作进行交互时(当然,这就是另一个问题,