我正在使用 QT 在 Unix 中工作,我正在尝试创建一个位图(QGLWidget 或 QGLPixelBuffer 类)以使用 OpenGL 进行渲染。我需要使用颜色索引模式,所以当我创建位图时,我声明了这个 qglformat:
qglformat.setDirectRendering(true);
qglformat.setRgba(false); // COLOR INDEX MODE
qglformat.setDepth(true);
qglformat.setOverlay(false);
qglformat.setDepthBufferSize(16);
然后我创建位图:
QGL小部件:
m_qglwiget = new QGLWidget(qglformat);
m_qglwiget->setGeometry(0,0,m_iW,m_iH);
QGL像素缓冲区:
m_pB = new QGLPixelBuffer(m_iW,m_iH,qglformat);
在第一种情况下,小部件已创建,但如果我查看它是否有效,则函数 isValid() 返回“false”。并且执行因该错误而中止:QGLContext::makeCurrent(): Cannot make invalid context current。因为上下文也是无效的。
否则,在第二种情况下,PixelBuffer 被正确创建,但它已自动将索引颜色模式更改为 RGB 模式。
相同的程序在使用 Windows 的同一台计算机上运行,因此不是显卡的问题。
您能告诉我如何正确定义位图以便能够以颜色索引模式进行渲染吗?