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();
}
答案 0 :(得分:2)
好吧,你应该考虑一下你告诉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);