我一直在使用纹理映射的NeHe教程(Lesson06)之一,并试图修改代码以允许已经创建的3D立方体上的不同图像。查看代码后,这是代码实际使用图像文件的唯一地方:
TextureReader.Texture image = null;
try {
image = TextureReader.readTexture("nehe/dice1.png");
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
我要问的是,如何加载6个不同的图像而不是1个来覆盖整个立方体?我想做一个" die"我有1到6的图像。如果您需要查看完整代码,可以在以下位置找到:http://www.java-tips.org/other-api-tips/jogl/texture-mapping-nehe-tutorial-jogl-port.html
答案 0 :(得分:1)
在绘制每个面之前,您必须创建6个单独的纹理ID并绑定到特定的纹理ID。实际创建纹理ID的调用位于:
texture = genTexture(gl);
然后调用之后的所有内容实际上都会设置纹理。
您可以更轻松地加载包含展开骰子的单个纹理,或者只是简单地包含一行中1到6的面。然后,只需指定正确的纹理坐标即可为每个面选择正确的纹理部分。
而不是面部的纹理标记从(0,0)
到(1,1)
,它们可以从((num-1.0)/6.0, 0)
转到(num/6.0, 1)
,其中num
是双倍的在这种情况下,您可以水平排列图像。