java如何在OpenGL中自动纹理映射球体?
特别是s和t的哪些参数将用于文本映射球体?我尝试过各种不同的选择,但不管我选择float[]s和t的值是什么,总有一小部分会扭曲。我可以做平面和圆柱体,但我不确定球体。任何帮助都将不胜感激
gl.glTexGeni(GL2.GL_T, GL2.GL_TEXTURE_GEN_MODE, GL2.GL_OBJECT_LINEAR);
float[] s = {1f, 0f, 0f, 0};
gl.glTexGenfv(GL2.GL_S, GL2.GL_OBJECT_PLANE, s, 0);
float[] t = {0f, 1f, 0f, 0};
gl.glTexGenfv(GL2.GL_T, GL2.GL_OBJECT_PLANE, s, 0);
# 1 楼答案
使用单个矩形纹理对球体进行纹理贴图时,不能在某个位置不产生严重变形。这在数学上是不可能的。这就是说,您也不应该为此使用
glTexGen
功能,因为a)它已被弃用,b)只创建线性平面映射,而对于球体纹理,您需要曲线坐标使用顶点着色器从顶点位置生成纹理坐标