java - 在JOGL2中绘制图像

标签 java opengl jogl

我想画一张图像,但无论我做什么,它似乎都不起作用。 我用于渲染的代码:

BufferedImage bi = null;
int w = 0;
int h = 0;
try {
    bi = ImageIO.read(new File("win.png"));
    w = bi.getWidth();
    h = bi.getHeight();
} catch (Exception e) {
    System.out.println(e.getMessage());
}

final GL2 gl = gLDrawable.getGL().getGL2();

        WritableRaster raster = 
            Raster.createInterleavedRaster (DataBuffer.TYPE_BYTE,
                    w,
                    h,
                    4,
                    null);
        ComponentColorModel colorModel=
            new ComponentColorModel (ColorSpace.getInstance(ColorSpace.CS_sRGB),
                    new int[] {8,8,8,8},
                    true,
                    false,
                    ComponentColorModel.TRANSLUCENT,
                    DataBuffer.TYPE_BYTE);
        BufferedImage dukeImg = 
            new BufferedImage (colorModel,
                    raster,
                    false,
                    null);

        Graphics2D g = dukeImg.createGraphics();
        g.drawImage(bi, null, null);
        DataBufferByte dukeBuf =
            (DataBufferByte)raster.getDataBuffer();
        byte[] dukeRGBA = dukeBuf.getData();
        ByteBuffer bb = ByteBuffer.wrap(dukeRGBA);

        bb.position(0);
        bb.mark();
    gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_LINEAR);
        gl.glTexParameteri(GL2.GL_TEXTURE_2D, GL2.GL_TEXTURE_MIN_FILTER, GL2.GL_LINEAR);

    gl.glEnable(GL2.GL_TEXTURE_2D);
    gl.glTexEnvf(GL2.GL_TEXTURE_ENV, GL2.GL_TEXTURE_ENV_MODE, GL2.GL_DECAL);
        gl.glBindTexture(GL2.GL_TEXTURE_2D, 13);
        gl.glPixelStorei(GL2.GL_UNPACK_ALIGNMENT, 1);



        gl.glTexImage2D (GL2.GL_TEXTURE_2D, 0, GL2.GL_RGBA, w, h, 0, GL2.GL_RGBA, 
                GL2.GL_UNSIGNED_BYTE, bb);

        int left = 100;
        int top = 100;

    gl.glBegin(GL2.GL_QUADS); 
        gl.glTexCoord2d (0, 0);
        gl.glVertex3f  (left,top, 0);
        gl.glTexCoord2d(1,0);
        gl.glVertex3f  (left + w, top, 0);
        gl.glTexCoord2d(1,1);
        gl.glVertex3f  (left + w, top + h, 0);
        gl.glTexCoord2d(0,1);
        gl.glVertex3f  (left, top + h, 0);
        gl.glEnd ();    
        gl.glFlush();

最佳答案

关于java - 在JOGL2中绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10296685/

相关文章:

c++ - 通过复制将 opengl 对象包装到 C++ 类中

OpenGL多个Sampler2D(数组)示例?

java - 如何在java swing中添加jogl面板

java - 是否可以免费签署 Java 小程序?

java - Apache Spark : Detect buying intent in a sentence

java - 读取 tar.gz 存档中 CSV 文件的内容

java - 使用用户定义的对象作为值从 HashMap 中添加特定值

opengl - 在 OpenGL 中,仅使用 OpenGL3+ 方法创建透视图的最简单方法是什么?

eclipse - JOGL 库无法加载库,但它们位于引用的库文件夹中

带有 JOGL 和/或 LWJGL 的 Java 小程序 - 具有适用于每个操作系统的 native