Hi Gernot
Bei dem Light fehlt mir irgendwie noch ein Parameter und zwar die Range!
Machbar oder nicht machbar?
Bzw. hast du nen Trick auf lager um das zu setzen? ;)
Das geht so nicht. Hmm... Evtl. das Licht ausschalten, wenn ein Objekt zu weit weg ist?
Also in manchen Programmiersprachen geht das aber !?
Wie machen die das dann, ist das ein DX Feature?
EDIT:
GL_CONSTANT_ATTENUATION & GL_LINEAR_ATTENUATION & GL_QUADRATIC_ATTENUATION
params enthält einen ganzzahligen oder Fließkommawert, welcher einen der drei Abschwächungsfaktoren repäsentiert.
Ganzzahlige Werte und Fließkommazahlen werden direkt übertragen. Es werden nur positive Werte akzeptiert.
Wenn die Lichtquelle ungerichtet ist, nimmt die Intensität der selbigen mit dem Reziprok (1/x) der Summe von:
Konstanter Anteil +
Linearer Anteil * Entfernung zwischen Licht und zu beleuchtenden Vertex +
Quadratischer Anteil * Quadrat der Entfernung
ab.
Die Vorgabewerte für die Abschwächungsfaktoren sind (1,0,0) mit der Folge, dass keine Abschwächung auftritt.
Quelle: http://wiki.delphigl.com/index.php/glLight
Das Lichtdämfungszeug könnte doch helfen oder nicht?
Ach so, ja das geht schon. Ich dachte an oder aus - quasi echt begrenzt.
Ich schau mal, was sich machen lässt.
Das wär Super!
Würde auch sofort eine Demo machen! ;)
Mit einer Lampe oder so :D
*Push* :good:
:D
glLightAttenuation(0, 1,.2,.08)
// Die Main function zumachen - falls nich schon eine Function d'rüber kommt, oder
// das in einer anderen Datei ist (dazu rate ich)
FUNCTION end_main_function:
ENDFUNCTION
INLINE
}; //namespace zumachen
// Funktion definieren
extern "C" void __stdcall glLightf(int, int, float);
// Globale Konstanten
#define GL_LIGHT0 0x4000
#define GL_CONSTANT_ATTENUATION 0x1207
#define GL_LINEAR_ATTENUATION 0x1208
#define GL_QUADRATIC_ATTENUATION 0x1209
// Namespace zumachen
namespace __GLBASIC__ {
ENDINLINE
FUNCTION glLightAttenuation: iLight, constant, linear, quadratic
INLINE
glLightf(GL_LIGHT0+iLight, GL_CONSTANT_ATTENUATION, constant);
glLightf(GL_LIGHT0+iLight, GL_LINEAR_ATTENUATION, linear);
glLightf(GL_LIGHT0+iLight, GL_QUADRATIC_ATTENUATION, quadratic);
ENDINLINE
ENDFUNCTION
hey geht super :D mann kanns Licht nun kleiner machen :D