Cómo construir un nuevo proyecto QT opengl
Construcción del entorno de desarrollo OPENGL en QT
Primero agregue el archivo de configuración del entorno.pro en el archivo del proyecto
QT = qt3support // Compatible con qt3
QT = opengl // Compatible con la biblioteca OPENGL
archivo nehewidget.h
#include lt qgl.hgt; biblioteca
#include lt; QtGui/qevent.hgt; //biblioteca que se agregará
clase NeHeWidget: public QGLWidget //Cualquier forma OPENGL debe derivarse de la clase QGLWidget
{
Q_OBJECT //Definición de macroSolo con la adición de Q_OBJECT puedes usar los mecanismos de señal y ranura en QT
público:
NeHeWidget( QWidget* padre = 0, const char* nombre = 0, bool fs = false);
~NeHeWidget();
protegido:
vacío inicializeGL(); //inicializa la ventana
void paintGL(); //pinta la ventana
void resizeGL( int width, int height ); >
void keyPressEvent( QKeyEvent *e); //evento de botón
protegido:
bool pantalla completa; //evento de pantalla completa
}; p>
Archivo fuente
NeHeWidget::NeHeWidget(QWidget* padre, const char* nombre, bool fs)
:QGLWidget(padre, nombre) //dos parámetros del constructor necesario para QGLWidget
{
pantalla completa = fs;
setGeometry(0, 0, 640, 480);
setCaption ( " NeHe's OpenGL Framework" );
if ( pantalla completa )
showFullScreen(); //establecer global
}
NeHeWidget :: ~NeHeWidget()
{
}
void NeHeWidget::initializeGL()
{
glShadeModel ( GL_SMO
OTH );
glClearColor( 0.0, 0.0, 0.0, 0.0 );
glClearDepth(
glEnable( GL_DEPTH_TEST ); p> glDepthFunc( GL_LEQUAL );
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_ NICEST
}
void NeHeWidget::paintGL()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glLoadIdentity()
}
void NeHeWidget::resizeGL( int ancho , int altura )
{
if ( altura == 0 )
{
altura = 1;
}
glViewport( 0, 0, (GLint)ancho, (GLint)alto
glMatrixMode( GL_PROJECTION
glLoadIdentity();
gluPerspective( 45.0, (GLfloat)ancho/(GLfloat)alto, 0.1, 100.0);
glMatrixMode( GL_MODELVIEW
glLoadIdentity(); /p>
}
void NeHeWidget::keyPressEvent( QKeyEvent *e)
{
cambiar ( e-gt; key() )
{
caso Qt::Key_F2:
pantalla completa = ! pantalla completa
si (pantalla completa)
{
showFullScreen()
}
más p> p>
{
showNormal();
setGeometry( 0, 0, 640, 480);
}
<); p> actualizarGL();romper
caso Qt: :Key_Escape:
cerrar()
}
}
main.cpp
#include lt;qapplication.hgt;
#include lt;qmessagebox.hgt;
#include "nehewidget.h"
int main( int argc, char **argv)
{
bool fs = false;
QApplication a(argc, argv);
switch( QMessageBox::
información( 0,
"¿Iniciar pantalla completa?",
"¿Le gustaría ejecutar en modo de pantalla completa?",
QMessageBox::Sí, p>
p>
QMessageBox::No | QMessageBox::Default ) )
{
Ejemplo QMessageBox::Sí:
fs = verdadero;
p>
descanso;
caso QMessageBox: :No:
fs = falso
descanso;
} p>
NeHeWidget w( 0, 0, fs
a.setMainWidget( amp; w ); show();
return a.exec();
}
// Cuando utilice OPENGL para dibujar en QT, recuerde utilizar UPDATE() para actualizar los datos
.