標籤:

初學OpenGL 用的是OpenGL2.1加MFC 但是感覺好難啊!難度是兩方面的啊?

我想搞一個全屏的窗口用MFC 真心覺得MFC難。。簡直快跪了....又加上剛剛學OpenGL ..感覺難 怎麼辦?

有沒有簡單的方法搞一個窗口 我直接畫圖就行了 不要說GLUT..


當然如果非不用glut的話,還有一些可供選擇,比如glfw。不過感覺差別不大。

最簡單地搞個窗口畫,在Windows下你需要一坨代碼:

先RegisterClassEx註冊窗口類,準備一個WindowProc回調函數,然後CreateWindowEx,然後ShowWindow,接著wglCreateContext創建一個GL渲染環境,然後用while循環加GetMessage、TranslateMessage、DispatchMessage啟動消息循環。最後在WindowProc里處理WM_PAINT消息時使用GetDC獲取窗口DC句柄,再用wglMakeCurrent把剛才創建的渲染環境綁定到當前窗口,然後就可以愉快地用OpenGL繪圖了!!!!(對哦,如果渲染完了記得及時wglMakeCurrent(NULL, NULL);解綁。還有你的窗口resize消息,鍵盤消息,滑鼠消息也記得要處理)

是不是非常麻煩?所以上面這些麻煩並且無聊的操作就是glut, qt-opengl, glfw直接封裝好給你用的,如果不使用它們,自己重新來也可以,只不過並不會更簡單。

MFC下使用opengl比glut稍麻煩一些,你需要自己創建GL渲染環境並綁定,其他的窗口創建過程都是MFC給你做好的,然後還可以使用SDI/MDI等框架管理你的工程,減少重複的代碼。


上Qt..

=========

其實我用了QT還是想轉回GLUT,因為我做的是simulation,大部分時候輸入都是程序預設或者配置文件,交互只需要很簡單交互(旋轉視角,開始,暫停等). QT在計算步長較長的時候窗口容易出現不響應之類的問題.寫程序要同時編輯UI也是比較煩的.

初學我覺得OpenGL+GLUT其實還是比較好的選擇.


要是不想用glut,你可以用SDL,它同時提供GL上下文和輸入事件系統。


glfw


win32+glut+glew 要不要給你代碼?


網上搜索關鍵字「NEHE OPENGL」,應該是你想要的。


真不建議搞mfc,又臭又臟,換c#或者qt算了


試一下c# WinForm + opentk

上手容易 不過網上資料不多


首先要說明,搭建一個可運行OpenGL的環境並不容易!如果你遇到這種問題,請不要氣餒,不是你的問題,是其本身的複雜性。運行OpenGL 程序需要多方面的支持,顯卡和驅動假設沒問題,OpenGL運行還需要至少兩個庫,一個提供窗口環境,一個提供OpenGL profile載入,紅寶書是glut+flew,藍寶書是glfw+GL3w 而且還封裝成sb7,卧槽,我反正是醉了。這些環境相關的沒介紹清楚。

第二點,OpenGL的版本差異會導致你的程序可能運行不了!紅藍書最新版是基於最新OpenGL4.5,你的顯卡和驅動可能才到3.0,能運行才怪! 這也沒說清楚!

第三,我覺得應該先給一個OpenGL1.0的基本程序運行的例子,介紹清楚上面問題,再進一步學習才好!但是!沒有!

我覺得Linux簡單,而且學的透明,沒有IDE,完全命令行,你要是Linux下運行有問題可以私信我。Windows不要問。


推薦閱讀:

初學者學習opengl是用紅寶書好還是藍寶書好?
Nehe OpenGL 教程是否過時?
如何利用shader在文字上添加漸變陰影的效果?
這款遊戲中 主角被遮擋部分變成半透明的效果是如何實現的?
unity 最後一次drawcall 如何避免?

TAG:OpenGL | MFC |