KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm trying to use QGLWidget in Qt 4.8.2. I noticed that the default context QGLWidget creates doesn't show any output for OpenGL above 3.1. The Qt wiki has a tutorial that demonstrates using OpenGL 3.3 to draw a simple triangle. When I try to run the tutorial, I get a blank screen. If I change the OpenGL version to 3.1, I get the expected output (a red triangle). My video card supports OpenGL 4.2, and calling QGLFormat::openGLVersionFlags() before creating the QGLWidget shows that Qt detects OpenGL 4.2 and all previous desktop versions. Here's another minimal example: #include <QApplication> #include <QGLWidget> #include <QDebug> #include <QtDeclarative/qdeclarativeview.h> int main(int argc, char * argv[]) { QApplication app(argc, argv); qDebug() << "OpenGL Versions Supported: " << QGLFormat::openGLVersionFlags(); QGLFormat qglFormat; qglFormat.setVersion(4,2); // get expected output with (3,1) and below, else blank window qglFormat.setProfile(QGLFormat::CoreProfile); qglFormat.setSampleBuffers(true); QGLWidget* qglWidget = new QGLWidget(qglFormat); QString versionString(QLatin1String(reinterpret_cast<const char*>(glGetString(GL_VERSION)))); qDebug() << "Driver Version String:" << versionString; qDebug() << "Current Context:" << qglWidget->format(); QDeclarativeView mainView; mainView.setViewport(qglWidget); mainView.setSource(QString("helloworld.qml")); mainView.show(); return app.exec(); } Here's the output: OpenGL Versions Supported: QFlags(0x1|0x2|0x4|0x8|0x10|0x20|0x40|0x1000|0x2000|0x4000|0x8000|0x10000) Driver Version String: "4.2.0 NVIDIA 295.53" Current Context: QGLFormat(options QFlags(0x1|0x2|0x4|0x10|0x20|0x80|0x200|0x400) , plane 0 , depth
Tags (comma-separated)
Save Edits
Cancel