qt - ubuntu 上的 QGLWidget 什么也没显示

标签 qt opengl ubuntu qglwidget

我在 ubuntu 上使用 Qt5 的项目中使用 QGLWidget。扩展 QGLWidget 的类非常简单,只是重写了它的两个虚拟保护函数:

标题:

class MyGLWidget : public QGLWidget {
    Q_OBJECT
public:
    explicit MyGLWidget(QWidget *parent = 0);
protected:
    void initializeGL();
    void paintGL();
};

执行:
MyGLWidget::MyGLWidget(QWidget *parent) :
    QGLWidget(parent) {
}
void MyGLWidget::initializeGL() {
    glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
}
void MyGLWidget::paintGL() {
    glClear(GL_COLOR_BUFFER_BIT);
}

我创建了它的一个实例并调用它的 show 方法,希望出现一个红色窗口,但我得到的是:

enter image description here

窗口是透明的,它显示它下面的任何内容。

确实是什么问题,我该如何解决? (我使用的是 ubuntu 14.04 64bit,Qt5.3 是直接从 qt-project.org 安装的)

最佳答案

我在相同版本的 Ubuntu 和 Qt 5.4 上发现了同样的问题。我不知道确切的原因,但我认为这是因为 glClear图形卡不会接收或执行命令,除非它后面有其他绘图命令。我扩展了paintGL包含一些经典测试代码的函数,如下所示:

void MyGLWidget::paintGL()
{
  glViewport(0, 0, width(), height());
  glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
  glClear(GL_COLOR_BUFFER_BIT);

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  glOrtho(-20, 20, 20, -20, -1, 1);

  glColor3f(1.0f, 0.0f, 0.0f);
  glBegin(GL_TRIANGLES);
    glVertex3f(10, 10, 0);
    glVertex3f(-10, 10, 0);
    glVertex3f(0, -10, 0);
  glEnd();
}

使用额外的代码来渲染一个红色三角形,我发现 clear 开始对我有用,而它以前没有。

关于qt - ubuntu 上的 QGLWidget 什么也没显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24210472/

相关文章:

c++ - Qt C++ 双因素认证

c++ - 为实体形状绘制带线边框的有效方法

performance - OpenGL - 一次将所有数据传递到着色器时遇到问题

java - glcolor3b 和 glcolor3ub 的区别

shell - 如何检查加密磁盘之前是否使用 cryptsetup 打开?

libtorrent-rasterbar 的 Python 绑定(bind)不起作用

Javascript/Node : (() => 0) === (() => 0)

c++ - undefined symbol : _ZN7QString13toUtf8_helperERKS_ at runtime

c++ - rand() 不遵守 Qt Creator 中的 srand()

qt - 是否可以在所有 Qt 程序(可能作为 qt 插件)中实现 emacs 样式的键绑定(bind)?