xleniz
22nd February 2012, 20:09
Can someone help me, I need to update window in QTOpenGL ( if I press F10 I want to zoom, or change X or Y, but it doesnt update )
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QtOpenGL/QGLWidget>
#include <QtGui/QMouseEvent>
#include <GL/glu.h>
int cameraX, cameraY, cameraZ;
class GLWidget : public QGLWidget{
public:
void initializeGL();
void resizeGL(int w, int h);
void paintGL();
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void keyPressEvent(QKeyEvent *event);
};
void GLWidget::initializeGL() {
glDisable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
glDisable(GL_COLOR_MATERIAL);
glEnable(GL_BLEND);
glEnable(GL_POLYGON_SMOOTH);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glClearColor(3, 3, 3, 0);
cameraX = 0;
cameraY = 0;
cameraZ = 0;
}
void GLWidget::resizeGL(int w, int h) {
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, w, 0, h); // set origin to bottom left corner
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void GLWidget::paintGL() {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(5,0,0);
glTranslatef(cameraX, cameraY, cameraZ);
glBegin(GL_POLYGON);
glVertex2f(0,0);
glVertex2f(0,500);
glVertex2f(500,0);
glEnd();
}
void GLWidget::mousePressEvent(QMouseEvent *event) {
}
void GLWidget::mouseMoveEvent(QMouseEvent *event) {
printf("%d, %d\n", event->x(), event->y());
}
void GLWidget::keyPressEvent(QKeyEvent* event) {
switch(event->key()) {
case Qt::Key_Escape:
close();
break;
case Qt::Key_F10:
cameraX += 0.5f;
break;
default:
event->ignore();
break;
}
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
GLWidget window;
window.resizeGL(800, 600);
window.show();
a.exec();
}
Thanks!
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QtOpenGL/QGLWidget>
#include <QtGui/QMouseEvent>
#include <GL/glu.h>
int cameraX, cameraY, cameraZ;
class GLWidget : public QGLWidget{
public:
void initializeGL();
void resizeGL(int w, int h);
void paintGL();
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void keyPressEvent(QKeyEvent *event);
};
void GLWidget::initializeGL() {
glDisable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
glDisable(GL_COLOR_MATERIAL);
glEnable(GL_BLEND);
glEnable(GL_POLYGON_SMOOTH);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glClearColor(3, 3, 3, 0);
cameraX = 0;
cameraY = 0;
cameraZ = 0;
}
void GLWidget::resizeGL(int w, int h) {
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, w, 0, h); // set origin to bottom left corner
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void GLWidget::paintGL() {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(5,0,0);
glTranslatef(cameraX, cameraY, cameraZ);
glBegin(GL_POLYGON);
glVertex2f(0,0);
glVertex2f(0,500);
glVertex2f(500,0);
glEnd();
}
void GLWidget::mousePressEvent(QMouseEvent *event) {
}
void GLWidget::mouseMoveEvent(QMouseEvent *event) {
printf("%d, %d\n", event->x(), event->y());
}
void GLWidget::keyPressEvent(QKeyEvent* event) {
switch(event->key()) {
case Qt::Key_Escape:
close();
break;
case Qt::Key_F10:
cameraX += 0.5f;
break;
default:
event->ignore();
break;
}
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
GLWidget window;
window.resizeGL(800, 600);
window.show();
a.exec();
}
Thanks!