qt + opengl 无法显示?

bear234 2014-12-01 04:31:49
我用QGLWidget来运行opengl代码 但是只能显示出背景颜色,其他任何都显示不出来

代码:

#ifndef GLWIDGET_H
#define GLWIDGET_H

#include <QGLWidget>

class GLWidget : public QGLWidget
{
Q_OBJECT
public:
explicit GLWidget(QWidget *parent = 0);

virtual void initializeGL();
virtual void resizeGL(int w, int h);
virtual void paintGL();
};

#endif // GLWIDGET_H



#include "glwidget.h"
#include <gl/glut.h>


GLWidget::GLWidget(QWidget *parent) :
QGLWidget(parent)
{}

void GLWidget::initializeGL()
{
qglClearColor(Qt::gray);
glShadeModel(GL_SMOOTH);
glClearColor(0.6, 0.2, 0.2, 1);
}

void GLWidget::resizeGL(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
GLfloat x = GLfloat(w) / h;
glFrustum(-x, +x, -1.0, +1.0, 4.0, 20.0);
glMatrixMode(GL_MODELVIEW);
}

void GLWidget::paintGL()
{
//qglClearColor(QColor(0,0,255,128));
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(0.0, 0.0, 1.0);
glBegin(GL_TRIANGLES);
glVertex3f(0.0,1.0,0.0);
glVertex3f(-1.0,-1.0,0.0);
glVertex3f(1.0,-1.0,0.0);
glEnd();
}



#include <QApplication>
#include <QtOpenGL/QtOpenGL>
#include "glwidget.h"

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

GLWidget *gl = new GLWidget();
gl->updateGL();
gl->show();

return a.exec();
}




void GLWidget::initializeGL()
{
qglClearColor(Qt::gray);
glShadeModel(GL_SMOOTH);
glClearColor(0.6, 0.2, 0.2, 1);
}
这个函数里的最后一行代码执行了 因为窗口颜色是这个颜色
但并没有显示出我要画的三角形-------即使我在main函数里调用了updateGL()函数,也不行

求高人指点 困惑好几天了.........

PS:
我qt的版本是5.0.2
...全文
573 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bear234 2014-12-04
  • 打赏
  • 举报
回复
引用 4 楼 soso101 的回复:
应该不会啊,可以留邮箱我发给你我的代码,其实很简单的
谢谢 已经测试了你发的代码 还是同样的问题:只显示背景颜色,不显示三角形 不过,我现在怀疑是我的qt不正常 因为我必须include<gl/glut.h> 否则很多opengl的函数就无法识别.......
bear234 2014-12-03
  • 打赏
  • 举报
回复
引用 4 楼 soso101 的回复:
应该不会啊,可以留邮箱我发给你我的代码,其实很简单的
442393844@qq.com 非常感谢~~~
蜗牛sf 2014-12-02
  • 打赏
  • 举报
回复
应该不会啊,可以留邮箱我发给你我的代码,其实很简单的
bear234 2014-12-02
  • 打赏
  • 举报
回复
引用 2 楼 soso101 的回复:
画三角形前调用
glTranslatef(0.0f, 0.0f, -8.0f);
好好理解下这段代码的意思
glFrustum(-x, +x, -1.0, +1.0, 4.0, 20.0);
谢谢 不过还是什么都看不到.......我这两天试了很多代码 都不行.... 算了 放弃了~~
蜗牛sf 2014-12-02
  • 打赏
  • 举报
回复
画三角形前调用
glTranslatef(0.0f, 0.0f, -8.0f);
好好理解下这段代码的意思
glFrustum(-x, +x, -1.0, +1.0, 4.0, 20.0);
bear234 2014-12-01
  • 打赏
  • 举报
回复
没人知道么 求助啊

16,213

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