|
|
| 10. sor: |
10. sor: |
|
| |
|
| __TOC__ | | __TOC__ |
|
| |
| == FAQ (avagy a grafika listán a legtöbb levelet generáló "misztikus" hibák) ==
| |
| * Fordításkor ilyen hibát kapok: <code>error: stray '\357' in program...</code> - [[#AnchorBOM|UTF-8 BOM hiba]]
| |
| * Az osztást tartalmazó számításom rossz eredményt ad - [[#AnchorEgeszosztas|Egészosztási hiba]]
| |
| * A 3D-s kép zajos, az élek cikk-cakkosak - [[#AnchorZFighting|Z-Fighting]]
| |
| * Sugárkövetéskor a testen fura fekete részek jelennek meg - [[#AnchorOnarnyekolas|Önárnyékolás]]
| |
| * Sugárkövetéskor az egész képem fekete/fehér - [[#AnchorToneMap|Tone Map használata]]
| |
| * <code>glQuad</code> használatakor négyszög helyett két egymásba csúszott háromszög jelenik meg - [[#AnchorQUAD|QUAD]]
| |
|
| |
| ==Tipikus C++ hibák==
| |
| * Ha stabil C++ tudással rendelkezel, ezt a részt nyugodtan ugord át
| |
| <div id="AnchorBOM"></div>
| |
| * UTF8 BOM problémák:
| |
| ** Ha a kódodat UTF-8 kódolással mented, sok szerkesztő a fájl elejére biggyeszt három nem látható karaktert, az úgy nevezett UTF-8 Byte Order Mark-ot. Ez a Gordiuson fordítási hibát fog eredményezni, ezért a kódunkat feltöltés előtt mindenképpen konvertáljuk sima ASCII/ANSI szövegfájllá (Még a Jegyzettömb is képes erre, Mentés másként - ANSI)
| |
| * Lokális változók scope-on kívüli használata:
| |
| ** Figyeljünk rá hogy a lokális változók csak addig léteznek, amíg a scope-on belül járunk
| |
| ** Ennek megfelelően ne adjuk át őket cím szerint, ha mégis referenciát akarunk készíteni ilyen változóról, használjunk const referenciát!
| |
| <div id="AnchorEgeszosztas"></div>
| |
| * Egészosztás véletlen használata:
| |
| ** A C++-ban az operandusok típusától függ, hogy egészosztás (div) vagy rendes osztás történik
| |
| ** Ez a működés nehezen detektálható hibákat okozhat, ezért mindig figyeljünk rá! Például ha egész típusú változót osztunk egy számmal, az eredmény egész lesz, hiába akarjuk egy lebegőpontos változóban tárolni:
| |
| <pre>
| |
| int a=5;
| |
| float b=a/10; //értéke nem 0.5 lesz, hanem 0!
| |
| </pre>
| |
| ** A hiba elkerülése végett használjunk cast-olást vagy típusos konstansokat:
| |
| <pre>
| |
| float b=(float)a/10;
| |
| float b=a/10.0f;
| |
| </pre>
| |
| * Hiányzó '''break''' a '''switch''' szerkezetben
| |
| ** A C++-ban a switch szerkezetének egyszerre több ága is lefuthat! Ha ezt nem szeretnénk, figyeljünk rá hogy minden ágat zárjunk le a '''break;''' paranccsal!
| |
| * TODO: rossz konstruktor hívások
| |
|
| |
|
| |
|
| ==Az [[OpenGL]] és GLUT alapjai== | | ==Az [[OpenGL]] és GLUT alapjai== |
| 274. sor: |
240. sor: |
| ==3D extrák== | | ==3D extrák== |
| * TODO: fények, csillanás, textúrázás | | * TODO: fények, csillanás, textúrázás |
| | |
| | == Hibakezelés == |
|
| |
|
| -- [[BlackGhost|BlackGhost]] - 2011.04.05. | | -- [[BlackGhost|BlackGhost]] - 2011.04.05. |