最近很多人在問,我該如何學(xué)習(xí)OpenGL?我學(xué)完了OpenGL了,該怎么用?
我想在回答這些類似的問題以前先和大家談?wù)勗趺磳W(xué)習(xí)API的方法,或許談完了,我就不需要回答了?!?br>
首先,我認為API是工具,不是本質(zhì),OpenGL/Direct3D的本質(zhì)是圖形學(xué),而不是OpenGL/Direct3D的本身,API的本身只是一
些Interface而已.如果你明白圖形學(xué)的原理.那么你很容易這些接口的作用,以及為什么要有這些接口的存在.所以,我要說的第一點是:你要學(xué)習(xí)3D
編程,不是學(xué)會了OpenGL/Direct3D就可以了。甚至?xí)粫@些API都不是那么的重要(雖然這么說,或許很多人不太贊同).最重要的,最根本
的是,你要明白這些API背后的圖形學(xué)的原理---因為那才是根本中的根本.
下面我來介紹我對API學(xué)習(xí)的看法.
我認為API的學(xué)習(xí)有兩種方法:一是正向?qū)W習(xí).二是反向?qū)W習(xí).
一:正向?qū)W習(xí),所謂的正向?qū)W習(xí),就是學(xué)習(xí)API的本身.我覺得這種方法是一種Brute
Force行為.不是很好.我們只要看看API的特性,有那些部分.就可以了。比如學(xué)習(xí)Direct3D的時候,我們要知道它如何初始化,以及它和操作系
統(tǒng)的結(jié)合.它在Direct3D8里引入了VS/PS.最后就是創(chuàng)建一個Direct3D應(yīng)用的步驟和方法.這些就足夠了。要不然.Direct3D那么
多的函數(shù),每一個都會要了我的命.
正向?qū)W習(xí)的第二個作用就是你在熟悉了圖形學(xué)和大概了解了API后,有空就來看看API的細節(jié),然后思索一下API里提供的一些特性對你的程序有什么作用.
比如Direct3D里的Two Side Stencil.OpenGL里的TextureCombine等。
二:逆向?qū)W習(xí).這是根本的方法,到了這一步,你就可以真正的算是圖形學(xué)入門了。這要求你要有一定的圖形學(xué)基礎(chǔ).比如,你現(xiàn)在開始做一個demo.你預(yù)計你
的demo里有一堆眩眩的效果,當然你也要明白你的這些眩眩的效果要怎么實現(xiàn)的.然后你去找API里對應(yīng)的功能,我想如果你的想法正常,一般的功能在
Direct3D/OpenGL里應(yīng)該都會有的.當然你也會碰到你想要的功能在這些API里沒有,但是這不重要,重要的是你又學(xué)到新東西了---這個特性
在XX API里不支持^_^.
通常我是采用先正向,再逆向,同時再進行正向?qū)W習(xí)的方法.希望以上的建議,對各位初學(xué)者有一定的幫助.