2011-08-13 122 views
2

我目前正在開發一個程序來顯示和控制桌面上的動畫精靈。現在我的問題是將它們繪製到屏幕上。只要精靈不阻礙它,用戶仍然應該能夠訪問其他應用程序。在(桌面)屏幕上繪製形狀移動對象

我的嘗試在下面,我希望有人能指引我走向正確的方向。我並不關心我需要使用哪個庫,只要性能足夠滿足20-30個動畫精靈的需求。

我嘗試至今:

  1. 我第一次嘗試使用Qt。我用QWidget和QLabel來顯示對象的像素圖。像素本身有一個alpha通道,我使用QWidget的setMask(pixmap.mask())方法去除任何我不想顯示的東西,但是這種方法不能用於快速移動形狀,比如移動生物。如果setMask被調用所有的50-100ms來改變掩碼到下一個移動相位,那麼CPU負載會變得很高,同時有很多生物同時移動。

  2. 我的第二次嘗試是使用一個QWidget所有的生物,這樣setMask不是每次召喚一次,而是每次只能召喚一次,可以用這種方式移動更多的生物,但當鼠標指針移動到生物上時,屏幕會像地獄一樣閃爍。嘗試Xlib的XShape函數來改變每個生物的形狀,但表現並不比setMask好多少。

  3. 我試過Qt中的透明度,但是如果我在整個屏幕上使用QWidget,移動鼠標時X的CPU負載會變得非常高。我不知道,如果我能在這裏做更好的事情。

+1

你的整個問題可以用概括請嘗試修剪這段文字。我們不需要任何第一個子彈列表,你的程序的細節與實際問題無關。 – meagar

+0

你是對的文本牆。我是掛了我的問題,並認爲「更多信息的更好的人能理解我的問題」 – WkoD

回答

1

創建一個QGLWidget並學會使用OpenGL API在其中繪製精靈,即使只使用glDrawPixels而不是紋理對象。

你肯定不會有畫幾十精靈的任何問題,並花了學習的OpenGL的時間將是一個很好的投資,如果你渴望在未來進行更復雜的圖形化的東西。

+0

所以使用QGLWidget來,我將能夠吸引全國各地的臺式機和其它應用程序可用/點擊?你可能會給一些關鍵字(函數等),所以我可以搜索它們嗎? – WkoD

+0

我想你會創建QGLWidget Qt :: Desktop標誌傳遞給它的Qt :: WindowFlags參數。或者,也許與QDesktopWidget父它(或它的一個屏幕...多屏幕OpenGL可能會非常棘手)從獲得的QApplication ::桌面()。 – timday