QGLWidget update(rect) 总是绘制整个矩形



我有一个简单的绘画应用程序,使用我调用update(rect)QGLWidget,传入一个比QGLWidget的矩形小得多的矩形。我用一个QImage画进去,然后在paintEvent中,我画了一部分到QGLWidget。当我在paintEvent方法上放置断点并调用event->rect()event->region().rects()时,它会返回QGLWidget的整个矩形。我本来希望它只返回传递给更新方法的矩形。

因此,在我的iPhone上绘图非常滞后。

这是我的代码:http://pastebin.com/beyyHCPw

如果您滚动到 pastebin 的底部,您将看到我的日志记录代码,我正在记录我绘制(绘制矩形)到哪个矩形,然后哪个矩形在绘制事件中返回(更新矩形)。

我认为如果

QGLWidget 使用双缓冲并且每次都要求您绘制不同的缓冲区,这是意料之中的。

据我所知,脏矩形是一个通常不会在 GL 中使用的概念。

代码的性能问题也可能是,每次在主内存中更改 1024x1536 QImage 的内容后,您都会将 1024x1536 QImage 的内容上传到图形内存。绘制到中间Q(Open)GLFramebufferObject可能是一个改进(尽管iPhone可能不支持使用GL_EXT_framebuffer_blit的快速块传输)。

相关内容

  • 没有找到相关文章

最新更新