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

Aktuelle Zeit: Do Jul 17, 2025 02:36

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mi Jun 13, 2007 14:04 
Offline
DGL Member

Registriert: Di Jun 12, 2007 10:11
Beiträge: 4
Wohnort: Münster
Hallo zusammen,

für einen Anfänger habe ich mir vielleicht zuviel zugemutet, obwohl das Problem eigentlich recht einfach zu beschreiben ist. Nur steigt man der Anzahl der Möglichkeiten und Feinheiten einfach nicht durch. Auch die Tutorials sind an den entscheidenden Stellen (und damit meine ich den Quelltext) nicht klar ausgeführt (Die Variablendeklarationen fehlen meist, so dass nicht klar wird, auf welche Klasse sich eine Methode eigentlich bezieht).

Ich stehe vor folgendem Problem (Anschluss an mein Posting von eben):

Der Betrachter steht in einer texturierten Kugel und kann sich umschauen. Klappt einwandfrei.
Die Textur der Kugel soll nun mit einer Maske belegt werden, die nur an einigen (in der Maske weiß gebliebenen) Stellen (Fragments?) mit einer zur Laufzeit einstellbaren Farbe überblendet werden soll.

Beispiel: Blick in einen Büroraum. Die im Originalbild hellen Schrankwände sollen einfärbbar sein. Die Maske für die zu färbenden Schrankwände liegen in einer 1 Bit Masken Bitmap vor (die Schrankwandpixel sind da komplett weiss, der Rest total schwarz).

Ich arbeite mit dem glBitmap Loader.
Nun habe ich das Maskenbitmap mit der AddAlphaFromFile Methode in die Textur geladen, nachdem ich zuvor das Hauptbild mit LoadFromFile geladen habe. (Anmerkung hierzu am Rande: Es wird nicht klar, ob man mit diesen Methoden AddAlphaFromFile, AddAlphaFromColorKey usw. eine Liste von Alphakanälen erweitert oder ob man überhaupt nur einen einzigen Alphakanal anlegen kann. Ein Blick in die Sources verrät, dass man nur einen Alphakanal anlegen kann)

Ich habe zuerst 10 von 1000 Blendmöglichkeiten (glblendfunc) ohne das korrekte Ergebnis ausprobiert. Dann habe ich mit glAlphaFunc und einigen Kombinationen der Parameter ohne Erfolg rumprobiert. Auch die Stencil-Funktion ist nicht evtl. nicht ganz das richtige. Auch klar ist mir nicht, an welcher Stelle im Code ich eine zur Renderzeit sich für die Schrankwände ändernde Farbe einfliessen lassen kann.

Leider steigt ein Anfänger nicht sofort durch, wo hier genau die Unterschiede sind bzw. kommt um ein Ausprobieren nicht herum. Bei der Anzahl der Möglichkeiten ist ein Volltreffer zu unwahrscheinlich. Die technischen Erklärungen zu der Funktion glblendfunc sind einem Einsteiger deutlich zu komplex.

Frage: Benötige ich evtl. für dieses Problem 2 Kugeln oder kann man dies geschickt mit einer Kugel und einem passenden Blendeffekt lösen ?

Hat mich jemand verstanden? :?

DANKE!

lg
Jays


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 13, 2007 14:51 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also eines mal vorweg. Bitte lass dich nicht dazu hinreißen alles auf Anhieb verstehen zu müssen. Es gibt immer noch genügend Stellen an denen ich rumprobiere. Und das obwohl ich das schon seit Jahren OpenGL programmiere. Aber gewisse Dinge konnte ich mir noch nie gut merken oder verdrehe sie ständig. Bis ich das System hinter glBlendFunc verstanden habe verging eine GANZE Weile. Aber zum Thema Blending schaut dir mal den Wiki artikel zu glBlendFunc an. ;)

Das mit AddAlphaFromFile, AddAlphaFromColorKey. Also ich muss gestehen es ist bisher noch niemand darauf gekommen, dass es sich um eine Liste handeln könnte. Add ist zwar auch typisch für Listen aber ich denke das ist nicht ganz so tragisch.

Nun aber zu deinem Problem. Was meinst du mit einfärben? Möchtest du die Schrankwände mit einer Farbe ersetzen oder sollen die Strukturen erhalten bleiben nur eben in einer anderen Farbe dargestellt werden?

Farbe ersetzen. Fülle deinen Hintergrund mit der entsprechenden Farbe glClearColor und zeichne deine Umwelt so, dass die passenden Stellen nicht mit gezeichnet werden. glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA); (keine Garantie. Siehe oben. ;) )

Falls du sie aber lediglich mit einer anderen Farbe zeichnen möchtest solltest du die Kugel wohl noch ein zweites mal zeichnen dann aber vorher die Farbe setzen und glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); zum Blenden benutzen. damit sollte nur das noch mal in der Farbe gezeichnet werden was du haben willst.

PS: Es gibt zwar noch den Weg über Shader aber das ist für Beginner nicht ratsam.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 13, 2007 17:20 
Offline
DGL Member

Registriert: Di Jun 12, 2007 10:11
Beiträge: 4
Wohnort: Münster
Hallo Lossy eX,

danke für Deine Antwort. Mit zwei Kugeln hat es tatsächlich geklappt. Danke!

Gruß
Jays


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 13, 2007 19:52 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Bitte bitte. Aber ich hoffe mal du weißt auch was da passiert ist bzw warum das jetzt so aussieht wie du es haben willst? Sollst ja schließlich auch was lernen. ;)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.007s | 16 Queries | GZIP : On ]