繁体   English   中英

QGLWidget update(rect)始终绘制整个rect

[英]QGLWidget update(rect) always paints the entire rect

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

结果,在我的iPhone上绘图太迟了。

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

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

我认为,如果QGLWidget使用双缓冲,并且每次都要求您绘制一个不同的缓冲,这是可以预期的。

据我所知,脏直肠是一个通常不用于GL的概念。

代码的性能问题还可能是,每次在主存储器中更改它之后,每次绘制1024x1536 QImage时,都将其上载到图形存储器。 使用中间Q(Open)GLFramebufferObject可能会有所改进(尽管iPhone可能不支持使用GL_EXT_framebuffer_blit进行快速对齐)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM