2013-05-01 26 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實現。

相關問題