0

作成しているゲームのメニューに単純な背景テクスチャを読み込もうとしていますが、テクスチャが正しく表示されません。

たとえば、次のテクスチャを使用する場合:http ://s15.postimage.org/mqvuhq463/Super_Mario_Galazy_Background.png背景全体が青色で、このテクスチャを使用する場合:http ://www.highresolutiontextures.com/wp-content/ uploads / 2010/11/food-textures-01-bowtie-pasta-texture.jpg背景全体がオレンジ色になっています。

これは私が書いたコードです:

public class Menu extends Painter
{
    public Menu(GLCanvas canvas, Animator animator, GameWindow window)
    {
        super(canvas, animator, window);
    }
    @Override
    public void display(GLAutoDrawable drawable) 
    {
        GL gl = drawable.getGL();

        drawBackground(gl);

        gl.glFlush();
    }
    private void drawBackground(GL gl)
    {
        Texture background = textureLoader.getTexture("background");

        background.enable();
        background.bind();

        gl.glBegin(GL.GL_QUADS);
        gl.glVertex2f(0f, 0f);
        gl.glVertex2f(0f, window.getHeight());
        gl.glVertex2f(window.getWidth(), window.getHeight());
        gl.glVertex2f(window.getWidth(), 0);
        gl.glEnd();

        background.disable();
    }
    @Override
    public void init(GLAutoDrawable drawable) 
    {
        GL gl = drawable.getGL();
        textureLoader = new TextureLoader("menu textures/", gl);

        gl.glMatrixMode(GL.GL_PROJECTION);
        gl.glLoadIdentity();
        // set ortho to the size of the background
        gl.glOrtho(0, 800, 800, 0, -1, 1);

        gl.glMatrixMode(GL.GL_MODELVIEW_MATRIX);
        gl.glClearColor(0f, 0f, 0f, 0f);  
        gl.glClear(GL.GL_COLOR_BUFFER_BIT);
    }
}

私はこれがどのように可能であるかについて少しも手がかりを持っていないので、どんな助けも大いにありがたいです。

4

1 に答える 1

1

テクスチャ座標を指定しません。テクスチャ座標がない場合、すべての頂点はデフォルトのテクスチャ座標である(0,0,0,0)を受け取ります。これは、左下隅です。テクスチャ画像を見ると、表示されている色は、各画像の左下のピクセルの色です。

解決策:テクスチャ座標を指定します。テクスチャ座標は[0; 1]。

于 2013-01-16T15:02:36.433 に答える