Open GL Stencilbuffer

  • 0 Antworten
  • Letztes Antwortdatum
A

Andi0310

Neues Mitglied
0
Hallo.

Ich habe folgendes Problem.
Ich muss über OpenGL eine Insel im Wasser erstellen.
Diese soll sich aber nicht spiegeln sonder es soll an den Strandabschnitten der Boden unter Wasser noch sichtbar sein.
Ich habe mir folgendes überlegt.
1. Die Insel rendern.
2. Wasser unter Einbeziehung des DepthTests in den Stencilbuffer rendern.
3. Das Wasser mit allen Einstellungen dort wo der Stencil 1 ist in die Grafik rendern.
Code:
In SucrfaceCreate
glClearStencil(0);

DrawWasser()
{
...
...
glEnable(GL11.GL_STENCIL_TEST);
glColorMask(false,flase,false,false);
glStencilFunc(GL11.GL_ALWAYS,1,1);
glStencilOp(GL11.GL_ZERO,GL11.GL_ZERO,GL11.GL_REPLACE);
glDrawElements(GL11.GL_TRIANGLES,indices.length,GL11.GL_UNSIGNED_SHORT,indexbuffer);
...
glColorMask(true,true,true,true);
glStencilFunc(GL11.GL_EQUAL,1,1);
glStencilOp(GL11.GL_KEEP,GL11.GL_KEEP,GL11.GL_KEEP);
glDrawElements(GL11.GL_TRIANGLES,indices.length,GL11.GL_UNSIGNED_SHORT,indexbuffer);
...
}

Wegen der Transparenz des Wassers mus ich beim Finalrendern den DepthTest auschalten.
Jetzt zieht er mir aber das Wasser über die komplette Insel.

Habe ich beim Rendern mit DepthTest in den Stencilbuffer irgendetwas verkehrt gemach oder woran kann es liegen ?.

Das einzige was ich brauche sind die richtigen Einstellungen, dass dort wo beim ersten rendern in den Depthtest geschrieben wird in den Stencilbuffer 1 gesetzt wird und dann beim zweiten rendern nur dort gerendert wird wo Stencil =1.
Danke .
 

Ähnliche Themen

A
  • Andi0310
Antworten
5
Aufrufe
2.452
Jaiel
Jaiel
A
Antworten
0
Aufrufe
2.301
Andi0310
A
I
  • in3rtex
Antworten
0
Aufrufe
940
in3rtex
I
Zurück
Oben Unten