Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Mai 14, 2024 02:42

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Clipplanes und Shader
BeitragVerfasst: Fr Dez 30, 2011 13:46 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Ich habe momentan das Problem das die Clipplanes für die Spiegelung einer Wasseroberfläche bei mir nicht funktionieren.
Wenn ich das verwendete Shaderprogramm deaktiviere funktionieren sie aber komischerweiße. (Die Szene ist dann aber natürlich nicht mehr schön :wink: )

Mein Code: (Ist C# mit OpenTK, sollte aber trotzdem verständlich sein.)
Code:
  1.  
  2. ...
  3. GL.Translate(0.0, -50.0, 0.0);
  4. GL.Scale(1.0, -1.0, 1.0);
  5. double[] DblA = { 0.0d, -1.0d, 0.0d, -25.0d };
  6. GL.ClipPlane(ClipPlaneName.ClipPlane0, ref DblA[0]);
  7. GL.Enable(EnableCap.ClipPlane0);
  8. ParSys.Render();
  9. ...
  10.  


Warum wird Clipping deaktiviert, wenn ich Shader verwende?
Muss ich das jetzt selbst einen Clipping-Algo schreiben?
Wie müsste der dann funktionieren?
Mir ist auch kein Attribut bekannt, welches mir im Fragmentshader sagt ob eine Clipplane aktiv ist.

Ich hoffe ihr konnt mir hier ein wenig auf die Sprünge helfen. :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Clipplanes und Shader
BeitragVerfasst: Fr Dez 30, 2011 16:19 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Ich habe noch nicht mit Clipplanes gearbeitet. Allerdings gibt es im Vertexshader die Variable gl_ClipVertex. Ggf. musst du da "das richtige" reinschreiben. DGL-Wiki sagt:
Zitat:
Code:
  1. vec4 gl_ClipVertex kann geschrieben werden

Falls genutzt, sollten hier die Vertexkoordinaten die im Zusammenhang mit benutzerdefinierten Clippingplanes genutzt werden abgelegt werden. Wichtig ist, das gl_ClipVertex im selben Koordinatenraum wie die Clippingplane definiert ist.


Auf die Clipplanes hast du via Uniform Zugriff:
Code:
  1. vec4 gl_ClipPlane[gl_MaxClipPlanes]

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Clipplanes und Shader
BeitragVerfasst: Fr Dez 30, 2011 16:23 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Also einfach so?:
Code:
  1.  gl_ClipVertex=gl_ClipPlane[0]


Ich probiers gleich mal aus, kann mir aber irgendwie nicht vorstellen das das so funktionieren soll. :wink:

EDIT:
Und was wenn die ClipPlane deaktiviert ist, weil ich den sichtbaren Bereich über Wasser zeichne?
Ich kann ja nicht abfragen:
Code:
  1. if (gl_ClipPlane[0].Enable) {...}


EDIT2:
Ich habe das vorhin erwähnte "gl_ClipVertex=gl_ClipPlane[0]" jetzt mal in den VS gepackt.
Die Wirkung war gleich Null.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Clipplanes und Shader
BeitragVerfasst: Fr Dez 30, 2011 16:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Ich vermute du musst anhand der gegebenen Clipplanes selbst clippen und dann das Ergebnis raus schreiben. Kann dir da nicht helfen, mehr als googlen kann ich auch nicht. War nur ein Hint in die hoffentlich richtige Richtung.

Zum ein-/ausschalten des Clippings kannst du einen anderen Shader nehmen...oder ein eigenes Uniform benutzen.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Clipplanes und Shader
BeitragVerfasst: Fr Dez 30, 2011 16:45 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Versuch mal:
Code:
  1. gl_ClipVertex = gl_ModelViewMatrix*gl_Vertex;

Ich glaube das Clipping übernimmt doch die Hardware (hatte mich schon gewundert). Du musst der GraKa nur den Vertex im richtigen Koordinatensystem (eben dem in dem die Clipplanes sind) übergeben.

Habe das von hier:
http://www.opengl.org/discussion_boards ... Post232365

Das steht aber auch das es irgendwie Probleme mit Radeon-Karten gibt und wenn ich das beim querlesen richtig intepretiere: Auf ATI-Karten kannst du auch die Funktion ftransform() benutzen.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Clipplanes und Shader
BeitragVerfasst: Fr Dez 30, 2011 17:04 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Mit deinen Code funktionierts jetzt. :D

Besten dank. :)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.038s | 17 Queries | GZIP : On ]