1

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

GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture.getTextureID());我通过在之前添加这个来设置纹理GL11.glBegin(GL11.GL_TRIANGLES);

我尝试通过GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture.getTextureID());在设置金字塔顶点坐标的每 3 行之后添加来绑定纹理,但GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture.getTextureID());如果它介于GL11.glBegin(GL11.GL_TRIANGLES);GL11.glEnd();

编辑

我分别画了每一面墙,它起作用了,但我不喜欢那样……这对我来说看起来很棘手……这是做我想做的事的好方法吗?

4

2 回答 2

1

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

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

于 2012-05-19T16:49:26.220 回答
1

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

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

于 2012-05-19T16:52:26.313 回答