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

Aktuelle Zeit: Fr Jul 18, 2025 21:12

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: GL_CLAMP_TO_EDGE bei Skybox
BeitragVerfasst: So Okt 29, 2006 13:08 
Offline
DGL Member
Benutzeravatar

Registriert: Do Nov 17, 2005 14:40
Beiträge: 63
Wohnort: Dötlingen
hallo community,

ich habe mich heute an skyboxen versucht, und bin dabei leider auf ein problem gestoßen. an sich funktioniert alles ganz gut, aber an den kanten, wo die einzelnen quads der skybox aufeinandertreffen, entstehen immer hässliche fehler. im tutorial "skyboxen" löst sascha dieses problem indem er den TextureWrap auf GL_CLAMP_TO_EDGE setzt. ich schreiber aber in c++ und da scheint es diese konstante im glheader nicht zu geben. hat jemand eine idee wie ich trotzdem zu einem schönen ergebnis kommen kann?
Wenn ich als TextureWrap GL_REPEAT setze kommt es zu weißen, unregelmäßigen Streifen, benutze ich GL_CLAMP trennen schwarze linien die texturen, was bei einer skybox natürlich nicht erwünscht ist. mir ist auch aufgefallen, dass wenn ich die texturen mit GL_NEAREST filtere gar keine störungen an den kanten auftreten, allerdings sieht dann ja die ganze textur hässlich aus :? so solls ja auch nich sein... Bilder dazu im Anhang

Joshua


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 29, 2006 14:08 
Offline
DGL Member

Registriert: So Feb 19, 2006 23:46
Beiträge: 55
Um GL_CLAMP einzusetzen kannst du mir mal den border-Parameter von glTexImage2D anschauen.
Wenn du den auf 1 setzt, kannst du eine Farbe angeben auf die geclampt wird. Ich bin mir grad nicht sicher, aber es könnte sein dass du für den Rand die Textur entsprechend verkleinern musst um hinterher einen 2^n-Wert zu erhalten.
Diese Farbe übergibst du dann an die Textur mittels glTexParameter und der Konstanten GL_TEXTURE_BORDER_COLOR.

Edit: Mir fällt grad auf dass das dein Problem eigentlich nicht wirklich löst, wenn der Streifen ne andere Farbe bekommt. Ansonsten bin ich grad etwas ratlos.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 29, 2006 14:55 
Offline
DGL Member
Benutzeravatar

Registriert: Do Nov 17, 2005 14:40
Beiträge: 63
Wohnort: Dötlingen
das hilft leider nicht weiter. selbst wenn ich genau die himmelsfarbe treffen würde, ginge dann ein blauer streifen durch die wolken...
ich weiß ja selbst nicht was dieses GL_CLAMP_TO_EDGE macht, denn es funktioniert anscheinend nicht in c++. aber vielleicht heißt die konstante nur anders oder so...

ich hab mir mal die glBMP angeguckt und da kann man bei SetTextureWrap drei Konstanten als Parameter übergeben: GL_REPEAT, GL_CLAMP und GL_CLAMP_TO_EDGE. GL_REPEAT und GL_CLAMP funktionieren bei mir auch, nur das benötigte GL_CLAMP_TO_EDGE ist unbekannt...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 29, 2006 15:18 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 26, 2002 22:12
Beiträge: 259
Wohnort: Dresden
GL_CLAMP_TO_EDGE ist doch nichts weiter als eine Konstante. Vielleicht ist sie in deinem Header einfach nicht definiert. Aber du kannst sie nachtragen. GL_CLAMP_TO_EDGE steht für den Wert 0x812F.

_________________
Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 29, 2006 15:24 
Offline
DGL Member
Benutzeravatar

Registriert: Do Nov 17, 2005 14:40
Beiträge: 63
Wohnort: Dötlingen
vielen dank, es geht und sieht herrlich aus :lol:
hätte nicht gedacht, dass das so einfach geht, aber wenn das so ist, dann werde ich meine glheader mal ein bisschen aufwerten, erstmal GL_BGR reinschreiben 8)

Joshua


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 29, 2006 16:03 
Offline
DGL Member

Registriert: So Feb 19, 2006 23:46
Beiträge: 55
Ich gluabe das Problem ist dass GL_CLAMP_TO_EDGE zu OpenGL 1.2 gehört und daher nicht im Standard-Header enthalten ist. Du musst also eventuell noch GL/glext.h einbinden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 29, 2006 16:55 
Offline
DGL Member
Benutzeravatar

Registriert: Do Nov 17, 2005 14:40
Beiträge: 63
Wohnort: Dötlingen
okay, danke, so geht das auch. jetzt weiß ich auch wo der ganze fehlende opengl-kram ist, diesen header hatte ich bisher noch gar nicht realisiert, weil ich ihn bisher auch noch nicht gebraucht habe :idea:

Joshua


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


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 3 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.008s | 16 Queries | GZIP : On ]