我正在尝试构建一个纹理打包器,其中可以将多个(可能是NPOT(纹理打包成一个兆Power Of Two Texture可获得更好的性能和更好的min/mag过滤。
在OpenGL ES 2.0中,是否可以将GLTexture
传递给tex(Sub)Image2D
调用?查看文档,我看到最后一个参数是data
:
指定指向内存中图像数据的指针。
我的情况是,我有一个最小的OpenGL ES 2.0抽象,它允许我创建具有不同字体、大小、样式等的文本纹理。我无法访问CPU上的像素内容或任何代表它的canvas
元素,只能访问生成的GLTexture
。
假设我可以创建包含文本的动态GLTexture
(想想字幕、UI元素等(,但无法访问CPU上的图像数据,我如何将纹理本身打包成更大的";mega";纹理
我知道我可以通过在表示巨型纹理的帧缓冲区中将我想要打包的较小纹理渲染为四边形来实现,但这需要渲染为浮点纹理,而不是所有硬件都支持浮点纹理。
脑海中浮现的另一件事是通过readPixels
将纹理内容读取到CPU内存中,但这是同步的,听起来很讨厌…
TLDR:我有一堆较小的GLTexture
s。我希望能够将它们打包到较大的GLTexture
上,到处共享,并在不同的偏移量进行采样,以获得更好的性能。
是否可以在OpenGL ES 2.0中将GLTexture传递给tex(Sub(Image2D调用?
否。
如果不能在软件中进行,另一种选择是在GPU上进行渲染到纹理操作。