- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我被难住了。我在已配置为 openGL 小部件的 QT 4.6 应用程序的主窗口内有一个小部件。它画得很好,除了我无法清除帧之间的背景。当他的窗口打开时我得到一个黑色背景并且之后它永远不会清除,所以随着时间的推移我会得到一团乱七八糟的渲染对象。我还必须在 paintGL() 函数的末尾调用 swapBuffers() 以使小部件显示最新的帧,这让我感到困惑,因为我觉得 swapBuffers() 是自动调用的。我已设置为双缓冲,并且未共享小部件。相关代码如下:
void GLWidget::paintGL ( )
{
m_Input.Draw();
QGLWidget::swapBuffers();
}
void GLWidget::initializeGL ( )
{
qglClearColor(QColor(0,0,255,128));
glClear(GL_COLOR_BUFFER_BIT);
}
双缓冲似乎确实有些不对劲。将屏幕清除为背景颜色是非常基本的。但这让我发疯为什么它不起作用。绘图代码的其余部分工作正常。有任何想法吗? (这是在 Linux 系统上。)
最佳答案
glClear
是绘图操作。它不属于initializeGL
,而是属于paintGL
。清除颜色也应在调用 glClear
之前设置好,因此请移动 [q]glClearColor
。
paintGL 方法应该如下所示:
void GLWidget::paintGL()
{
qglClearColor(QColor(0,0,255,128));
glClear(GL_COLOR_BUFFER_BIT);
// you probably also want to clear the depth and stencil buffers
// glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
m_Input.Draw();
QGLWidget::swapBuffers();
}
当然,您必须确保 m_Input.Draw()
不会再把事情搞砸了。你没有显示代码,所以我在这里盲目。
关于c++ - QGLWidget 忽略 glClear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20437595/
Apple's Technical Q&A on addressing flickering (QA1650)包括以下段落。 (强调我的。) 您必须为屏幕上的每个像素提供一种颜色。在绘图代码开始时,最
我在 iPhone openGL ES 项目中使用多重采样。仅使用 glClear 命令即可使渲染器利用率上升至近 42%。这是应该的方式还是我做错了什么?我使用 iPod Touch 第 4 代进行
出于某种原因,我正在尝试创建一个旋转的立方体 bur,我在 OpenGL 中清除屏幕时遇到了问题。我将 OpenGL 与 SDL2 一起使用来创建窗口并将内容渲染到窗口,但我不确定为什么它不起作用。
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我看到了不同的意见。 目前,我只关心颜色数据。 在 Chapter 28. Graphics Pipeline Performance , 它说: Avoid extraneous color-buf
每次打电话后glClear(GL_COLOR_BUFFER_BIT); ,我收到 OpenGL 错误“无效的帧缓冲区操作”。 通话似乎工作得很好,似乎没有任何问题。我打电话glClear(GL_COL
方法Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);花费了太多时间,大约15ms 这是代码示例: long now = System.currentTimeMilli
我被难住了。我在已配置为 openGL 小部件的 QT 4.6 应用程序的主窗口内有一个小部件。它画得很好,除了我无法清除帧之间的背景。当他的窗口打开时我得到一个黑色背景并且之后它永远不会清除,所以随
假设在下面的代码之前绘制了一些东西,下面的代码应该做什么? glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE); glClearColor(0.0,
这是我编写的一个简单的 opengl 程序。我试图在绘制三角形之前清除屏幕。我在我的 init() 函数中调用了 glClear(),但是,它似乎无法清除屏幕。 #include #include
在使用Opengl绘制场景图时,我看到总是有一个glClear(GL_DEPTH_BUFFER_BIT),这是做什么用的? 最佳答案 它清除深度缓冲区。深度缓冲区是帧缓冲区的一部分,它使图元被前面的其
在 Khronos OpenGL 2.1 Specs 中,他们说 glStencilMask 应该影响 glClear 的操作,但是,在我的机器上,这似乎不是真的。 我目前得到的输出是: Stenci
我有一个简单的 GLKViewController ,我将屏幕设置为白色: - (void)viewDidLoad { [super viewDidLoad]; self.contex
我正在尝试学习 OpenGL。我将 Clion 用作 IDE,它使用 CMakeLists.txt 文件来组织/编译项目。 由于某种原因,编译器找不到 glClear: Undefined symbo
我想深入了解 glClear 函数。我理解它的一般解释 -> 清除颜色、深度、模板和累积的缓冲区,但我还有其他问题。我的 friend 假设你清除了内存中代表颜色、深度、模板和累积的位(堆栈?)。通过
我最近从 https://github.com/fogleman/Craft 下载了 fogleman 出色的“Minecraft in 500 lines”演示.我使用了 2to3 工具并手动更正了
我想删除 glClear,这样我就可以为一个对象设置动画,当它在屏幕上移动时,它会显示动画图像,而如果我包含 glClear,则不会显示该图像。它在模拟器上可以运行,但是当我把它放在手机上时,它就可以
问题 当 QPainter 在 glClear 之后创建时,后者无效。 描述 我使用 Qt 5.7.1。我在 Linux 上使用 gcc 和在 Windows 上使用 vc++ 得到相同的结果。 我在
我的应用程序的填充率约为 30fps。我知道 GLES20.glClear() 用于清除每次绘制的屏幕。如果我评论它,我得到大约 60fps 的 fps。但是输出并不像预期的那样。我有一个内容要在每一
我正在 http://LearnOpenGL.com 学习这些 OpenGL 教程我遇到了这个函数glClear(here 在渲染标题)。因为我还在学习英语,所以我在这个功能中遇到了“清晰”世界的麻烦
我是一名优秀的程序员,十分优秀!