glReadPixels 在 OpenGL/LWJGL 中如何工作?

How is glReadPixels work in OpenGL/LWJGL?

我正在尝试为 java/LWJGL/OpenGL 中的游戏制作二维碰撞检测系统。

我的问题是 glReadPixels() 表现得很奇怪,我不知道我做错了什么。

问题通常是它返回像素的完美 rgba 代码,但有时它返回负数或屏幕上没有的颜色。 (对于 alpha,我总是得到 -1)

什么会导致这个问题?

我的代码:

    int size = 10;

    ByteBuffer pixels = BufferUtils.createByteBuffer(width * height * 4);

    glReadPixels(100, 500, size, size, GL_RGBA, GL_UNSIGNED_BYTE, pixels);

我在想也许我使用了错误的参数? ( GL_RGBA, GL_UNSIGNED_BYTE)

我应该使用什么?

如果有人遇到同样的问题,添加这一行对我有帮助:

int red = (pixels.get(0) & 0xFF);

它去掉了我不需要的部分,现在我每次都能得到准确的颜色。