OpenGL:如何通过 API 知道顶点是不是正在命中帧缓冲区

Posted

技术标签:

【中文标题】OpenGL:如何通过 API 知道顶点是不是正在命中帧缓冲区【英文标题】:OpenGL: How to know if a vertex is hitting the framebuffer by the APIOpenGL:如何通过 API 知道顶点是否正在命中帧缓冲区 【发布时间】:2020-11-24 18:06:48 【问题描述】:

我正在寻找一种简单可靠的方法来了解顶点是否到达最终帧缓冲区。

我不是在寻找确切的计数,而是如果真的有东西碰到缓冲区。我正在尝试调试阴影贴图。我所有的工具都告诉我我正在画一些东西,但在最终结果中,我什么也看不到,即使我在常规帧缓冲区中转换了所有内容。所以我想从 API 中知道“我现在正在缓冲区上放置一个顶点”,以确保并且不要在错误的帧缓冲区上浪费时间。

【问题讨论】:

放下GL_ANY_SAMPLES_PASSED occlusion query? 它看起来是正确的工具,谢谢 【参考方案1】:

使用的工具,就像 genpfault 所说的那样,带有查询机制的 GL_ANY_SAMPLES_PASSED。 glGenQueries() 创建有问题的查询, glQueryBegin() 和 glQueryEnd() 围绕实际绘制的代码和 glGetQueryObjectxxx() 知道是否绘制了一些东西。您还可以使用 GL_SAMPLES_PASSED 来了解显示了多少片段。

真的是我需要的。

【讨论】:

顺便说一句,与我的其他屏幕外渲染相比,现在我知道没有片段被写入我的阴影贴图中。

以上是关于OpenGL:如何通过 API 知道顶点是不是正在命中帧缓冲区的主要内容,如果未能解决你的问题,请参考以下文章

openGL之API学习(一六六)glVertexAttrib*函数

OpenGL 如何知道它应该根据 GL_ARRAY_BUFFER 将顶点绘制到啥位置?

openGL之API学习(二零二)glsl的smooth flat

使用 GLM 库在 OpenGL 中绘制顶点时如何使用常规坐标系

OpenGL - 需要一个简单的概念澄清

配置VAO和VBO时,顶点数据数组是不是应该使用相同的方法? (OpenGL)[重复]