当前位置: 首页 > 面试题库 >

OpenGL-特定深度的像素颜色

樊琦
2023-03-14
问题内容

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

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

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

我在Java和JOGL中使用Eclipse。


问题答案:

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

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



 类似资料:
  • 我正在Ubuntu上编写一个简单的OpenGL程序,它使用顶点数组绘制两个正方形(一个在另一个前面)。由于某种原因,GL_DEPTH_TEST似乎不起作用。后面的对象显示在前面的对象的前面。深度缓冲区由启用 GL_DEPTH_TEST由 并且深度缓冲区在绘制之前被清除 完整的代码如下所示: 顶点着色器如下所示:#version 130 片段着色器如下所示:#version 130 为什么前面的物体

  • 我对Android很陌生,正在做我自己的迷你项目,我想改变一个特定像素的颜色。在寻找如何做到这一点时,我在几年前遇到了这个问题。我尝试了myBitmap。setPixel(10,10,Color.rgb(45,127,0)) ,但当我在手机上激活它时,我激活这行代码的那一刻它就崩溃了。每当我与位图交互时,它似乎就会崩溃<代码>int x=myBitmap。getHeight() 这一行也会使应用程

  • 问题内容: 但是我需要一个Java等效项。我需要一个图像类型(如,,…),该图像类型可以完全透明(alpha = 0)保留此颜色。当然还有一种将其保存为文件的方法。 问题答案: import java.awt.; import java.awt.image. ; 修改代码以使每个像素透明 来源:http://www.rgagnon.com/javadetails/java-0265.html

  • 问题内容: 我想用Python更改单一颜色。 如果存在使用PIL的快速解决方案,我会更喜欢此解决方案。 此刻,我用 问题答案: 如果计算机上可用,请尝试执行以下操作: 它将使用多一点(3倍)的内存,但它应该快得多(〜5倍,但对于更大的图像,更多)。 另请注意,如果您只有RGB(而不是RGBA)图像,则上面的代码比需要的代码稍微复杂一些。但是,此示例将单独保留Alpha波段,而没有一个更简单的版本。

  • 我有一个正在开发的OpenGL应用程序。正在渲染的地形似乎没有遵循深度缓冲规则,所以我猜我在某个地方搞砸了 我的代码中有GL11.glEnable(GL11.GL_CULL_FACE) 这是飞机在没有四边形在另一个后面的情况下的样子,所以即使没有z缓冲区,事情看起来也很正常。请注意,这是从“自上而下”的视图中,其中“相机”在飞机上方 而现在,从不同的角度看 离场景最远的四边形正在更靠近计算机的四边

  • 嘿,我正在尝试做一个程序,它加载一个彩色图像作为灰度画布,然后返回颜色点击像素。当setrgb()方法没有做它应该做的事情时,我就被困在这里了。我已经通过getRGB()从原始图像中复制了颜色,并使用setRGB()将其分配给新图像。我试图输出两个像素颜色值,但他们不一样。请帮我解决这个问题。以下是到目前为止的代码: