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);