无法使用QGLWiget划线



qt opengl的新增功能。我试图在我的opengl窗口中画一条线,但它没有显示。代码正在执行,没有出现错误。请帮帮我。下面提到的代码出了什么问题。

  //glwidget.cpp
    #include "glwidget.h"
    #include <QDebug>
    #include <QGLWidget>
    #include <QPainter>
    GLWidget::GLWidget(QWidget *parent) :
        QGLWidget(parent)
    {
    }
    void GLWidget::initializeGL()/*initialize*/
    {
        qDebug()<<"iniialize";
        glClearColor(0.0, 0.0, 102.0/255.0, 0.0);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
    }
    void GLWidget::resizeGL(int width, int height)
    {
        qDebug()<<"resizeGL";
        glViewport(0, 0, (GLint)width, (GLint)height);
    }
    void GLWidget::paintGL()
    {
        qDebug()<<"paintGL";
        glBegin(GL_LINES);
            glVertex3f( 0.0f, 0.0f, 0.0f);
            glVertex3f(-1.0f,-1.0f, 0.0f);
        glEnd();
    }
    #ifndef GLWIDGET_H
    #define GLWIDGET_H
    #include <QWidget>
    #include <QGLWidget>
    #include <QPainter>
    class GLWidget : public QGLWidget
    {
        Q_OBJECT
    public:
        explicit GLWidget(QWidget *parent = 0);
        void initializeGL();
        void resizeGL(int width, int height);
        void  paintGL();
};
    main.cpp
    #include "mainwindow.h"
    #include <QApplication>
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;/*Mainwindow*/
        w.show();
        return a.exec();
    }

好吧,你应该想想你告诉OpengGL在这里做什么:

使用

glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);

调用时,您可以设置投影矩阵,将区域0到1(X和Y方向)中的世界映射到屏幕。

然后绘制一条从0到-1的线(在X和Y方向上)。那条线现在在你的屏幕外。

在GL_LINES调用中尝试一些更好的坐标。

另外,你可能想通过清除屏幕来启动你的paintGL()例程:

glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

相关内容

  • 没有找到相关文章

最新更新