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

Aktuelle Zeit: Sa Jul 19, 2025 22:52

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 23, 2003 12:42 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 22, 2003 23:22
Beiträge: 10
Hi Board!

Also ich möchte in OpenGL gern zwei Quads mit je einer anderen Textur ineinander verschwimmen lassen...

Habs wie folgt probiert doch das Ergebnis ist ernüchternd. Die erste Textur wird zwar angezigt und nach rechtshin abgeblendet, die Zweite jedoch ist gar nicht zu sehen.... <_<

Code:
  1.  
  2.  
  3. MyTex:=TTextur.Create('terrain1.jpg');
  4. MyTex.Bind;
  5.  
  6.  &nbsp; &nbsp;glBegin(gl_Quads);
  7.  &nbsp; &nbsp; &nbsp; &nbsp;glColor4f(1,1,1,1);
  8.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(0,0);
  9.  &nbsp; &nbsp; &nbsp; &nbsp;glVertex3f(-1,-1,0);
  10.  
  11.  &nbsp; &nbsp; &nbsp; &nbsp;glColor4f(1,1,1,0);
  12.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(1,0);
  13.  &nbsp; &nbsp; &nbsp; &nbsp;glVertex3f(1,-1,0);
  14.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(1,1);
  15.  &nbsp; &nbsp; &nbsp; &nbsp;glvertex3f(1,1,0);
  16.  
  17.  &nbsp; &nbsp; &nbsp; &nbsp;glColor4f(1,1,1,1);
  18.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(0,1);
  19.  &nbsp; &nbsp; &nbsp; &nbsp;glvertex3f(-1,1,0);
  20.  &nbsp; &nbsp;glEnd;
  21.  
  22.  &nbsp; &nbsp;glEnable(GL_BLEND);
  23.  &nbsp; &nbsp;glBlendFunc(GL_SRC_ALPHA,GL_ONE);
  24.  
  25. MyTex:=TTextur.Create('terrain2.jpg');
  26. MyTex.Bind;
  27.  
  28.  &nbsp; &nbsp;glBegin(gl_Quads);
  29.  &nbsp; &nbsp; &nbsp; &nbsp;glColor4f(1,1,1,0);
  30.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(0,0);
  31.  &nbsp; &nbsp; &nbsp; &nbsp;glVertex3f(-1,-1,0);
  32.  
  33.  &nbsp; &nbsp; &nbsp; &nbsp;glColor4f(1,1,1,1);
  34.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(1,0);
  35.  &nbsp; &nbsp; &nbsp; &nbsp;glVertex3f(1,-1,0);
  36.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(1,1);
  37.  &nbsp; &nbsp; &nbsp; &nbsp;glvertex3f(1,1,0);
  38.  
  39.  &nbsp; &nbsp; &nbsp; &nbsp;glColor4f(1,1,1,0);
  40.  &nbsp; &nbsp; &nbsp; &nbsp;glTexCoord2f(0,1);
  41.  &nbsp; &nbsp; &nbsp; &nbsp;glvertex3f(-1,1,0);
  42.  &nbsp; &nbsp;glEnd;
  43.  
  44.  


Screeni:

Bild

Was mache ich falsch? :unsure:

greetz
//me


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 23, 2003 12:57 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also als Erstes würde ich die beiden Texturen außerhalb deiner Renderschleife erstellen. Irgendwo im Initialisationsteil. Nachdem OpenGL erzeugt wurde. Und ich würde diese dann auch wieder Frei geben sobald sie nicht mehr benutzt werden.
Code:
  1. MyTex1 := TTextur.Create('terrain1.jpg');
  2. MyTex2 := TTextur.Create('terrain2.jpg');

Und am Ende. Also sobald du sie gar nicht mehr brauchst.
Code:
  1. MyTex1.Free;
  2. MyTex2.Free;

Dadurch, dass deine Quads genau übereinander liegen musst du als DepthFunc GL_LEQUAL verwenden. Bei GL_LOWER (standard) würde die zweite Fläche überhaupt nicht dargestellt werden.

Und wenn das dann immer noch nicht klappt dann scheint deine Blendfunc nicht so ganz zu stimmen. (Das bekomme ich irgendwie nur durch rumprobieren hin)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 23, 2003 18:34 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 22, 2003 23:22
Beiträge: 10
Aha... aber kuckma, das mit den Paramtern müsste iegtnlich hinhaun. Wenn du genau hinsiehst, wirst du sehen, dass ich die Alphawerte nutze um den Bildübergang zu erzeugen. ...

Nuja besten dank, ich probier 'mal aus, die Texturen auf deine Art zu initialisieren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 23, 2003 18:41 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ja das mit den Parametern rall ich nie!
Aber achte darauf, dass wenn du die Texturen erstellst, dass dein Renderkontext aktiviert ist. Sonst gehtes net.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 23, 2003 18:48 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Die Parameter mögen zwar stimmen, allerdings klappts wohl deshalb nicht, weil deine zwei Quads beide auf der gleichen Z-Position liegen, und dein zweites Quad so deshalb nicht gezeichnet wird weil der Z-Test nur Fragmente durchlässt, die näher am Betrachter sind (Teifentest = GL_LESS).

Deaktiviere deshalb mal das Schreiben in den Tiefenpuffer vor dem Zeichnen des ersten Quads mittels glDepthMask(False).Dann sollte dein zweites Quad eigentlich ordnungsgemäß über das erste geblendet werden.Alternativ kannst du den Tiefentest auch komplett deaktivieren.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 16 Queries | GZIP : On ]