CGSG/Workshop: Unterschied zwischen den Versionen
Pk (Diskussion | Beiträge) K →Kontakt: +Kat. |
Kyrah (Diskussion | Beiträge) Wiederholung Workshops? |
||
Zeile 3: | Zeile 3: | ||
== Aktuell == | == Aktuell == | ||
[[Benutzer:Kyrah|kyrah]] bietet an, die Einführungsworkshops im Herbst 2009 zu wiederholen - sofern daran Interesse besteht. | |||
Bitte unverbindlich eintragen, wer daran interessiert wäre: | |||
# ''your name here'' | |||
== Unterlagen == | == Unterlagen == | ||
Zeile 105: | Zeile 77: | ||
* [http://www.opengl.org/resources/faq/technical/projection_abuse.php Help stamp out GL_PROJECTION abuse]; mehr zum thema GL_PROJECTION / gluLookAt | * [http://www.opengl.org/resources/faq/technical/projection_abuse.php Help stamp out GL_PROJECTION abuse]; mehr zum thema GL_PROJECTION / gluLookAt | ||
* http://www.glprogramming.com/red/ - sehr praktischer guide | * http://www.glprogramming.com/red/ - sehr praktischer guide | ||
Einige wichtige Anmerkungen zu den letzten Workshops: | |||
=== Lichtquellen-Positionierung === | |||
Die Position einer Lichtquelle wird bekanntlich wie folgt angegeben: | |||
<code>GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; | |||
glLightfv(GL_LIGHT0, GL_POSITION, light_position);</code> | |||
Ich habe euch aber vorenthalten, was die vierte Komponente des Vektors ist. | |||
'''WICHTIG!''' Wenn diese 0 ist, wird nur die Richtung der Lichtquelle in den Berechnungen verwendet, nicht ihre Position ''("directional light")''. Wenn die Lichtquelle an einem bestimmten Punkt in der Szene positioniert sein soll, sollte die letzte Komponente "1" sein. | |||
Beispiel 1: Licht kommt aus der Richtung 1, 1, 1 (Position ist "unenendlich weit entfernt"). | |||
<code>GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 }; | |||
glLightfv(GL_LIGHT0, GL_POSITION, light_position);</code> | |||
Beispiel 2: Lichtquelle befindet sich am Punkt 0, 0, 0 (und scheint in alle Richtungen gleich stark). | |||
<code>GLfloat light_position[] = { 0.0, 0.0, 0.0, 1.0 }; | |||
glLightfv(GL_LIGHT0, GL_POSITION, light_position);</code> | |||
Siehe zb. Musterlösung [https://whatever.metalab.at/user/kyrah/opengl/workshops/ws3/solsys/solarsystem.cpp beleuchtetes Sonnensystem]. | |||
=== V-Sync === | |||
Anscheinend war meine Aussage, dass die Synchronisation mit dem Monitor-Refresh vom GL-Treiber automatisch aktiviert wird, etwas voreilig... und ihr müsst euch doch selbst darum kümmern. (Danke an [[Benutzer:Chrysn|chrysn]] fuer den Hinweis und die aktive Mitwirkung beim Testen!) | |||
Seit SDL 1.2.10 gibt es eine plattformunabhängige Möglichkeit, V-Sync zu aktivieren: | |||
<code>SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 1);</code> | |||
Achtung, dieser Aufruf muss *vor* SDL_SetVideoMode(...) passieren! | |||
''Leider scheint diese Funktionalität aber unter Linux mit ATI-Treiber nicht zu funktionieren... (?)'' | |||
== Kontakt == | == Kontakt == |