0

我一直在使用纹理映射完成 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 个来覆盖整个立方体?我正在尝试制作一个“死”我有 1 到 6 的图像。如果您需要查看完整的代码,您可以在以下位置找到它:http ://www.java-tips.org/other-api-tips /jogl/texture-mapping-nehe-tutorial-jogl-port.html

4

1 回答 1

1

在绘制每个面之前,您必须创建 6 个单独的纹理 ID 并绑定到特定的纹理 ID。实际创建纹理 ID 的调用在这里:

texture = genTexture(gl);

然后,该调用之后的所有内容实际上都设置了纹理。

您可以更轻松地加载包含展开的骰子的单个纹理,或者仅在一行中包含 1 到 6 的面。然后只需指定正确的纹理坐标即可为每个面选择正确的纹理部分。

而不是一张脸的纹理坐标从(0,0)(1,1),它们可以从((num-1.0)/6.0, 0)到1 到 6(num/6.0, 1)之间num的双精度数。在这种情况下,您可以将图像水平排列。

于 2012-11-07T04:06:29.820 回答