如何在OpenGL中将两个不同的图像渲染为两个不同的图元? 2D纹理数组?

时间:2015-04-12 05:24:05

标签: c++ opengl graphics textures texturing

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

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

我已经对2D纹理阵列做了相当多的阅读,看起来这将是我想去的方式,因为我可以在一个纹理单元中存储多个纹理,但我不确定这是否可能考虑到什么我上面提到过。如果图像都是不同的维度,那么我不认为我能做到这一点(至少我不这么认为)。我知道我可以将每个图像存储到单独的纹理单元中,但是在数组中执行它似乎是更清晰的方法。

最好的方法是什么?你能不能将不同尺寸的图像存储到2d纹理数组中?如果是这样怎么样?或者我最好只将它们存储在不同的纹理单元上?

1 个答案:

答案 0 :(得分:0)

纹理数组主要用于绘制单个图元(或整个网格),着色器可以在图像之间进行选择而不会耗尽可用纹理采样单元的数量。你可以按照你的想法使用它们,但我怀疑它会对你有益。另一种方法(与纹理数组类似)是使用纹理图集,即创建构成单个纹理的图像拼凑,并使用适当的纹理坐标来选择子图像。

在你的情况下,我建议只需将每张图片加载到一个单独的纹理中,然后在绘制立方体之前绑定适当的纹理。