0

我将使用哪些参数特别是 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);
4

1 回答 1

0

您无法使用单个矩形纹理对球体进行纹理映射,而不会在某些地方造成严重的失真。这在数学上是不可能的。话虽如此,您也不应该glTexGen为此使用该功能,因为 a) 它已被弃用,并且 b) 仅创建线性平面映射,而对于球体纹理,您需要曲线坐标。使用顶点着色器从顶点位置生成纹理坐标。

于 2012-11-05T23:25:31.397 回答