2011-06-27 24 views
7

Estoy trabajando en una aplicación QML para una plataforma incrustada que incluye un widget GridView que contiene imágenes. Para mí es importante que el desplazamiento a través de GridView sea fluido y no cargue la CPU. ¿Puedo esperar que Qt use OpenGL para representar GridView?Representación Qt usando OpenGL

+0

Por lo que sé sobre Qt QML, puedes usar sombreadores (hay ejemplos en el sitio de Qt) ... Supongo que se trata de un renderizado OpenGl. – vrince

+0

Los sombreadores vienen con QtQuick 2.0 (Qt 5.0) o tiene que usar QtQuick3D. – blakharaz

Respuesta

5

Me enfrenté con el mismo problema.

QApplication::setGraphicsSystem(QLatin1String("opengl")); 

haven`t trabajo para mí. Así que me puse la OGWidget como un puerto de vista:

QDeclarativeView mainwindow; 
mainwindow.setSource(QUrl::fromLocalFile("./qml/app.qml")); 
QGLFormat format = QGLFormat(QGL::DirectRendering); // you can play with other rendering formats like DoubleBuffer or SimpleBuffer 
format.setSampleBuffers(false); 
QGLWidget *glWidget = new QGLWidget(format); 
glWidget->setAutoFillBackground(false); 
mainwindow.setViewport(glWidget); 

y no se olviden de añadir OpenGL en el archivo * .pro.

+0

¿qué versión de qt usaste? –

+0

Era la última versión en este momento. AFAIR, 4.6 con qtquick 1.0 – avida

2

Por defecto, Qt no utiliza el back end de renderizado OpenGL. Puede aplicarlo utilizando un QGlWidget. En su caso, como se desea utilizar un widget de valores, se puede establecer el backend rendir como una opción de línea de comandos:

<binary name> -graphicssystem opengl 
+0

no funciona para mí si agrego: graphicssystem opengl – olidev

+0

[la opción "-graphicssystem" se eliminó de Qt5] (https://bugreports.qt.io/browse/QTBUG-41265) – Color

3

Dependiendo de su uso de la plataforma

QApplication::setGraphicsSystem(QLatin1String("opengl")); 

o (Symbian)

QApplication::setGraphicsSystem(QLatin1String("openvg")); 

antes de crear una instancia del objeto QApplication.

Cuestiones relacionadas