c++ - 有没有办法确定每个 GL_LINE 元素将写入多少像素?

标签 c++ c opengl

我试图通过使用加法混合渲染到 FBO 来计算每个像素写入的总次数,从而近似“轨迹密度”。

问题是(1)由于线条较长,位移较大的元素会被计数更多次,(2)由于用于绘制线条的像素数量也取决于线的角度。

我想通过用于绘制线条的像素数来加权为每个元素绘制的像素数。那么有什么方法可以实现这一点吗?在最坏的情况下,我可以发送长度和角度作为属性并估计像素数。有一个更好的方法吗?或者有一个好的替代方法来完成我想做的事情吗?

最佳答案

您可以使用GL_SAMPLES_PASSED查询。

GLuint q;
glGenQueries(1, &q);
glBeginQuery(GL_SAMPLES_PASSED, q);
glDrawArrays(GL_LINES, 0, 2);
glEndQuery(GL_SAMPLES_PASSED);
GLint num_pixels;
glGetQueryiv(GL_SAMPLES_PASSED, GL_QUERY_COUNTER_BITS, &numPixels);
printf("num_pixels = %d", num_pixels);
glDeleteQueries(1, &q);

关于c++ - 有没有办法确定每个 GL_LINE 元素将写入多少像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36194089/

相关文章:

c++ - 初始化一个指向 char 数组的指针

c - 如何将多个 *argv 组合成一个 char* 类型的消息

c - 这里的代码片段有语法错误吗?

c++ - 如何在 OpenGL Superbible 第 6 版中构建和运行示例?

Golang OpenGL元素缓冲对象无法正确渲染

c++ - 在调用析构函数之前是否有任何实际理由来检查某物是否可破坏?

c++ - 结构在 AnotherSource 中不可读,但在 Source 中不可读

c++ - Qt/OpenGL - 渲染图元失真

c++ - 任何人都知道任何可以使用 C++ 以字节为单位编码 asm 字符串的东西吗?

c - 通过地址将结构传递给函数与 C 中的指针