0

所以我有一个简单的 OpenGL 查看器,您可以在其中绘制用户想要的任意数量的框。Ive 还添加了获取 PNG 或 JPG 图像并将其纹理映射到图元的功能。

我希望能够让用户在屏幕上指定任何立方体并向它们应用不同的纹理。我对 OpenGL 相当陌生。现在我可以轻松地将图像映射到单个基元,但我想知道将 2 个单独的图像(可能是不同的大小)映射到 2 个单独的基元的最佳方法是什么。

我已经对 2D 纹理数组进行了大量阅读,这似乎是我想要的方式,因为我可以在一个纹理单元中存储多个纹理,但考虑到我上面提到的内容,我不确定这是否可能. 如果图像都是不同的尺寸,那么我认为我不能这样做(至少我不这么认为)。我知道我可以将每个图像存储到单独的纹理单元中,但是在数组中执行它似乎是更简洁的方式。

最好的方法是什么?您实际上可以将不同大小的图像存储到二维纹理数组中吗?如果是这样怎么办?还是我最好将它们存储在单独的纹理单元中?

4

1 回答 1

0

Texture arrays are mainly meant if you want to draw a single primitive (or a whole mesh) with the shader being able to select between images without exhausting the number of available texture sampling units. You can use them in the way you thought, but I doubt it will benefit you. Another approach (which is similiar to texture arrays) is using a texture atlas, i.e. creating a patchwork of images that constitutes a single texture and using appropriate texture coordinates to select the subimage.

In your case, I suggest simply load each picture into a separate texture and bind the appropriate texture before drawing the cube.

于 2015-04-12T11:17:01.103 回答