Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Öhm...angemeckert :unsure: ??Ich hab mal im Bezug auf Alpha-Masking erwähnt, das man einen Farbwert mittels Alphakanal nur sichtbar ODER unsichtbar machen kann und der Wert im Alphakanal nur als Referenzwert genutzt wird.Das war aber wie gesagt beim Alphamasking, und ich hab gesagt das man mittels Alphamasking nicht die Funktionalität von Blending ersetzen kann...
Beim Blending kann man (wie du ja grade rausgefunden hast) serwohl mittels Alphakanal die Transparenzstärke festlegen.
Also ich würde es wahrscheinlich auch über einen Textur-Trick machen:
1) Man zeichne den Effekt ohne Blending mit einem schwarzem Hintergrund in eine Textur (Render to Texture) 2) Man zeichnet die normale Szene 3) Man zeichnet ein Quad mit der Effekt-Tex drauf in die Gegend (Blendet es natürlich)
Ich glaube das war es auch, was die anderen oben meinsten... oder? *unsicher guck*
_________________ Es sind immer die guten, welche zu früh von uns gehen müssen... Meine bislang 13 Open Gl - Tuts findet ihr auf www.dcw-group.net Neu! Ein großer Teil der Demos nach Kylix übersetzt!
Hab das mit dme AlphaKanal grad mal getestet, schein zu funktionieren
kannst du mal bitte genau erklären wie du das mit dem AlphaKanal gemacht hast? Ich hab genau das gleiche Problem habs aber mit den AlphaKanal nicht hinbekommen. (Es funktioniert, sieht aber nicht mal ansatzweise so gut aus...)
Ich habe das Problem das ich immer extrem eckige Partikel habe. Ich habe halt die komplett Partikel Engine Programmiert und dabei immer nen schwarzen Hintergrund gehabt. Die ganze Engine ist voll darauf ausgelegt. Wenn ich es nun mit AlphaKanal und noch normalem Blending versuche dann sieht das ganze recht, naja... scheiße aus Eine Demo wie es mit schwarzen Hintergrund aussieht gibts auf meiner HP (<a href='http://www.billiberserker.host.sk/core.php?Sektion=Projekte&Show=OpenGL-Partikel%20Engine%20-%20Demo' target='_blank'>Partikel Engine Demo</a>). Einen Screenshot wie es jetzt aussieht poste ich nachher...
Ich hatte es schon mal noch besser hin bekommen, hatte jetzt aber keine Zeit das wieder alles halb umzucoden. Es hat auf jedenfall nicht mal ansatzweise die Qulität wie vorher
Ich glaube ich sollte es wirklich mal mit dem Textur Rendern versuchen.
jo, mein Problem ist dazu auch noch das meine Partikel Engine schon recht weit fortgeschritten ist und halt alles auf einander abgestimmt ist. Ich müßte fast alles komplett überarbeiten um es mit AlphaBlending ähnlich gut aussehen zu lassen...
wie macht man das genau mit den RenderToTexture? (habs noch nie benutzt) braucht das irgendwie mehr viel mehr Rechenleistung? Wie macht es am besten, rendert man den Partikel Effekt in voller größe auf die Textur und verkleinert die Textur dann, oder rendert man den Effekt schon passend zur Ansicht verkleinert?
Also wie Render2Texture funzt, kann man ja im DGl-Tut dazu nachlesen (Tutorials --> OpenGL-Einführung --> Renderpass)
Viel mehr leistung dürfte das kaum schlucken.... halt etwa die Leistung, die ein Quad mit einer Textur druf schluckt
Evtl. ist es sogar sparender, da man ja das ganze ja mit einer kleineren Auflösung (der Auflösung der Textur --> Antowrt auf Frage 2) rendert......
_________________ Es sind immer die guten, welche zu früh von uns gehen müssen... Meine bislang 13 Open Gl - Tuts findet ihr auf www.dcw-group.net Neu! Ein großer Teil der Demos nach Kylix übersetzt!
das eigentliche RenderToTexture funzt erstmal, aber - wie bekomme ich nun den schwarzen bereich weg? AlphaBlending funktioniert ja nicht da ich sonst jedesmal noch ne Alpha Textur generieren müßte... Gibt es für glBlendFunct eine Parameter Kombination so das alles schwarze weg genommen wird und sich der rest nicht mit irgendwas addiert/subtrahiert/etc. ... ?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Wieso erstellst du denn nicht einfach den Alphakanal für deine Textur wenn du schon gerade dabei bist dein Partikelsystem in eine Textur zu rendern?Besonders schwierig ist das ja nicht, da du doch direkt Alphawerte in den Framebuffer (der dann ja in die Textur kopiert wird) schreiben kannst.Du musst nur drauf achten, das du diese beim Kopieren des Framebufferinhaltes auch mit in die Textur übernimmst (GL_RGBA statt GL_RGB).
oh, na wenn es mehr nicht ist ich dachte ich muß noch irgendwie bei jedem durchgang extra ne neue AlphaTextur erstellen :rolleyes: werds gleich mal testen...
Warum überhaupt Render-to-Texture? Wenn man anhand der Stärke des Alphakanals addieren will, dann kann man doch auch glblendfunc(gl_src_alpha,gl_one) benutzen.
Bei Quake3 gibt es das Bild smoke.tga. Das wird für den Rauch der Raketen verwendet und ist ganz weiß. Nur im Alphakanal sind unterschiedliche Werte für den Rauch. Das ganze wird mit glblendfunc(gl_src_alpha, gl_one_minus_src_alpha) geblendet. Da das Bild weiß ist, bleibt die Farbe der Partikel von glcolor erhalten.
Mitglieder in diesem Forum: 0 Mitglieder 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.