2013-05-01 28 views
0

我有一个从QGLWidget派生的图像显示小部件。我遇到的问题是这个小部件的初始创建需要超过3秒。这会在选择要查看的图像和看到窗口之间出现明显的延迟。任何人都可以告诉我是什么原因导致了这种大规模的延迟,并且我能以任何方式避免它?为什么我的qglwidget的子类需要3秒钟才能构建?

我已经简化我的代码于该例子:

class ImageDisplayTest : public QGLWidget 
{ 
Q_OBJECT 

public: 
    ImageDisplayTest(QWidget *parent = 0) 
      : QGLWidget(parent) 
    { 
      // empty constructor body 
    } 


protected: 
    virtual void initializeGL() {} 
    virtual void paintGL() {} 
    virtual void resizeGL(int width, int height) {} 
}; 

QElapsedTimer timer; 
qint64 time_ms; 
timer.start(); 
ImageDisplayTest* pTest1 = new ImageDisplayTest(); 
time_ms = timer.elapsed(); 

timer.restart(); 
ImageDisplayTest* pTest2 = new ImageDisplayTest(); 
time_ms = timer.elapsed(); 

timer.restart(); 
ImageDisplayTest* pTest3 = new ImageDisplayTest(); 
time_ms = timer.elapsed(); 

timer.restart(); 
ImageDisplayTest* pTest4 = new ImageDisplayTest(); 
time_ms = timer.elapsed(); 

实例pTest1是3200ms,并采取下一个3个项目的时间所需要的时间大约是950ms每。我正在使用Qt 4.7.4在Windows 7上运行,并使用Visual Studio 2012(快速版)进行编译和运行。为了比较,如果我从QWidget而不是QGLWidget派生,那么实例化所花费的时间会回到0毫秒(即太小而无法测量)。

回答

0

这是在您的平台上启动OpenGL实施所需的时间。在Qt 5中,在Windows Vista &上,您可以选择使用在DirectX上运行的OpenGL ES 2的捆绑ANGLE实现。

相关问题