1

OpenGL は私にとって非常に紛らわしく、多くのチュートリアルで非常に蔓延している多くのグラフィック用語などに慣れていません。三角形、円、四角形、多角形などの描画方法は理解していますが、テクスチャの仕組みを理解しようとしています。

誰かがテクスチャを理解するための正しい方向に私を向けることができますか?

Netbeans でしか JOGL を動作させることができなかったので、「Tiki Mask」という名前のイメージをビルド パスに入れてみました。これを実行したとき、例外がスローされなかったので、画像ファイルが見つかったと思いますか?

gl.glGenTextures(1, glu, 0);
    gl.glBindTexture(gl.GL_TEXTURE_2D, glu[1]);



    try {

        Texture tex = TextureIO.newTexture(new File("tikimask.jpg"), true);
         gl.glBegin(GL.GL_POLYGON);
    gl.glNormal3f(0,0,1);
        gl.glTexCoord2d(-tex.getWidth(), -tex.getHeight());
        gl.glVertex2d(-25, -25);
        gl.glTexCoord2d(-tex.getWidth(), tex.getHeight());
        gl.glVertex2d(1.0f,0);
        gl.glTexCoord2d(tex.getWidth(), tex.getHeight());
        gl.glVertex2d(.05f, .05f);
        gl.glTexCoord2d(tex.getWidth(), -tex.getHeight());
        gl.glVertex2d(0, .05f);
    gl.glEnd();
    gl.glFlush();



    } catch (IOException ex) {
        Logger.getLogger(SimpleJOGLwee.class.getName()).log(Level.SEVERE, null, ex);
    } catch (GLException ex) {
        Logger.getLogger(SimpleJOGLwee.class.getName()).log(Level.SEVERE, null, ex);
    }
4

1 に答える 1

0

あなたの問題は、ロードしたテクスチャをバインドしていないことです。次の行を追加してみてください。

tex.enable();
tex.bind();

テクスチャを読み込んだ後。

また、描画関数ではなく init 関数にテクスチャをロードし、描画関数でそれらを有効にしてバインドすることをお勧めします。

于 2013-03-17T17:47:05.947 に答える