java - 从 ARGB BufferedImage 获取 RGBA 像素?

标签 java opengl lwjgl bufferedimage

有没有一种简单的方法可以从 argb BufferedImage 获取 rgba int[] ?我需要将其转换为 opengl,但我不想自己遍历像素数组并进行转换。

最佳答案

OpenGL 1.2+ 支持 GL_BGRA 像素格式和反向压缩像素。

表面上 BGRA 听起来不像你想要的,但让我解释一下。

诸如 glTexImage2D (...) 之类的调用执行所谓的像素传输,其中涉及打包和解包图像数据。在像素传输的过程中,可能会进行数据转换,可能会遵循特殊的对齐规则等。数据转换步骤是我们这里特别感兴趣的;除了明显的 RGBA 组件顺序之外,您还可以在许多不同的布局中传输像素。

如果您反转字节顺序(例如数据类型 = GL_UNSIGNED_INT_8_8_8_8_REV)以及 GL_BGRA 格式,您将有效地传输 ARGB 像素,而无需您的任何实际努力。

glTexImage2D (...) 调用示例:

glTexImage2D (..., GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, image);

_REV 打包数据类型的常见用例是处理不同处理器之间的字节序差异,但当您想要反转图像中组件的顺序时,它也会派上用场(因为有没有诸如GL_ARGB之类的东西)。

不要将内容转换为 OpenGL - 它完全能够自行完成此操作。

关于java - 从 ARGB BufferedImage 获取 RGBA 像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28117536/

相关文章:

java - 如何使用 Appium Java 在 Android 5.0 上自动化时间选择器

user-interface - 仅调整纹理的一部分,OpenGL

opengl - GLSL 在程序之间共享制服 #130

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

java - Android 动态壁纸视差滚动效果

java - SCJP 6 和 OCJP 都一样吗?

java - LWJGL:在 opengl 3+ 中返回 Matrix4f 的 gluLookAt?

java - lwjgl 3 macOS 创建窗口时出现问题

java - 如何获取引发自定义异常的类的名称

java - OpenGL - 特定深度的像素颜色