最近很多人在問,我該如何學(xué)習(xí)OpenGL?我學(xué)完了OpenGL了,該怎么用?
創(chuàng)新互聯(lián)長期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為周口企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì),周口網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
我想在回答這些類似的問題以前先和大家談?wù)勗趺磳W(xué)習(xí)API的方法,或許談完了,我就不需要回答了。首先,我認(rèn)為API是工具,不是本質(zhì),OpenGL/Direct3D的本質(zhì)是圖形學(xué),而不是OpenGL/Direct3D的本身,API的本身只是一些Interface而已.如果你明白圖形學(xué)的原理.那么你很容易這些接口的作用,以及為什么要有這些接口的存在.所以,我要說的第一點(diǎn)是:你要學(xué)習(xí)3D編程,不是學(xué)會(huì)了OpenGL/Direct3D就可以了。甚至?xí)粫?huì)這些API都不是那么的重要(雖然這么說,或許很多人不太贊同).最重要的,最根本的是,你要明白這些API背后的圖形學(xué)的原理---因?yàn)槟遣攀歉局械母?
下面我來介紹我對(duì)API學(xué)習(xí)的看法.
我認(rèn)為API的學(xué)習(xí)有兩種方法:一是正向?qū)W習(xí).二是反向?qū)W習(xí).
一:正向?qū)W習(xí),所謂的正向?qū)W習(xí),就是學(xué)習(xí)API的本身.我覺得這種方法是一種Brute Force行為.不是很好.我們只要看看API的特性,有那些部分.就可以了。比如學(xué)習(xí)Direct3D的時(shí)候,我們要知道它如何初始化,以及它和操作系統(tǒng)的結(jié)合.它在Direct3D8里引入了VS/PS.最后就是創(chuàng)建一個(gè)Direct3D應(yīng)用的步驟和方法.這些就足夠了。要不然.Direct3D那么多的函數(shù),每一個(gè)都會(huì)要了我的命.
正向?qū)W習(xí)的第二個(gè)作用就是你在熟悉了圖形學(xué)和大概了解了API后,有空就來看看API的細(xì)節(jié),然后思索一下API里提供的一些特性對(duì)你的程序有什么作用.比如Direct3D里的Two Side Stencil.OpenGL里的TextureCombine等。
二:逆向?qū)W習(xí).這是根本的方法,到了這一步,你就可以真正的算是圖形學(xué)入門了。這要求你要有一定的圖形學(xué)基礎(chǔ).比如,你現(xiàn)在開始做一個(gè)demo.你預(yù)計(jì)你的demo里有一堆眩眩的效果,當(dāng)然你也要明白你的這些眩眩的效果要怎么實(shí)現(xiàn)的.然后你去找API里對(duì)應(yīng)的功能,我想如果你的想法正常,一般的功能在Direct3D/OpenGL里應(yīng)該都會(huì)有的.當(dāng)然你也會(huì)碰到你想要的功能在這些API里沒有,但是這不重要,重要的是你又學(xué)到新東西了---這個(gè)特性在XX API里不支持^_^.
通常我是采用先正向,再逆向,同時(shí)再進(jìn)行正向?qū)W習(xí)的方法.希望以上的建議,對(duì)各位初學(xué)者有一定的幫助.