答案 0 :(得分:1)
看看这个函数调用(免责声明:未经测试 - 我没有使用过LWJGL,但概念应该相同):
GL11.glMatrixMode(GL11.GL_TEXTURE);
GL11.glRotate(90, 0, 0, 1); // (1) Here you transform texture space
GL11.glMatrixMode(GL11.GL_MODELVIEW);
// and so on
基本上,您需要在对象上旋转纹理。这就是你做的方式 - 转换纹理投影矩阵。线(1)沿Z轴(垂直于纹理平面)旋转纹理90度。这是Z轴,因为最后一个参数是1.最后三个参数分别表示X,Y和Z(如果你有兴趣,我将留下整个解释)。
你能做的最好的事情就是掌握所有基本的东西(投影,纹理空间,法线向量,三角剖分,连续性,粒子系统等等)是下载3d包的一些试用版并玩它。我只是在玩3D Studio Max时学到了很多东西(试用版可用,免费更多)。如果你有空闲时间并愿意学习新东西,我强烈建议你去研究一下。最后,如果你真的对3D图形感兴趣,你最终会以任何方式使用它 - 无论是3D包还是游戏引擎级编辑器。
编辑:经过更多的阅读后,我认出了自己的代码......基本上你只能交换一些坐标来沿对角线对称地反射。您最终可能会颠倒过来,但也可以通过额外调整(或转换视图轴)来修复。这是我未经测试的猜测:
// tweaked to get pole right
s1 = ((double) j) / longs;
s2 = ((double) j + 1) / longs;
t = ((double) i) / halfLats;
如果不正确,请尝试使用s2交换s1。