„Számítógépes grafika házi feladat tutorial” változatai közötti eltérés

Rohamcsiga (vitalap | szerkesztései)
a Javítottam egy elírást.
Rohamcsiga (vitalap | szerkesztései)
Kiszedtem a hibakezelés részt, és átraktam egy másik lapra, ebből meg majd egy összefoglaló lesz.
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.