1

glu Quadric(gluSphere)をテクスチャリングすることができません。テクスチャの代わりに取得するのは、テクスチャの平均的な色です。

gl.glEnable(GL.GL_DEPTH_TEST);
gl.glEnable(GL.GL_BLEND);
gl.glEnable(GL.GL_TEXTURE_GEN_S); 
gl.glEnable(GL.GL_TEXTURE_GEN_T); 

sunTexture = TextureIO.newTexture(new File("sun.jpg"),false);

float[] rgba = {1f, 1f, 1f};
gl.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT, rgba, 0);
gl.glMaterialfv(GL.GL_FRONT, GL.GL_SPECULAR, rgba, 0);
gl.glMaterialf(GL.GL_FRONT, GL.GL_SHININESS, 0.5f);

sunTexture.enable();
sunTexture.bind();
    GLUquadric sun = glu.gluNewQuadric();
    glu.gluQuadricTexture(sun, true);
    glu.gluSphere(sun, 5, DETAIL, DETAIL);
sunTexture.disable();
4

2 に答える 2

0

GLUはテクスチャ座標を自ら生成してglTexCoordとして送信するので、texcoord生成(GL_TEXTURE_GEN_S/T)を有効にする必要はないと思います。GLU で生成された texCoords は、texgen のもので上書きされると思います。

また、RGBA (4 つの float) を想定する glMaterial に 3 つの float の配列を送信していることもわかります。しかし、私は C++ で作業しているので、間違っている可能性があります。これは JoGL で機能します。

于 2011-05-07T16:57:35.850 に答える
0

問題が見つかりました: gl.glFrustum(-20, 20, -20, 20, 0.1, 400); を設定しました。

gl.glFrustum(-20, 20, -20, 20, 1, 400); を設定した後。

それは大丈夫です。

于 2011-05-09T12:57:00.960 に答える