在 OpenGL ES 2.0 中将 GLTexture 作为输入传递给 texImage2D

Passing a GLTexture as an input to texImage2D in OpenGL ES 2.0

我正在尝试构建一个纹理打包器,其中可以将多个(可能是 NPOT)纹理打包到一个 mega 中 二次幂纹理以获得更好的性能和更好的最小/放大过滤。

是否可以将 GLTexture 传递给 OpenGL ES 2.0 中的 tex(Sub)Image2D 调用?查看 docs,我看到最后一个参数是 data:

Specifies a pointer to the image data in memory.

我的情况是我有一个最小的 OpenGL ES 2.0 抽象,它允许我创建具有不同字体、大小、样式等的文本纹理。我无法访问 [=35= 上的像素内容] 或代表它的任何 canvas 元素,只是生成的 GLTexture.

假设我可以创建包含文本(想想字幕、UI 元素等)的动态 GLTexture,但无法访问 CPU 上的图像数据,我怎样才能将纹理本身打包成更大的“巨型”纹理?

我知道我可以通过在代表大型纹理的帧缓冲区中渲染我想要打包到四边形的较小纹理来做到这一点,但这将需要渲染到浮点纹理,并非所有硬件都支持。

想到的另一件事是通过 readPixels 将纹理内容读入 CPU 内存,但这是同步的,对我来说听起来很讨厌...

TLDR:我有一堆较小的 GLTextures。我希望能够将它们打包到更大的 GLTexture 中,随处共享并以不同的偏移量进行采样以获得更好的性能。

Is it possible to pass a GLTexture to a tex(Sub)Image2D call in OpenGL ES 2.0?

没有

如果您不能在软件中执行此操作,另一种选择是在 GPU 上执行 render-to-texture 操作。