LWJGL,openGL多纹理

时间:2012-05-19 15:06:13

标签: java opengl lwjgl

让我说我有一个金字塔......我知道如何绘制它,我知道如何为整个金字塔设置纹理,但我如何为每个墙设置不同的纹理?

我通过在GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture.getTextureID());

之前添加此GL11.glBegin(GL11.GL_TRIANGLES);来设置纹理

我尝试通过在设置金字塔的顶点坐标的每3行之后添加GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture.getTextureID());来绑定纹理,但GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture.getTextureID());GL11.glBegin(GL11.GL_TRIANGLES);和{{1}之间不会起作用}

修改

我分别画了每一面墙并且它有效,但我不喜欢那种方式......对我来说这看起来很棘手......这是一种做我想做的好方法吗?

2 个答案:

答案 0 :(得分:1)

我认为最好的方法就是你所做的,分别绘制它们。您通常希望每个“批次”都引用一种材料。

如果您真的想要,可以将四个纹理打包成一张纸,并让每个墙壁用独特的texcoords挑选出部分纹理,但这可能是不必要的复杂性,除非您的性能受到太多批次的影响。

答案 1 :(得分:1)

我认为GL中没有直接的方法。您可能希望将纹理组合成一个大图像,然后使用纹理坐标选择正确的子图像。

即使你让它适用于有限数量的纹理,例如通过切换纹理单元并在另一个上使用白色像素(或使用高级GLSL内容),它可能无法扩展到性能:http://origin-developer.nvidia.com/docs/IO/8230/BatchBatchBatch.pdf