JOGL NeHe教程

时间:2012-11-07 03:56:08

标签: java jogl texture-mapping

我一直在使用纹理映射的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

1 个答案:

答案 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是双倍的在这种情况下,您可以水平排列图像。