让我说我有一个金字塔......我知道如何绘制它,我知道如何为整个金字塔设置纹理,但我如何为每个墙设置不同的纹理?
我通过在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}之间不会起作用}
修改
我分别画了每一面墙并且它有效,但我不喜欢那种方式......对我来说这看起来很棘手......这是一种做我想做的好方法吗?
答案 0 :(得分:1)
我认为最好的方法就是你所做的,分别绘制它们。您通常希望每个“批次”都引用一种材料。
如果您真的想要,可以将四个纹理打包成一张纸,并让每个墙壁用独特的texcoords挑选出部分纹理,但这可能是不必要的复杂性,除非您的性能受到太多批次的影响。
答案 1 :(得分:1)
我认为GL中没有直接的方法。您可能希望将纹理组合成一个大图像,然后使用纹理坐标选择正确的子图像。
即使你让它适用于有限数量的纹理,例如通过切换纹理单元并在另一个上使用白色像素(或使用高级GLSL内容),它可能无法扩展到性能:http://origin-developer.nvidia.com/docs/IO/8230/BatchBatchBatch.pdf