2012-03-04 96 views
0

我一直在使用一些跨平臺的GUI庫(例如FLTK,wxWidgets,GTK ++),但是我覺得沒有一個滿足我的需求,因爲我想創建看起來相同的東西的平臺(我知道會有人反對構建GUI,在平臺上沒有本地外觀,但這不是問題)。 要建立我的控制,我通常依賴於由圖書館提供的基本形狀,讓我的方式結合在一起&編碼一切......跨平臺GUI - 呈現過程

所以我決定給它一個嘗試,爲2D GUI編程做一些OpenGL的(因爲它仍然是跨平臺的,考慮到這一點,我不禁會注意到,我使用wxWidgets & FLTK編寫的應用程序通常平均RAM消耗爲1/2MB,而非常基本的openGL窗口一個簡單的背景範圍從6到9 MB

這讓我回到這個線程的實際問題, 我認爲所有的屏幕渲染是使用opengl/direct(在t他涵蓋)。

有人可以請解釋或鏈接我的某種文章,可以讓我一些這些東西實際工作的見解?

感謝您的閱讀!

+0

[Qt](http://stackoverflow.com/tags/qt/info)也許?它不僅僅是一個框架,更是一種生活方式:) – 2012-03-04 17:26:59

+1

FLTK *不管平臺如何,看起來都一樣。您只需告訴它使用特定的方案,而不是特定於平臺的方案。 – 2012-03-04 17:39:39

回答

0

這些多平臺工具包通常支持相當多的繪製後端。儘管一些工具包支持OpenGL作爲其後端,但默認情況下通常是「本地」後端。

看看例如。在Qt。在Windows上,它使用GDI繪製其原生後端。在Linux上,我認爲它使用XRender。在Symbian和Mac上也是如此。 Qt也有自己的軟件光柵器。當然還有一個OpenGL後端。

那麼,爲什麼使用這些GUI工具包中的一部分的應用程序可能比簡單的OpenGL應用程序佔用更少的內存?如果工具包使用「本地」後端,則所有內容都已加載到內存中,因爲所有可見的GUI很可能使用相同的繪圖API。本地API也可以只使用一個代表整個屏幕的緩衝區,其中所有應用程序都可以繪製。

但是,在使用OpenGL時,您有自己的緩衝區,代表應用程序窗口。更不用說OpenGL應用程序通常有幾個幀緩衝區,比如z緩衝區,模板緩衝區,後臺緩衝區,這對2D繪圖來說不是必不可少的,但它們需要一些空間(儘管它可能是圖形卡內存的空間)。最後,在使用OpenGL時,有可能必要的庫尚未加載。

+0

非常感謝您的澄清! – user1248351 2012-03-04 18:30:18

0

你的問題是極其模糊但似乎你問你爲什麼你的GL應用程序佔用比基本的GUI窗口更多的內存。

這是因爲它是一個OpenGL應用程序。這意味着它必須存儲使OpenGL工作所需的所有機器。這意味着它需要大量的幀緩衝區:後臺緩衝區,z緩衝區等。它需要大量的樣板文件才能運行。

真的,我不會擔心它。這是每個應用程序都做的事情。