Multi texturing und ZBuffer
-
Hallo,
ich habe mir eine kleine terrain geschrieben(opengl), die mir ein terrain in mehreren render passes rendert (grass, sand, ...). Aber irgendwie macht der ZBuffer Probleme:
Render ich die VertexBuffer von der "Rückseite" des Terrains, dann bekomme ich unschöne ZBuffer-Fehler. Bekomme die einfach nicht weg.
Wenn ich das Terrain render, setze ich den Depth-test auf GL_LEQUAL. und blending ist wegen multi texturing aktiviert.Gibt es da eine Möglichkeit wie man das problem umgehen kann?
-
Clipping-planes naeher zusammen schieben?
Warum renderst Du die "Rueckseite" ueberhaupt?
-
mach nen screenshoot, das zeigt doch am besten was das problem ist
(http://img99.imageshack.us/ )
-
Hab mal folgende 2 Screenshots raufgeladen:
http://www.tachyon-sound.de/temp/screen1.jpg zeigt das terrain mit anscheinend richtiger beleuchtung.
Bei http://www.tachyon-sound.de/temp/screen2.jpg habe ich nun das Licht an eine andere Stelle positioniert. Campera-Pos ist die selbe.
Hier sieht man deutlich die ZBuffer-Fehler.das könnte daran liegen: Um multitexturing zu nutzen muss ich die beleuchtung selbst berechnen. Die "lichtintensität" speichere ich in jedem Vertext (VertexColor: RGBA)
Ich habe aber nun festgestellt, dass lediglich der Wert im Alphakanal (der vertexdaten)einfluss auf die Beleuchtung hat. Die RGB-Werte ändern nichts.Edith: die Beleuchtung ist auf Screen1 (glaube ich) auch falsch, das sieht man aber dort nicht so deutlich (wie auf Screen2)
-
es sieht fuer mich ein wenig danach aus als haettest du den ersten pass auch mit alphablend gezeichnet ;).
entweder fuellst du erstmal den zbuffer (also das terrain komplett schwarz zeichnen) oder du zeichnest den ersten pass so, dass alle flaechen die nicht die texture fuer diesen pass erhalten sollen, schwarz werden (und zwar wirklich schwarz, und nicht nur schwarz weil sie gegen den hintergrund blenden, denn der kann ja eventuell schon eine andere farbe erhalten haben durch ein vorheriges dreieck)
was die beleuchtung angeht, haengt das beim normalen opengl davon ab was du in glTexEnv einstellst. modulate ist vermutlich das was du willst (texture*diffuse_vom_vertex).
-
danke dir, genau daran lag es.
der 1. pass wurde mit aktivem blending gerendert. das gab natürlich "zbuffer-fehler"