對於 計算機圖形/界面/可視化/遊戲畫面/遊戲引擎 的疑惑?

最新更新:

最近剛完成了貪吃蛇,但界面暫時是用控制台的游標控制api+字元畫的,把與顯示相關的代碼都單獨從遊戲邏輯代碼里抽象出來了,這樣以後換界面應該會方便點。現在還在找入坑的門路,覺得Qt和圖形渲染都值得學習,只是該怎麼開始?c++有primer這麼好的書帶入門,Qt好像只能用官方文檔了?我個英語渣渣好辛苦......然後圖形方面就不知怎麼弄了,什麼三維模型當然就不知道是怎麼建立的了,有沒有好的書帶路呢?舍友有一本《計算機圖形學(第三版)》不知怎樣。

=============以下為原問題===================================

跟著大學課程走完了c++/數據結構,個人覺得c++是門挺不錯的語言,學校用一本很老的教材,我自己看c++ primer 5th但細節部分還沒完全看完,不過正常使用基本沒問題。這兩門雖成績很好但感覺自己仍然像個傻逼一樣都寫不出什麼東西沒有任何實際項目經驗。最近決定寫個貪吃蛇,但對可視化界面完全沒概念,因為之前一直寫控制台程序。我就把我已經百度get的羅列一下:

界面好像有QT,WPF(貌似需要c#?),MFC太老就排除吧,但這些是寫窗口的有按鈕等ui的?遊戲是一個窗口顯示各種絢麗的3d/2d圖像效果好像不是用這個寫的←_←,看到有個寫光線追蹤挺好挺真實的但那又是啥用啥去寫?!渲染器又是啥?又看到directx/opengl,好像說這是個底層api?唯一有過圖形接觸的是炮姐的ege但好像不值得深入,再說那些東西到底是怎樣在屏幕上畫出來的依然不懂,同學說在windows下要各種註冊窗口消息循環又是啥……遊戲引擎好像又是各種調用directx來方便開發者?看到大@vczh輪子哥推薦了direct2d但相關資料非常少全是direct3d。。。。

總之現在對整個計算機圖形/界面完全沒有概念,但很希望能入門,所以我下一部該怎麼做?


太心急,太焦慮,看到的東西太多,吃進去的太少。實踐太少。

Σ(????)?你提到的關鍵詞你潛下心去學任何一個都不會是現在這個狀態。

即使你學的是ege,抑或是已經被認為過時的MFC。

請點沒有幫助。

Σ(????)?順便推薦一下SDL,簡單傻瓜化易入門而且關鍵是——雖然簡單,但是很多遊戲都用到了。&以前整過一個未寫完的SDL教程自認為相當傻瓜化,為了防止誤人子弟我就不再貼鏈接了。&

&不要鄙視我,有異議請點沒有幫助。&

更新一下好了。這種問題我一般不敢打開話匣子,但一打開就收不住。

題主的問題之一在於從未接觸過任意C++的第三方庫/框架,而憑C++標準庫的那點東西一般人都做不出能「看」的應用的。所以我說,你提到的關鍵詞,你潛下心去學任何一個,都比現在強。

而我說題主太心急太焦慮的原因是,題主現在處於一種查了很多資料看了很多人的說法的狀態,其對各種框架的印象都是別人總結出來的,其本人甚至都未曾上過其官網,下載過它們的開發包吧?

這種情況下不要怪各路用戶跳出來鑽牛角一般地糾正你對這些框架的固有印象。

作為工作內容之一是用Qt做界面的人,我先來談一下Qt。

這個是Qt4.8的例子之一:

這個也是例子之一:

然後你還覺得Qt在開發遊戲方面是個沒人用的框架?

請點一下這個鏈接:http://blog.qt.io/blog/2014/07/21/google-labs-voltair-game-built-with-qt/

google開發的,使用了Qt。

上面的東西其實扯的有點遠,我意圖只是在向題主證明:Qt並非不能開發遊戲,你對你提到的那幾個框架的固有印象,其實都不一定是完全正確的。事實怎樣你自己看了才知道。

至於「看到有個寫光線追蹤挺好挺真實的但那又是啥用啥去寫」,對現在主流的比較好實現的光線追蹤演算法,要實現它,你全程只需要一個能往屏幕上畫點的API就夠了。為什麼?顯而易見的邏輯,你看到的都是屏幕上的像素而已。

以前有本很古老的書,《windows遊戲編程大師技巧》,那真是一本好書。作者事無巨細地講述了那個年代開發2D遊戲所需要的所有技術,雖然絮絮叨叨地講了些可能會用不到的但是其字裡行間溢出的作者對遊戲開發的熱愛卻無比振奮人心。書的作者講解遊戲開發的思路是對的。他首先給你了一個完整的小遊戲的代碼,讓你對遊戲的思路有個大致的理解,然後一點一點慢慢給你講如何創建窗口,什麼是像素,點陣圖文件都是什麼文件,甚至還有2D光柵化。。。

但是奈何現在而言,它描述用到的API(DDraw7)已經過時了。

但如果把書里的代碼用SDL替換掉,那本書我估計能降低25%的厚度,而且標題也可以把windows改成「2d」。內容也會更易學。

好吧我承認我在黑windows api。我覺得windows api對編程初學者而言是一套很難用的API,所有的初學者應該先繞過這個坑,去改用易學易用的SDL,等明白遊戲邏輯是怎麼回事以後,再學習類似於windows api的東西滿足其他的周邊需求。

舉個栗子:

在SDL里往屏幕上繪製一個hello world只需要這樣TwinklebearDev-Lessons/main.cpp at master · Twinklebear/TwinklebearDev-Lessons · GitHub

SDL里創建個窗口初始化個設備只需要兩行,換成windows你光創建個窗口填各種不必要的數據結構都幾十行了。簡單的API有助於初學者對遊戲編程有個大致的宏觀認識,複雜的API可能會打消初學者學習的積極性。

SDL的好處都有啥?跨平台。易學,兩天學會不是夢。易用。很多國外遊戲都在用它做跨平台遊戲中和系統API交互的中間層。

我今天就先寫到這裡了。。。題主提到的OpenGL和DirectX,我認為目前還不適合題主涉足。。。


cpp技能已get,mfc太老已排除,wpf要換語言,qt效果不太吊,dx/opengl沒看懂,那直接用這個好了--&>C++ 是否適合做 GUI? - 侯鐵的回答 這貨的samples里有個掃雷,正好你來個貪吃蛇。


我有個隨便寫的貪吃蛇 實現了自動尋路 效率比較低 供你參考

ibosong/snake · GitHub

用的是Windows8.1下基於DirectX的Windows Store應用

語言是C++,實際上Windows Store應用使用的是C++/CX,微軟擴展的C++,但是它完全兼容標準c++。參考這裡想學win8開發,有c++及mfc基礎,還需要學什麼? - 宋波的回答

你也可以學習Cocos2dx做遊戲,支持各種平台


推薦閱讀:

VS編寫C++程序,如何在一個工程裡面創建多個包含main函數的文件?
c++的单例模式为什么不直接全部使用static,而是非要实例化一个对象?
「Bjarne 為增加 C++ 程序員身價有意增加 C++ 難度」是否屬實?
這種寫法用意何在?
string和char數組的區別是什麼以及map可否設置key為char數組?

TAG:遊戲開發 | 圖形用戶界面 | OpenGL | C | DirectX |