- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Qt4 在 OpenGL 中制作一个简单的三角形,它工作正常,直到我使用设置格式启用多重采样。这是我的代码:
#include <QApplication>
#include <QtOpenGL>
// gl window class
class GLWindow : public QGLWidget
{
public:
GLWindow(QWidget *parent = nullptr)
: QGLWidget(parent){}
protected:
// ALL THE FOLLOWING FUNCTIONS ARE OVERRIDDEN FROM QGLWIDGET
void initializeGL()
{
QGLFormat newFormat = this->format();
newFormat.setSampleBuffers(true);
newFormat.setSamples(16);
this->setFormat(newFormat);
}
void resizeGL(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1, 1, -1, 1, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void paintGL()
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glColor3f(1, 0, 0);
glVertex2f(0, 1);
glColor3f(0, 1, 0);
glVertex2f(1, -1);
glColor3f(0, 0, 1);
glVertex2f(-1, -1);
glEnd();
}
};
// main function
int main(int argc, char **argv)
{
QApplication app(argc, argv);
GLWindow window;
window.resize(640, 480);
window.show();
return app.exec();
}
在我在“initlializeGL”中添加格式内容之前,它工作正常(显然除了没有多重采样)。
然后,我添加了格式内容,但窗口没有关闭。当我这么说时,我的意思是当我按下右上角的“X”按钮时它不会关闭,或者当我调用窗口的“close()”函数时它甚至不会关闭。
此外,当您按下“X”按钮(我检查过)时,它会调用“closeEvent()”,但实际上没有任何关闭。我尝试在覆盖的“closeEvent()”函数中调用“close()”,但它什么也没做。
再一次,我删除了“initializeGL()”中的代码,然后它正常关闭。因此,我尝试将“initializeGL()”中的代码移动到构造函数中。多重采样有效,当我按下“X”时它会关闭。伟大的!除了我在窗口关闭后得到这个:
就是这样。简而言之:
那么如何让窗口关闭,同时保持多重采样启用并且在窗口关闭后不会出现一些愚蠢的错误?
编辑:这是我的 .pro 文件中的文本
QT += core
QT += gui
QT += opengl
SOURCES += \
main.cpp
最佳答案
你不应该调用 setFormat
来自 initializeGL
,因为它会触发对 initializeGL
的调用本身。自 QGLWidget::setFormat
是obsolete在 Qt 4.8 中,您根本不应该使用它。
所以,首先尝试调用 setFormat
从构造函数,然后,如果它不起作用(或者即使它起作用),请尝试将格式传递给 QGLWidget
的构造函数来自 main()
.
关于c++ - QGL小部件: Using setFormat() To Enable Multisampling = The Window Doesn't Close,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13713184/
我正在设置一个具有 4 个颜色附件和 1 个深度模板附件的多重采样帧缓冲区。它目前不完整,包含 GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE。如果我不附加渲染缓冲区,它就
我想实现一个功能,将OpenGLWidget显示的内容保存到一个图片文件中。 我正在使用以下代码来保存图像: ui->gl_widget->grabFramebuffer().save("/foo/b
有什么方法可以使用 MonoTouch 和 OpenGL ES 2.0 激活多重采样吗?我在框架中找不到apple扩展,所以我认为它没有实现? 最佳答案 像 glRenderbufferStorage
我正在使用 Qt4 在 OpenGL 中制作一个简单的三角形,它工作正常,直到我使用设置格式启用多重采样。这是我的代码: #include #include // gl window class
我正在创建两个渲染目标,两者都必须共享后台缓冲区的深度缓冲区,因此我将它们设置为具有相同的多重采样参数很重要,但是 pDevice->CreateTexture(..) 没有给出任何参数设置多重采样类
我是一名优秀的程序员,十分优秀!