Hey,
ich hab's einigermaßen so hin bekommen, wie ich das haben will. Resultate könnt ihr in ein paar Tagen begutachten^^ Jetzt hab ich aber noch ein kleines Problem, bei dem ich auch nicht recht weiter weiß. Es hat zwar nix mit Shadern zu tun, aber ich halte es für unnötig dafür jetzt nochma n extra Topic aufzumachen. Und zwar speicher ich ja die ModelviewProjection-Matrix des Lichts in der Textur-Matrix 7 zwischen, um diese dann im Shader für die Berechnungen zu benutzen. Wenn ich jetzt eine normale Matrixtransformation ausfüren will (zB ein Translate) dann muss ich diese auf die normale Modelview-Matrix und auf die Textur-Matrix 7 anwenden. Seltsamerweiße muss ich aber immer genau die hälfte der gewünschten Werte in der Textur-Matrix benutzen. Ich denke das liegt an dem bias, ich hab aber noch keine andere Möglichkeit gefunden, das zu realisieren.
Code: //Matrix des Lichts speichern mBias[maAxisX] := gluVector4f(0.5, 0.0, 0.0, 0.0); mBias[maAxisY] := gluVector4f(0.0, 0.5, 0.0, 0.0); mBias[maAxisZ] := gluVector4f(0.0, 0.0, 0.5, 0.0); mBias[maPos] := gluVector4f(0.5, 0.5, 0.5, 1.0); glGetFloatv(GL_MODELVIEW_MATRIX, @mMod[0,0]); glGetFloatv(GL_PROJECTION_MATRIX, @mPro[0,0]); glMatrixMode(GL_TEXTURE); glActiveTexture(aTextureUnit); glLoadIdentity; glLoadMatrixf(@mBias[0,0]); glMultMatrixf(@mPro[0,0]); glMultMatrixf(@mMod[0,0]); glActiveTexture(GL_TEXTURE0); glMatrixMode(GL_MODELVIEW); //Transformation glMatrixMode(GL_MODELVIEW); glTranslatef(0, -1.1, 0); glMatrixMode(GL_TEXTURE); glActiveTexture(GL_TEXTURE7); glTranslatef(0, -0.55, 0); glActiveTexture(GL_TEXTURE0); glMatrixMode(GL_MODELVIEW);
€: Ich hab gerade festgestellt, das der Fehler nur bei der Plane auftritt, auf dem die Objekte stehen, alle anderen Objekte kann ich normal transformieren...
MfG & Thx Bergmann.
|