راهنمایی برای شروع کار با openGL



  • p{direction: rtl ; text-align: right}. سلام دوستان :)
    یک مرجع خوب برای شروع openGL تو Qt چی میتونه باشه؟ خود Qt چه کتابخونه هایی برای کارهای سه بعدی داره؟ در واقع یه کار خیلی ساده میخوام انجام بدم ولی نیاز به یک راهنمایی دارم که از کجا باید شروع کنم؟ :)
    ممنون



  • main.cpp
    @
    #include <QtGui/QApplication>
    #include <QtOpenGL/QGLWidget>
    #include "GLWidget.h"

    int main(int argc, char *argv[]) {

    QApplication app(argc, argv);
    
    GLWidget window;
    window.resize(800,600);
    window.show();
    
    return app.exec();
    

    }
    @

    GLWidget.h

    @
    #ifndef _GLWIDGET_H
    #define _GLWIDGET_H

    #include <QtOpenGL/QGLWidget>

    class GLWidget : public QGLWidget {

    Q_OBJECT // must include this if you use Qt signals/slots
    

    public:
    GLWidget(QWidget *parent = NULL);

    protected:
    void initializeGL();
    void resizeGL(int w, int h);
    void paintGL();
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void keyPressEvent(QKeyEvent *event);
    };

    #endif /* _GLWIDGET_H */
    @

    GLWidget.cpp

    @
    #include <QtGui/QMouseEvent>
    #include "GLWidget.h"

    GLWidget::GLWidget(QWidget *parent) : QGLWidget(parent) {
    setMouseTracking(true);
    }

    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(0, 0, 0, 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(1,0,0);
    glBegin(GL_POLYGON);
    glVertex2f(0,0);
    glVertex2f(100,500);
    glVertex2f(500,100);
    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;
    default:
    event->ignore();
    break;
    }
    }
    @




Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.