从gluOrtho角度看,我已经在OpenGL中渲染了3D场景。在我的应用程序中,我正在查看体积为100x70x60mm(我为1000x700x600像素)的立方体的正面。在此立方体内部,我绘制了一个简单的蓝色球体,该球体恰好位于中间并“填充”立方体(半径300像素)。
现在,我想读取立方体内特定点的像素的颜色值(以3D表示);即我想知道说点(100,100,-200)是蓝色还是空白(黑色)。
glReadPixels只允许2D提取颜色,我已经尝试过用DEPTH_COMPONENT进行颜色提取,但是不确定这应该以字节形式返回什么?有没有办法将两者结合起来?我想念什么吗?
我在Java和JOGL中使用Eclipse。
您并不是第一个因这种误解而堕落的人,所以我说这是最直率的方式:OpenGL不能那样工作。OpenGL never(!)处理对象或任何复杂的场景。OpenGL唯一了解的是帧缓冲区,着色器和单个三角形。每当您绘制通常由三角形组成的对象时,OpenGL一次只会看到每个三角形。一旦将某些内容吸引到帧缓冲区,以前丢失的内容都会丢失。
有一些基于光栅化器概念的算法(例如OpenGL),可将渲染的场景分解为部分, 深度剥离 将是其中之一。