我已将纹理加载到内存中,我想通过一次绘制调用对其进行绘制。我可以将所有纹理坐标放入缓冲区,但是如何从小的纹理部分创建一个纹理?那有可能吗?
还是我必须下载图像并将其组合,然后从组合的大图片中创建textrute?
答案 0 :(得分:1)
通常,您可以将图像合并到texture atlas中,例如在图像编辑程序中手动或使用custom或specialized tools进行离线操作。这是最常见和推荐的方法。
如果由于某种原因必须在运行时执行此操作,那么将图像组合为单个纹理的最简单方法是首先加载所有图像,然后使用canvas 2D api到draw them into a 2D canvas,然后使用该canvas作为WebGL中texImage2D
的来源。使用2D画布的唯一问题是是否需要除图像之外的数据,因为2D画布仅支持预乘alpha。
否则,在WebGL中只是将较小的纹理渲染为较大的纹理即可。渲染到纹理需要先创建纹理,然后将其附加到帧缓冲区,然后再像进行其他任何操作一样进行渲染。参见this渲染纹理,this渲染图像的任何部分到画布或其他纹理的任何位置。