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

Aktuelle Zeit: So Mai 19, 2024 22:15

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Multitexturing glBlendFunc()
BeitragVerfasst: Di Jan 17, 2012 08:29 
Offline
DGL Member

Registriert: So Jan 15, 2012 23:14
Beiträge: 10
Wohnort: Köln
Programmiersprache: Java
Hey, ich hab nun nach langem hin und her es endlich hinbekommen, dass zwei Texturen angezeigt werden. Problem dabei ist jedoch, dass der Blend Effekt immer der gleiche ist. Sprich, ich kann mit glBlendFunc() kein Einfluss drauf nehmen. Ob die Methode da steht oder nicht oder auch egal mit welchen Parametern spielt keine Rolle. Das Ergebnis ist immer das Selbe.
Hat wer ne Idee woran es liegt?

Grüße

Code:
  1.         glEnable(GL_CULL_FACE);                        
  2.         glEnable(GL_TEXTURE_2D);
  3.         glShadeModel(GL_SMOOTH);
  4.         glClearColor(0, 0, 0, 0.5f);
  5.         glClearDepth(1.0);             
  6.         glEnable(GL_DEPTH_TEST);           
  7.         glDepthFunc(GL_LEQUAL);        
  8.         glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
  9.  
  10.         glViewport(0, 0, 800, 600);                        
  11.         glMatrixMode(GL_PROJECTION);
  12.         glLoadIdentity();
  13.         gluPerspective(45, 800 / 600, 0.1f, 1000);
  14.  
  15.         glMatrixMode(GL_MODELVIEW);
  16.         glLoadIdentity();
  17.  
  18.        
  19.         t1.bind();
  20.         t2.bind();
  21.          
  22.         while(!Display.isCloseRequested()){
  23.            
  24.             glClearColor(0,0,0,0);
  25.             glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  26.            
  27.             glLoadIdentity();
  28.             glTranslatef(0, 0 , -6f);
  29.            
  30.             //  Texturen vorbereiten
  31.             ARBMultitexture.glActiveTextureARB(ARBMultitexture.GL_TEXTURE0_ARB);
  32.             glEnable(GL_TEXTURE_2D);
  33.             glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);// Tex-Envroiment einstellen
  34.             glBindTexture(GL_TEXTURE_2D, t1.getTextureID());
  35.            
  36.             ARBMultitexture.glActiveTextureARB(ARBMultitexture.GL_TEXTURE1_ARB);
  37.             glEnable(GL_TEXTURE_2D);
  38.             glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);// Tex-Envroiment einstellen
  39.             glEnable(GL_BLEND);
  40.             glBlendFunc(GL_SRC_ALPHA,GL_ONE);
  41.             glBindTexture(GL_TEXTURE_2D, t2.getTextureID());
  42.              
  43.             glBegin(GL_QUADS);
  44.                
  45.                 ARBMultitexture.glMultiTexCoord2fARB(ARBMultitexture.GL_TEXTURE0_ARB, 0, 1);
  46.                 ARBMultitexture.glMultiTexCoord2fARB(ARBMultitexture.GL_TEXTURE1_ARB, 0, 1);
  47.                 glVertex3f(-1,-1,0);
  48.                
  49.                 ARBMultitexture.glMultiTexCoord2fARB(ARBMultitexture.GL_TEXTURE0_ARB, 1, 1);
  50.                 ARBMultitexture.glMultiTexCoord2fARB(ARBMultitexture.GL_TEXTURE1_ARB, 1, 1);
  51.                 glVertex3f(1,-1,0);
  52.                
  53.                 ARBMultitexture.glMultiTexCoord2fARB(ARBMultitexture.GL_TEXTURE0_ARB, 1, 0);
  54.                 ARBMultitexture.glMultiTexCoord2fARB(ARBMultitexture.GL_TEXTURE1_ARB, 1, 0);
  55.                 glVertex3f(1,1,0);
  56.                
  57.                 ARBMultitexture.glMultiTexCoord2fARB(ARBMultitexture.GL_TEXTURE0_ARB, 0, 0);
  58.                 ARBMultitexture.glMultiTexCoord2fARB(ARBMultitexture.GL_TEXTURE1_ARB, 0, 0);
  59.                 glVertex3f(-1,1,0);
  60.                
  61.             glEnd();
  62.                      
  63.            
  64.             Display.update();
  65.             Display.sync(60);
  66.         }


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Multitexturing glBlendFunc()
BeitragVerfasst: Di Jan 17, 2012 10:27 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Die Effekte der Verschiedenen BlendFunktionen von glBlendFunc sind im Wiki mit Bildern erklärt. Vielleicht hilft dir das.

Wenn du GL_ONE mit nimmst, dann blendest du nicht mehr wirklich, sondern nimmst die Quell bzw. Zielwerte zu 100%.

Außerdem gibt es noch eine Checkliste für Blendprobleme: Checkliste_Blending

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Multitexturing glBlendFunc()
BeitragVerfasst: Di Jan 17, 2012 14:17 
Offline
DGL Member

