2

アプリケーションのユーザーが、選択した画像を読み込んで背景を作成できるようにしようとしています。Java 経由で画像をロードするのは問題ありませんが、画像をテクスチャに入れることができません....GLCanvas に大きな灰色のボックスが表示されます。これは私がこれまでに持っているコードです:

  //if there's an image to overlay, render it
    if (renderImage) {

        gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);

        if (texture == null && img != null) {

            texture = TextureIO.newTexture(img, true);
            texture.enable();
            texture.bind();
        }

        gl.glBegin(GL.GL_POLYGON);
        gl.glNormal3f(0,0,1);
            gl.glTexCoord2d(-texture.getWidth(), -texture.getHeight());
            gl.glVertex2d(-25, -25);
            gl.glTexCoord2d(-texture.getWidth(), texture.getHeight());
            gl.glVertex2d(canvas.getWidth(),0);
            gl.glTexCoord2d(texture.getWidth(), texture.getHeight());
            gl.glVertex2d(canvas.getWidth(), canvas.getHeight());
            gl.glTexCoord2d(texture.getWidth(), -texture.getHeight());
            gl.glVertex2d(0, canvas.getHeight());
        gl.glEnd();
        gl.glFlush();
    }
    //otherwise, render "grass"
    else {

        gl.glClearColor(0.0f, 0.65f, 0.0f, 0.0f);

        //Clear buffer and set background color to green (the "grass" on the sides of the intersection)
        gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
    }
4

2 に答える 2

4

これを試して:

gl.glBegin(GL.GL_QUADS);
gl.glNormal3f(0,0,1);
gl.glTexCoord2d(0.0, 0.0);
gl.glVertex2d(0.0, 0.0);
gl.glTexCoord2d(1.0, 0.0);
gl.glVertex2d(canvas.getWidth(), 0.0);
gl.glTexCoord2d(1.0, 1.0);
gl.glVertex2d(canvas.getWidth(), canvas.getHeight());
gl.glTexCoord2d(0.0, 1.0);
gl.glVertex2d(0.0, canvas.getHeight());
gl.glEnd();

非繰り返しテクスチャ座標は、デフォルトで 0.0 から 1.0 の範囲です。

于 2012-06-19T15:58:41.760 に答える
1

置いた

  if (texture == null && img != null) {

        texture = TextureIO.newTexture(img, true);
        texture.enable();
        texture.bind();
    }

try, catch ステートメントで。

于 2013-11-29T17:29:41.283 に答える