当前位置: 首页 > 知识库问答 >
问题:

glReadPixels如何在OpenGL/LWJGL中工作?

濮金鑫
2023-03-14

我试图在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_无符号字节)

我应该用什么?

共有1个答案

狄安歌
2023-03-14

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

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

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

 类似资料:
  • 我刚刚开始学习LWJGL / OpenGL来创建3D游戏,所以我从小处着手,尝试制作一条线(2D)的简单显示。窗口加载正常,大小合适,但显示器上没有绘制任何内容。有一个空白屏幕,我似乎对代码所做的任何更改都不会影响在屏幕上绘制的内容。这可能是因为我对如何正确执行此操作缺乏了解,或者这可能是我的代码/计算机中的问题。我尝试在我的初始化代码中添加和删除各种东西,如glEnable(GL_TEXTURE

  • 我尝试使用openGL和lwjgl渲染2D动画。 我使用的图像是896x128像素,由7个单帧组成,每个帧的大小为128x128像素。 现在我尝试使用glTexCoord2f渲染此图像以获得正确的纹理部分,如https://github.com/mattdesl/lwjgl-basics/wiki/Textures#texture-atlases 我的代码如下所示: 有人知道哪里出了问题,如何正确

  • 假设我有一个金字塔…我知道如何绘制它,我知道如何为整个金字塔设置纹理,但如何为每面墙设置不同的纹理? 我通过在 我试图通过添加<code>GL11.glBindTexture(GL11.GL_TEXTURE_2D,TEXTURE.getTextureID())来绑定纹理 后,但

  • 下面的LWJGL代码将在屏幕中心呈现一个蓝色正方形。相反,我得到了一个空白的白色屏幕。就像渲染根本不工作,或者我在屏幕外渲染。 我是OpenGL和LWJGL的新手,所以我力不从心。我浏览了所有内容,但似乎找不到任何可能与代码有关的问题。 OpenGLTest.scala VertexArray.scala

  • 我正在尝试LWJGL库,但我有点困惑。当我尝试渲染具有2d顶点的四边形时:glVertex2f(0,0);glVertex2f(0, 1000);glVertex2f(1000, 1000);glVertex2f(1000, 0);,那么一切似乎都很好,但是当我使用下面的代码时,我只看到黑屏。是我使用了错误的坐标,因此它没有显示在屏幕上,还是其他问题?

  • 我试图创建一个第一人称相机。我从我的XNA项目中提取了一段代码,并试图将其转换为java(LWJGL)。 如果我移动鼠标,俯仰和偏航会增加/减少。在开始运行我的游戏时,它运行良好,但在一些动作后,我无法向下或向上看。如果我的位置是 性能良好的XNA代码: 所以我发现LWJGL和XNA在旋转矩阵方面有一些不同。 Java: 结果: {1.0 0.0 0.0 0 0.0}{0.0 0.3299931-