【问题标题】:How is glReadPixels work in OpenGL/LWJGL?glReadPixels 如何在 OpenGL/LWJGL 中工作?
【发布时间】:2017-12-31 16:33:28
【问题描述】:

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

我的问题是 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)

我应该使用什么?

【问题讨论】:

  • 您查询 unsigned 字节。如果您看到 -1,那么您看到的不是无符号字节(不能是 -1),而是某种有符号表示。
  • 也许"Saving the Screen Image" 部分有帮助。
  • 哦,谢谢,这是我没有使用 (& 0xFF) 来摆脱我不需要的部分的问题,谢谢

标签: java opengl 2d lwjgl


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多