JOGL纹理问题

时间:2011-10-03 03:16:09

标签: opengl 3d textures jogl bufferedimage

我正在尝试学习JOGL绑定。这些教程似乎已经过时,所以我总是试图将每个教程的有效内容拼凑起来。

我在尝试将简单纹理应用于方形平面时遇到问题。

我的图像是204 X 204,名为box.png。

在我的init()中,我执行以下操作来加载纹理:

        try {
            InputStream stream = getClass().getResourceAsStream("box.png");
            TextureData data = TextureIO.newTextureData(gl.getGLProfile(),
                stream, 100, 200, false, "png");
            boxTexture = TextureIO.newTexture(data);
        } catch (IOException exc) {
            exc.printStackTrace();
            System.exit(1);
        }

然后我尝试应用我的纹理在我的display()中执行以下操作:

        gl.glEnable(GL.GL_TEXTURE_2D);

        boxTexture.enable(gl);
        boxTexture.bind(gl);

        gl.glBegin(GL2.GL_QUADS);
        // Front Face
        gl.glTexCoord2f(0.0f, 0.0f);
        gl.glVertex3f(-1.0f, -1.0f, 1.0f); // Bottom Left Of The Texture and Quad
        gl.glTexCoord2f(1.0f, 0.0f);
        gl.glVertex3f(1.0f, -1.0f, 1.0f); // Bottom Right Of The Texture and Quad
        gl.glTexCoord2f(1.0f, 1.0f);
        gl.glVertex3f(1.0f, 1.0f, 1.0f); // Top Right Of The Texture and Quad
        gl.glTexCoord2f(0.0f, 1.0f);
        gl.glVertex3f(-1.0f, 1.0f, 1.0f);

        gl.glEnd();

是否有任何明显的问题可以解释我失败的原因?

1 个答案:

答案 0 :(得分:2)

我唯一能想到的是纹理不是2的力量。将纹理的大小更改为256x256然后查看它是否有效。根据您的显卡,它将支持或不支持(如果卡不是古代的话应该支持)。