小编典典

OpenGL-特定深度的像素颜色

java

从gluOrtho角度看,我已经在OpenGL中渲染了3D场景。在我的应用程序中,我正在查看体积为100x70x60mm(我为1000x700x600像素)的立方体的正面。在此立方体内部,我绘制了一个简单的蓝色球体,该球体恰好位于中间并“填充”立方体(半径300像素)。

现在,我想读取立方体内特定点的像素的颜色值(以3D表示);即我想知道说点(100,100,-200)是蓝色还是空白(黑色)。

glReadPixels只允许2D提取颜色,我已经尝试过用DEPTH_COMPONENT进行颜色提取,但是不确定这应该以字节形式返回什么?有没有办法将两者结合起来?我想念什么吗?

我在Java和JOGL中使用Eclipse。


阅读 403

收藏
2020-11-30

共1个答案

小编典典

您并不是第一个因这种误解而堕落的人,所以我说这是最直率的方式:OpenGL不能那样工作。OpenGL
never(!)处理对象或任何复杂的场景。OpenGL唯一了解的是帧缓冲区,着色器和单个三角形。每当您绘制通常由三角形组成的对象时,OpenGL一次只会看到每个三角形。一旦将某些内容吸引到帧缓冲区,以前丢失的内容都会丢失。

有一些基于光栅化器概念的算法(例如OpenGL),可将渲染的场景分解为部分, 深度剥离 将是其中之一。

2020-11-30