1

私はアキューブを持っていて、すべての面にテクスチャーを付けることになっています。私はこれを netbeans プロジェクトで成功させましたが、最終的にはそれが日食で行われることを知りました。最初は大したことではないように思えました。しかし問題は、同じコードが Eclipse では機能しないということです。立方体は表示されていますが、テクスチャは適用されていません。コードはこちらです。

        public void init(GLAutoDrawable drawable) {
        GL2 gl = drawable.getGL().getGL2(); // Get the GL pipeline object this 
        // GLAutoDrawable uses

        gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set clear color to black
        gl.glClearDepth(1.0f); // Set the depth value to 1.0 (the maximum value),
        // when the depth buffer is cleared

        gl.glEnable(GL_DEPTH_TEST); //Enable depth test

        gl.glEnable(GL_LIGHT0);     
        gl.glEnable(GL_LIGHTING);           


        try {
            texImg = readImage("PWelshDragon.jpg");
        } catch (IOException ex) {
         //   Logger.getLogger(CG0T.class.getName()).log(Level.SEVERE, null, ex);
        }

             gl.glDisable(GL.GL_TEXTURE_2D);
             gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGB, texWidth ,texHeight, 0, GL.GL_RGB, GL.  GL_UNSIGNED_BYTE,  texImg);
        gl.glEnable(GL.GL_TEXTURE_2D);

    }

表示コードで。

public void display(GLAutoDrawable drawable) {
        GL2 gl = drawable.getGL().getGL2();

        gl.glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

        gl.glMatrixMode(GL_MODELVIEW);
        gl.glLoadIdentity();

        gl.glRotated(30, 1, 1, 1);

        gl.glBegin(GL_QUADS);
            gl.glNormal3f(1.0f, 0.0f, 0.0f);
            gl.glVertex3f(1.0f, 1.0f, 1.0f);gl.glTexCoord2d(0.0f, 0.0f);
            gl.glVertex3f(1.0f, -1.0f, 1.0f);gl.glTexCoord2d(1.0f, 0.0f);
            gl.glVertex3f(1.0f, -1.0f, -1.0f);gl.glTexCoord2d(1.0f, 1.0f);
            gl.glVertex3f(1.0f, 1.0f, -1.0f);gl.glTexCoord2d(0.0f, 1.0f);

            gl.glNormal3f(-1.0f, 0.0f, 0.0f);
            gl.glVertex3f(-1.0f, 1.0f, 1.0f);gl.glTexCoord2d(0.0f, 0.0f);
            gl.glVertex3f(-1.0f, 1.0f, -1.0f);gl.glTexCoord2d(1.0f, 0.0f);
            gl.glVertex3f(-1.0f, -1.0f, -1.0f);gl.glTexCoord2d(1.0f, 1.0f);
            gl.glVertex3f(-1.0f, -1.0f, 1.0f);gl.glTexCoord2d(0.0f, 1.0f);


            gl.glNormal3f(0.0f, 1.0f, 0.0f);
            gl.glVertex3f(1.0f, 1.0f, 1.0f);gl.glTexCoord2d(0.0f, 0.0f);
            gl.glVertex3f(1.0f, 1.0f, -1.0f);gl.glTexCoord2d(1.0f, 0.0f);
            gl.glVertex3f(-1.0f, 1.0f, -1.0f);gl.glTexCoord2d(1.0f, 1.0f);
            gl.glVertex3f(-1.0f, 1.0f, 1.0f);gl.glTexCoord2d(0.0f, 1.0f);

            gl.glNormal3f(0.0f, -1.0f, 0.0f);
            gl.glVertex3f(1.0f, -1.0f, 1.0f);gl.glTexCoord2d(0.0f, 0.0f);
            gl.glVertex3f(-1.0f, -1.0f, 1.0f);gl.glTexCoord2d(1.0f, 0.0f);
            gl.glVertex3f(-1.0f, -1.0f, -1.0f);gl.glTexCoord2d(1.0f, 1.0f);
            gl.glVertex3f(1.0f, -1.0f, -1.0f);gl.glTexCoord2d(0.0f, 1.0f);

            gl.glNormal3f(0.0f, 0.0f, 1.0f);
            gl.glVertex3f(1.0f, 1.0f, 1.0f);gl.glTexCoord2d(0.0f, 0.0f);
            gl.glVertex3f(-1.0f, 1.0f, 1.0f);gl.glTexCoord2d(1.0f, 0.0f);
            gl.glVertex3f(-1.0f, -1.0f, 1.0f);gl.glTexCoord2d(1.0f, 1.0f);
            gl.glVertex3f(1.0f, -1.0f, 1.0f);gl.glTexCoord2d(0.0f, 1.0f );


            gl.glNormal3f(0.0f, 0.0f, -1.0f);
            gl.glVertex3f(1.0f, 1.0f, -1.0f);gl.glTexCoord2d(0.0f, 0.0f);
            gl.glVertex3f(1.0f, -1.0f, -1.0f);gl.glTexCoord2d(1.0f, 0.0f);
            gl.glVertex3f(-1.0f, -1.0f, -1.0f);gl.glTexCoord2d(1.0f, 1.0f);
            gl.glVertex3f(-1.0f, 1.0f, -1.0f);gl.glTexCoord2d(0.0f, 1.0f);
        gl.glEnd();
    }

texImg で値を取得していますが、適用されない理由がわかりません。

4

2 に答える 2

1

表示関数の画像描画コードの前に次の行を追加することで問題を解決しました。(前gl.glBegin(GL_QUADS);)

gl.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_WRAP_S,GL2.GL_CLAMP);
gl.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_WRAP_T,GL2.GL_CLAMP);
gl.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_MAG_FILTER,GL.GL_NEAREST);
gl.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_MIN_FILTER,GL.GL_NEAREST);
gl.glTexEnvi(GL2.GL_TEXTURE_ENV,GL2.GL_TEXTURE_ENV_MODE,GL2.GL_MODULATE);
gl.glHint(GL2.GL_PERSPECTIVE_CORRECTION_HINT,GL2.GL_NICEST);

これらの行が何をするのか、私にはよくわかりません。ここで見た

于 2012-11-25T14:12:15.060 に答える
-1

Javaのopenglについては何も知りませんが、単に画像ファイル「PWelshDragon.jpg」が見つからないなどの理由でロードされていないのではないでしょうか?

コメント行を元に戻そうとしましたか

  Logger.getLogger(CG0T.class.getName()).log(Level.SEVERE, null, ex);

ここに問題がないかどうかを確認するためのキャッチで?

于 2012-11-24T15:19:48.267 に答える