我一直在研究其中一个带有纹理贴图的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

最佳答案

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

texture = genTexture(gl);


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

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

而不是将脸部的纹理坐标从(0,0)变为(1,1),它们可以从((num-1.0)/6.0, 0)变为(num/6.0, 1),其中num是1到6之间的两倍。在这种情况下,您将图像排列水平向上。

关于java - JOGL NeHe教程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13262931/

10-13 09:00