Chini mi se da si krenuo malo tezim putem. Sto se tiche matematike, za pocetak ti treba analiticka geometrija u prostoru i neke osnovne stvari iz algebre, kao sto su matrice, determinante i slicno. Takodje neke osnovne stvari iz analize i numericke analize bi dosta pomogle, ali nisu toliko bitne za pocetak. Po mom misljenju, najvaznije za brzi start ti je da skapiras analiticku geometriju jako dobro i da uzmes neku zbirkicu i resis odredjeni broj zadataka iz iste. Takodje nauci osnovne stvari o matricama i determinantama. Ne moras da ulazis duboko u algebru, jer ce ti te osnovne stvari biti dovoljne za dosta toga u pocetku. Te stvari o kojima pricam mozes nauciti za dosta kratko vreme, a mnogo ce ti pomoci oko grafike.
Sto se tiche izbora knjiga, mislim da si tu napravio najvecu gresku. CG: Principles and practice je fenomenalna knjiga, ali je ja nikad ne bih preporucio nekom pocetniku da iz nje uci ovu materiju. Ta knjiga je vise za ljude koji vec imaju solidno znanje iz ove oblasti, da im posluzi kao referenca, da pogledaju formalnu postavku nekih problema ili da steknu uvid u neke detalje o kojima nisu razmisljali na taj nacin.
Druga knjiga koju si pomenuo je ako se ne varam od Eberly-ja. On je sjajan autor, svaka knjiga od njega koju sam chitao je odlicna, ali ni njega ne bih preporucio pocetnicima. On je jako precizan i vecinu stvari formalno objasni, sto pocetnicima moze stvoriti dosta problema jer se izgube u samoj notaciji koju koristi. Zato bih preporucio da preskocis njegove knjige u startu (3d Game Engine Design i 3d Game Engine architecture, od kojih je druga posebno dobra) i da im se vratis kroz neko vreme kada malo ovladas materijom. Na taj nacin ces iz tih knjiga izvuci najvise.
Moj savet ti je da nakon sto utrosis nesto malo vremena da ovladas analitickom geometrijom, pocnes da citas knjigu "Tricks of the 3D Game Programming Gurus-Advanced 3D Graphics and Rasterization". U toj knjizi imas jako dobro objasnjenu izgradnju softverskog 3d engine-a od nule. Na pocetku knjige imas i kraci kurs iz analiticke geometrije da se podsetis onoga sto ti je potrebno. Knjiga je velika, ima preko 1000 strana, ali se jako lako i brzo chita jer je pisana jednostavnim stilom. Bas onako savrseno za pocetnike.
Kad je procitas znaces mnogo toga o renderingu, i znaces kako bi i sam mogao da napises 3d engine, imaces ideju kako su implementirane stvari u GPU-ovima i slicno.
Posle te knjige ces jako lako da naucis neki graficki API kao sto su OpenGL ili Direct3D, jer dok budes citao knjige o njima znaces tacno sta se desava iza svakog poziva neke od funkcija API-ja :)
Onog trenutka kada procitas gore pomenutu knjigu, i kada posle toga naucis neki API (recimo OpenGl), to je trenutak kada bi se trebalo vratiti na Eberly-ja. Posebnoi na knjigu "3d Game Engine architecture", gde se govori o dizajnerskoj strani nekog 3d engine-a, tj. kako napraviti modularan engine koji se relativno lako koristi i unapredjuje. Dok citas tu knjigu bice ti potrebna sva znanja koja si prethodno naucio, a kada je procitas imaces ideju kako sam da napravis 3d engine koji moze da koristi bilo koji renderer (open gl, d3d, softverski renderer...). Takodje tada ces moci bez problema da citas source code od nekih otvorenih endzina, kao sto je OGRE recimo, i da taj nacin jos vise naucis o arhitekturi jednog grafickog engine-a.
p.s. Onako usput procitaj i neku knjigu o dizajn patternima (ima ih stvarno dosta, uzmi neku laksu za pocetak), kao i o praksama dobrog programiranja (npr. Code Complete). One nisu vezane direktno i iskljucivo za grafiku, ali ce ti dosta pomoci u programiranju :)
Q: Are there really any systems where
void main() doesn't work?
A: It has been reported that programs using void main() can crash.
Q: The book I've been using, _C Programing for the Compleat Idiot_,
always uses void main().
A: Perhaps its author counts himself among the target audience.