Qt5プロジェクトでマルチサンプリングを実行する必要がありますが、QOpenGLFrameBufferObjectを使用してFSAAを実行する方法がわかりません。私が検索した限り、これを行う方法の例はなく、ドキュメントには次のように記載されています。「テクスチャとしてマルチサンプリングが有効になっているフレームバッファオブジェクトを使用する場合は、最初にQOpenGLContextを使用してそのオブジェクトから通常のフレームバッファオブジェクトにコピーする必要があります。 :: blitFramebuffer()。」私のコードは現在次のようになっています:
//Enable FSAA for better output
int vp[4];
glGetIntegerv(GL_VIEWPORT, vp);
if(m_lpFBO == NULL)
{
//MultiSampling set to 4 now
QOpenGLFramebufferObjectFormat format;
format.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
format.setMipmap(true);
format.setSamples(4);
format.setTextureTarget(GL_TEXTURE_2D);
format.setInternalTextureFormat(GL_RGBA32F_ARB);
//Create the FBO
m_lpFBO = new QOpenGLFramebufferObject(vp[2], vp[3], format);
m_lpFBOSurface = new QGLFramebufferObjectSurface(m_lpFBO);
}
QRect rc(0, 0, vp[2], vp[3]);
QGLSubsurface sub(lpPainter->currentSurface(), rc);
m_lpFBO->bind();
sub.setFramebufferObject(m_lpFBO);
lpPainter->pushSurface(&sub);
//Draw as usual
.
.
.
lpPainter->popSurface();
//Now Copy
QOpenGLFramebufferObject::blitFramebuffer(lpPainter->currentSurface()->framebufferObject(), rc, m_lpFBO, rc);