我正在使用 OpenGL 和 JOGL 处理帧缓冲区。我有一个 Graphics 对象,我在其中进行绘制。
每次图形更改时,我都会将 R、G、B 和 A 信息提取为每个像素的字节,并以 ARGB 顺序将其写入 ByteBuffer。我检查了转换,没关系。
如果我使用 GL_RGB 模式调用 drawPixels 方法,它会在给定坐标处绘制框,无论我的图形中有什么颜色,它都会被绘制为黑色。如果我使用 GL_RGBA 模式,它不会绘制任何内容。
所以我的帧缓冲区操作代码,ib1 是带有图像数据的字节缓冲区:
GL gl=canvas.getGL();
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrtho (0, canvas.getWidth(), canvas.getHeight(),0, -1.0, 1.0);
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glDisable(GL.GL_DEPTH_TEST);
gl.glColor3f(1, 1, 1);
//
gl.glRasterPos2i(0, height);
//gl.glDrawPixels(width, height, GL.GL_RGB, GL.GL_BYTE, ib1);
gl.glDrawPixels(width, height, GL.GL_RGBA, GL.GL_BYTE, ib1);
在此先感谢您的帮助