文章可轉載,轉載請注明出處:http://www.cnblogs.com/collectionne/p/6928612.html。文章未完,如果不在博客園(cnblogs)發現本文,請訪問前面的鏈接查看最新版。
GUI是什么
GUI是圖形用戶界面(graphical user interface)的意思,意思是采用圖形方式顯示的計算機操作用戶界面。
這里的寫GUI,指的是在屏幕上繪制控件(widget),並對這些控件進行管理。控件,大致就是像按鈕、文本框這些組成一個GUI程序的基本部件。(注:這一段如果有問題請提出意見!)
關於本教程
雖然這個教程系列是自己編寫GUI,但是其實已經有很多現成的GUI庫可用了,例如Qt、wxWidgets(看這里)。C++的標准庫是沒有提供GUI庫的,因此這些GUI庫都不是C++標准庫,而是第三方的。
竟然都已經有了這么多GUI庫,為什么還要自己寫呢?這源於我的個人經歷——之前我在用OpenGL編寫游戲,隨着游戲加入的內容越來越多,加入GUI也被提上日程。當時我對GUI庫不了解(甚至可能不知道,現在也是),況且似乎這種情況下也不能使用(能使用也不如自己寫),於是自己寫GUI。於是自己就去學習如何寫GUI。我最終實現了按鈕(也許還有標簽),但游戲也廢棄了。
有一個詞叫做“造輪子”,雖然已經有很好的成品了,但是自己嘗試寫寫也是不錯的,可能有些時候還必須這樣做。百度上關於自己寫GUI的文章也很少,於是我就打算自己寫一個GUI教程系列(使用C++、OpenGL),彌補百度資源的困乏。當然我自己也樂意分享自己的經驗。
最后,為方便,這個教程使用Legacy OpenGL。並不是說我跟不上時代,out了,只是為了簡單方便——我們的重點是實現GUI,因此不必在寫shader、設置VBO、VAO這些事上浪費時間。況且如果OpenGL水平足夠,完全可以自己將Legacy OpenGL代碼改寫成Modern OpenGL代碼。
