- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我刚刚开始讨论 OpenGL 中的遮挡查询主题,但我对它们的实际工作方式有点困惑。
在我发现的大多数示例中,深度和颜色 mask 在使用遮挡查询绘制之前被停用(因为我们不需要实际“绘制”任何东西),本质上有点像这样:
glDepthMask(GL_FALSE);
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
glBeginQuery(GL_ANY_SAMPLES_PASSED,query1);
// Draw Object 1
glEndQuery(GL_ANY_SAMPLES_PASSED);
glBeginQuery(GL_ANY_SAMPLES_PASSED,query2);
// Draw Object 2
glEndQuery(GL_ANY_SAMPLES_PASSED);
// etc
glDepthMask(GL_TRUE);
glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);
(假设对象是前后绘制的,所以对象1在对象2的前面。上面的代码只是为了这个问题的伪代码。查询的结果稍后会检索.)
现在,要知道对象 2 是否真的被对象 1 遮挡,它需要以某种方式保留来自查询 1 的片段信息(我假设在某种深度缓冲区中)。但是我们已经禁用了对深度和颜色缓冲区的绘制,这意味着什么都没有绘制,这意味着它不应该在任何地方存储任何东西?
是否有特殊的“查询”缓冲区?如果是这样,有没有办法访问它?它是否以任何方式连接到当前绑定(bind)的纹理或帧缓冲区?我需要清除它吗?我是否误解了遮挡查询的实际工作原理?
最佳答案
Now, to know if object 2 is actually occluded by object 1, it would need to keep the fragment information from query 1 somehow
为什么会这样?遮挡查询存储通过深度测试的样本数计数器,它是一个整数。
由于您已禁用写入颜色和深度缓冲区,绘制对象唯一要做的就是增加遮挡查询计数器*。对象 2 不可能遮挡对象 1,因为绘制对象 1 不会更改深度缓冲区。
* 除非你有模板缓冲区或正在着色器中执行类似图像加载/存储的操作
关于c++ - OpenGL - 遮挡查询深度缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27385314/
我无法找出为什么会出现以下问题:在使用“extends Frame”创建窗口的程序中,我可以使用 BufferedImage 绘制到 Frame(而非 JFrame)的图形上下文,并且它看起来很好。但
我找到了一些示例代码。 它通过AppDelegate.m中的代码显示 View - (BOOL)application:(UIApplication *)application didFinishLa
我在 Objective-C 应用程序中成功使用了 Core Plot。我正在用 Swift 编写一个新应用程序,但遇到了一些麻烦。在我为图表设置 dataSource 之前,坐标轴显示正确且符合预期
多年来我一直在尝试来自 KDE/MATE 的很棒的东西,我真的很喜欢它。在我之前的工作流程中,我真的只遗漏了一件事。 有时我会使用具有大量 float 窗口的应用程序。我发现在 float WM 中非
我创建了默认的底部导航项目。在其中一个 fragment 中,我添加了一个 ListView,效果很好。然后我将其更改为 RecyclerView,它被 BottomNavigationView 遮挡
让两个自定义 View 一起工作时,我遇到了一个非常烦人的问题。我试图在 android Activity 中显示这两个 View ,但其中一个占据了 Activity 的整个可视空间,另一个位于其下
我正在尝试在我的 UITableViewController 中使用 UIRefreshControl,它本身位于 UINavigationController 中,它有它的 hidesNavigat
我是一名优秀的程序员,十分优秀!