在默认帧缓冲区上绘制一个透明帧缓冲区
Draw a transparent framebuffer onto the default framebuffer
我遇到这种情况,需要将帧缓冲区对象的内容渲染到屏幕上。屏幕上已经有一些内容,我想将我的帧缓冲区的内容绘制到该内容上。
我正在使用 Qt5 和 QNanoPainter 来实现它。
我实现的渲染命令基本上采用 QOpenGLFramebufferObject
并将其转换为 QNanoImage
(使用 this) and then calls QNanoPainter::drawImage.
这工作正常,但问题是当 fbo 的内容呈现到屏幕上时,屏幕上先前存在的内容变得“像素化”。
因此,例如,在我绘制 FBO 之前,屏幕看起来像这样
然后当我将 FBO 绘制到默认渲染目标上时,我得到了这个(红色是 FBO 的内容)
我认为这与混合和 OpenGL 有关,但我不确定如何解决这个问题。
当您多次在其自身上过度绘制半透明图像时会发生这种情况。白色像素变得更白,蓝色像素变得更蓝,因此,抗锯齿边缘在几次迭代后消失。
因此我推断您的 'transparent framebuffer' 已经包含蓝线和黑网格线。因此,解决方案是在继续将红线绘制到 in.
之前清除 'transparent framebuffer'
我遇到这种情况,需要将帧缓冲区对象的内容渲染到屏幕上。屏幕上已经有一些内容,我想将我的帧缓冲区的内容绘制到该内容上。
我正在使用 Qt5 和 QNanoPainter 来实现它。
我实现的渲染命令基本上采用 QOpenGLFramebufferObject
并将其转换为 QNanoImage
(使用 this) and then calls QNanoPainter::drawImage.
这工作正常,但问题是当 fbo 的内容呈现到屏幕上时,屏幕上先前存在的内容变得“像素化”。 因此,例如,在我绘制 FBO 之前,屏幕看起来像这样
然后当我将 FBO 绘制到默认渲染目标上时,我得到了这个(红色是 FBO 的内容)
我认为这与混合和 OpenGL 有关,但我不确定如何解决这个问题。
当您多次在其自身上过度绘制半透明图像时会发生这种情况。白色像素变得更白,蓝色像素变得更蓝,因此,抗锯齿边缘在几次迭代后消失。
因此我推断您的 'transparent framebuffer' 已经包含蓝线和黑网格线。因此,解决方案是在继续将红线绘制到 in.
之前清除 'transparent framebuffer'