QOpenGLWidget空白不显示绘图内容
来源:互联网 发布:美国大学放假知乎 编辑:程序博客网 时间:2024/06/12 10:35
在做一个简单的基于Qt的OpenGL绘图的时候,发现通过调用Qt自带类QOpenGLWidget时,只显示背景颜色,不显示绘制的内容。
最初的代码如下:
头文件
#ifndef MYOPENGLWIDGET_H#define MYOPENGLWIDGET_H#include <QOpenGLWidget>#include <QOpenGLFunctions>class myOpenglWidget : public QOpenGLWidget, protected QOpenGLFunctions{ Q_OBJECTpublic: explicit myOpenglWidget(QWidget *parent = nullptr);protected: void initializeGL(); void resizeGL(int w, int h); void paintGL();signals:public slots:};#endif // MYOPENGLWIDGET_H
cpp文件
#include "myopenglwidget.h"#include <iostream>#include "glut.h"using namespace std;myOpenglWidget::myOpenglWidget(QWidget *parent) : QOpenGLWidget(parent){}void myOpenglWidget::initializeGL(){ initializeOpenGLFunctions(); glClearColor(1.0, 1.0, 1.0,1.0);}void myOpenglWidget::resizeGL(int w, int h){ glViewport(0, 0, (GLsizei)w, (GLsizei)h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-1.5,1.5,-1.5,1.5); glMatrixMode(GL_MODELVIEW); glLoadIdentity();}void myOpenglWidget::paintGL(){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPointSize(10.0); glColor3d(1.0,0.0,0.0); glBegin(GL_POINTS); glVertex3d(0.0, 0.0, 0.0); glEnd();}
main.cpp
#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();}
在ui文件中创建QOpenGLWidget并将其提升为myOpenglWidget,编译上述代码并执行发现背景颜色可以更改,但是中心的红点无法显示。
解决办法
在initializeGL函数中添加opengl版本检查
cout<<glGetString(GL_VERSION)<<endl;
运行程序输出结果为
OpenGL ES 2.0 (ANGLE 2.1.0.8613f4946861)
这就可以发现问题所在,程序直接去调用了OpenGL ES库,而在OpenGL ES库中是不支持glBegin()等函数的,所以我们需要让程序去连接到OpenGL库,这其实也很简单,在mian.cpp调用QApplication之前设置使用OpenGL库的属性,即:
int main(int argc, char *argv[]){ QCoreApplication::setAttribute(Qt::AA_UseDesktopOpenGL); QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();}
阅读全文
0 0
- QOpenGLWidget空白不显示绘图内容
- html5 canvas绘图偶尔发生空白(图片不显示)
- IE6 页面空白不显示内容的问题
- YII 显示空白内容
- delphi 文本框内容空白时加上提示文字,输入内容时提示文字不显示
- ext.net 连接Oracle数据库时,不显示明细内容,只显示对应条数的空白行的解决办法
- IE6 bug:iframe空白,无法显示内容
- UITextView内容显示不全或空白问题
- jdk不显示,右边空白,解决办法
- activity内容不显示
- viewpager不显示内容
- Pulltorefreshlistview不显示内容
- ListView--内容不显示
- Recyclerview不显示内容
- excel 错误不显示 #REF #VALUE 显示为空白
- ireport 当没有数据时显示默认值,不显示空白
- MFC中的绘图不显示问题
- chm内容显示为空白的处理方法
- Resin基本配置及发布部署
- 解析json
- ionic2 初学各种命令集合
- 修改文件后缀名实现PDF转CAJ
- 移动端一个像素问题
- QOpenGLWidget空白不显示绘图内容
- PullToRefresh使用详解(一)--构建下拉刷新的listView
- dubbo使用
- SpringBoot项目实战(7):Filter、Listener
- mysql+mybatis+Spring
- Struts2学习(五)【访问servletAPI方式】
- MyEclipse工作空间设置
- Data URL和图片
- Struts2学习(六)【参数获取】