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

Aktuelle Zeit: Do Jul 17, 2025 20:29

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



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Alpha-Blending beim Multitexturing
BeitragVerfasst: Fr Feb 04, 2011 20:37 
Offline
DGL Member

Registriert: Fr Feb 04, 2011 19:05
Beiträge: 13
Hallo,

ist es möglich eine SW-Bitmap zu erstellen, mit der beim Multitexturing bestimmt wird, wie Stark jedes Bild beim Überblenden gewertet wird? Ich meine dabei nicht, dass die Bitmap als Alpha-Wert des zweiten Bildes geladen wird (die Arbeit beim Integrieren müsste ja die CPU übernehmen), sondern dass drei Texturen (Textur 1+2 und die Alpha-Map) verwendet werden. Wenn dies geht kann mir bitte jemand erklären, wie dies geht?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Feb 04, 2011 21:04 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Am einfachsten (*) geht sowas per Fragmentshader.

=> Einen Überblick was Shader machen und was so möglich ist liefert der Shader Artikel.
=> den Einstieg liefert das GLSL Tutorial
=> ein paar fertige Shader findest du in der Shadersammlung

Dein Fragmentshader könnte z.B. so aussehen:

Code:
uniform sampler2D sTextur1;
uniform sampler2D sTextur2;
uniform sampler2D sAlpha;
 
void main() {
   // Texturen auslesen
   vec3 textur1 = texture2D(sTextur1, gl_TexCoord[0].xy).rgb;
   vec3 textur2 = texture2D(sTextur2, gl_TexCoord[0].xy).rgb;
   float alpha = texture2D(sAlpha, gl_TexCoord[1].xy).r; // nur den Roten-Kanal der Alpha-Map benutzen

   // Farben mischen
   vec3 color = alpha*textur1 + (1.0-alpha)*textur2;

   // in den Framebuffer schreiben
    gl_FragColor = vec4(color, 1.0);
}


Mit der gleichen Methode kannst du auch mehr Texturen kombinieren. Die Alpha-Textur kann ja in jedem Farbkanal einen Alpha-Kanal haben. Z.B. der Heightmap-Terrain-Shader in der Shadersammlung hat drei Texturlayer. (dieser spezielle Shader macht auch noch andere schöne Sachen...was hier aber unwichtig ist => nur Fragmentshader angucken ;) )

(*) ja wirklich!

Edit: Ich habe gerade deinen anderen Thread gesehen...es ist ratsam als Einsteiger im Einsteiger-Forum zu posten. Dafür ist der da, denn dann wissen die Leute woran sie sind und werfen dir vielleicht nicht gleich Shader an den Kopf ;)

Edit2:
Um es nochmal klar zu sagen: Shader sind für den Einsteiger wahrscheinlich recht komplex und schwer zu verstehen. ABER wenn du einmal deinen ersten Shader zum laufen bekommen hast und verstanden hast wie er funktioniert, dann wird alles viel einfacher! :) In neueren OpenGL-Versionen kommst du ohne Shader übrigens sowieso nicht mehr aus.

_________________
Yeah! :mrgreen:


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


Wer ist online?

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