有没有办法根据GL_LINE元素确定要写入的像素数?

时间:2016-03-24 05:57:00

标签: c++ c opengl

我正在尝试近似“轨迹密度”,通过渲染到具有加法混合的FBO来计算每个像素被写入的总次数。

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

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

1 个答案:

答案 0 :(得分: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);