Registriert: So Jan 15, 2012 23:14
Beiträge: 10
Wohnort: Köln
Programmiersprache: Java
Hey, danke für die Antwort.

Ka, eigentlich sollte alles so stimmen mit der Check Liste, nur hab ich so wenig Ahnung, dass ich das auch nicht sicher sagen kann. Jedoch wurd mir in nem anderen Forum gesagt, das es wohl am

Code:
  1.             glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
  2.  


und man hier etwas ändern müsste.

Ich hab jedoch schon alles mögliche versucht dort einzusetzen. Nichts hat sich am Blendmodus geändert. Lediglich wenn ich die Reihenfolge der bindings ändere tut sich da was.

Momentan siehts so bei mir aus :/

Code:
  1. glEnable(GL_CULL_FACE);                        
  2.         glEnable(GL_TEXTURE_2D);
  3.         glShadeModel(GL_SMOOTH);
  4.         glClearColor(0, 0, 0, 0.5f);
  5.         glClearDepth(1.0);             
  6.         glEnable(GL_DEPTH_TEST);           
  7.         glDepthFunc(GL_LEQUAL);        
  8.         glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
  9.  
  10.         glViewport(0, 0, 800, 600);                        
  11.         glMatrixMode(GL_PROJECTION);
  12.         glLoadIdentity();
  13.         gluPerspective(45, 800 / 600, 0.1f, 1000);
  14.  
  15.         glMatrixMode(GL_MODELVIEW);
  16.         glLoadIdentity();
  17.  
  18.        
  19.  
  20.          
  21.         while(!Display.isCloseRequested()){
  22.            
  23.             glClearColor(0,0,0,0);
  24.             glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  25.            
  26.             glLoadIdentity();
  27.             glTranslatef(0, 0 , -6f);
  28.            
  29.             t1.bind();
  30.             t2.bind();
  31.  
  32.             //  Texturen vorbereiten
  33.             GL13.glActiveTexture(GL13.GL_TEXTURE0);
  34.             glEnable(GL_TEXTURE_2D);
  35.             glBindTexture(GL_TEXTURE_2D, t1.getTextureID());
  36.            
  37.             GL13.glActiveTexture(GL13.GL_TEXTURE1);
  38.             glEnable(GL_TEXTURE_2D);
  39.               glTexEnvi(GL_TEXTURE_ENV, GL13.GL_COMBINE_RGB, GL13.GL_INTERPOLATE);
  40.             glEnable(GL_BLEND);
  41.             //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  42.             glBindTexture(GL_TEXTURE_2D, t2.getTextureID());
  43.  
  44.              
  45.             glBegin(GL_QUADS);
  46.                
  47.                 GL13.glMultiTexCoord2f(GL13.GL_TEXTURE0, 0, 1);
  48.                 GL13.glMultiTexCoord2f(GL13.GL_TEXTURE1, 0, 1);
  49.                 glVertex3f(-1,-1,0);
  50.                
  51.                 GL13.glMultiTexCoord2f(GL13.GL_TEXTURE0, 1, 1);
  52.                 GL13.glMultiTexCoord2f(GL13.GL_TEXTURE1, 1, 1);
  53.                 glVertex3f(1,-1,0);
  54.                
  55.                 GL13.glMultiTexCoord2f(GL13.GL_TEXTURE0, 1, 0);
  56.                 GL13.glMultiTexCoord2f(GL13.GL_TEXTURE1, 1, 0);
  57.                 glVertex3f(1,1,0);
  58.                
  59.                 GL13.glMultiTexCoord2f(GL13.GL_TEXTURE0, 0, 0);
  60.                 GL13.glMultiTexCoord2f(GL13.GL_TEXTURE1, 0, 0);
  61.                 glVertex3f(-1,1,0);
  62.                
  63.             glEnd();


Grüße


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Multitexturing glBlendFunc()
BeitragVerfasst: Di Jan 17, 2012 14:52 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Das Blending hat mit Multitexturing nichts zu tun, das sind zwei verschiedene dinge.

Wenn du das ganze via Blending lösen möchtest mußt du das Quad (oder was auch immer du renderst) zwei mal rendern mit aktiviertem blending und der jeweils einen oder anderen textur.

Beim Multitexturing werden zwei oder mehrere texturen in einem Renderdurchgang gebunden, diese können dann aber nur über glTex* Funktionen in der art der überblendung beeinflusst werden.

Aya


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Multitexturing glBlendFunc()
BeitragVerfasst: Di Jan 17, 2012 15:31 
Offline
DGL Member

Registriert: So Jan 15, 2012 23:14
Beiträge: 10
Wohnort: Köln
Programmiersprache: Java
Ahhhh, danke. Das erklärt einiges! :o :o

Wenn die Texturen, die im Multirendering gerendert werden, dann nachträglich ja beinflusst werden können (Überblendung), ist es nicht das gleiche?

Zitat:
diese können dann aber nur über glTex* Funktionen in der art der überblendung beeinflusst werden.


Grüße!


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 » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 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.008s | 14 Queries | GZIP : On ]