【发布时间】:2011-06-18 05:53:06
【问题描述】:
我正在使用 OpenGL 和 JOGL 处理帧缓冲区。我有一个 Graphics 对象,我在其中进行绘制。
每次图形更改时,我都会将 R、G、B 和 A 信息提取为每个像素的字节,并以 A R G B 顺序将其写入 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);
提前感谢您的帮助
【问题讨论】:
-
ib1 是一个字节缓冲区,它包装了一个字节数组,我将图像的 RGBA 值复制到该数组中
-
其实我找到了答案,它是Java vs OpenGL的字节格式......我稍后会发布问题/解决方案......
标签: java opengl jogl framebuffer