標籤:

openGL、vulkan求解惑?

各位知乎大大們,我最近準備學習opengl但是現在又出了個nextgl 官方稱為vulkan的東東,看了網上的一些介紹感覺很厲害,確實是nextgl! 那麼對於opengl盲來說想學習這方面的知識的話是需要先學習opengl呢?還是可以直接學習vulkan呢?這兩者之間對於學生來說是一種怎樣的關係,我有點懵求各位知乎大神指點迷津!


我說下哪些人不需要學 Vulkan

  • 大學生
  • 不懂 opengl 或 d3d 的程序員,別指望通過 Vulkan 學會圖形學,「你們這是自尋死路」
  • 用 cocos 和 unity 的程序員
  • iPhone、Mac 程序員,因為蘋果永遠不可能支持 Vulkan

  • Windows 程序員
  • Web 程序員
  • 非程序員

靠,說的好像沒人需要學 Vulkan……

匿了


Vulkan/D3D12和OpenGL/D3D11相比,就好像手動擋和自動擋。你如果對車毫無概念但要學車的話,自動擋比手動擋好入門得多。


相比不需要學的,需要的人很少:

- 打算支持vulkan的rendering engine/framework開發者;

- pc/mobile 顯卡驅動開發者;

- 不打算用framework而是直接用native api的應用開發者;

- 因os需要support的,如android aosp開發者;

- 愛好者。

上來就搞vulkan對GPU render原理,pipeline流程,圖形學,實際應用都沒有幫助。


16年的時候,這個問題的回答妥妥是老老實實openGL去,vulkan一個WSI和function loader就能整死你。

但是17年,vulkan cookbook都出了,再不學vulkan,等18年3D Portability Initiative響應的多了,就不用學了。。。

PS: 至於vulkan和openGL的學習,這倆倒是不衝突,就算直接學vulkan,ogl4.5的shader也不得不學,等一個vulkan的腳手架搭起來之後,vulkan差不多就是ogl4.5


API是浮雲,你更需要理解顯示管線的結構,數據的處理過程。各種API只是為了讓你操控這個過程而已。

你如果現在就從Vulkan入手,主要問題是連個可靠的實現都沒有。其實可以先用OpenGL ES3開始,比較精簡,除了幾何處理器,功能也齊全。


說一下不利條件,短期內vulkan資料會很少,支持的驅動也不會多。如果目前的你不是真的熟悉一款繪圖標準api,那麼可以推測你對圖形學的了解也不會深入,而這正是你真正需要了解的,那種圖形程序員的立身之本。所以請一定不要糾結什麼有前途,抓緊時間動起來,哪怕對著一個小項目,一個簡單教程,不管用D9/D11/OpenGL,一行行解釋給自己看。等真的入門了再做選擇,才會事半功倍。還有,繪製效率高不高,主要還是取決於你對gpu工作方式和圖形學演算法的理解程度,是工程經驗。類似賽車的性能和車手的經驗水平的關係。


學生請去學習DX9/11,GL和VULKAN是大坑和天坑的關係(笑)


初學者確實先學opengl吧,這方面的資料也多,vulkan的資料現在除了官網那點東西,還是比較少的。


推薦閱讀:

推薦閱讀Vulkan Spec
Vulkan中的heap/memory/buffer/image對象
超級瑪麗現已加入 Vulkan 豪華午餐
別笑,Vulkan 的官方中文名果然是這個
vulkan中的同步和緩存控制

TAG:OpenGL | Vulkan |