Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

07.06.2012, 18:18

Ja, richtig verstanden. Wie sollte ich es sonst machen?

Sc4v

Alter Hase

Beiträge: 376

Beruf: Student

  • Private Nachricht senden

12

07.06.2012, 18:25

Wie sind denn die Alphawerte der beiden Texturen (Licht und Dunkelheit)?

Was spricht gegen eine richtige Beleuchtung?

13

07.06.2012, 18:27

Beide Alphawerte sind 150.
Was spricht gegen eine richtige Beleuchtung?
Du meinst von OpenGL Lichter?

Sc4v

Alter Hase

Beiträge: 376

Beruf: Student

  • Private Nachricht senden

14

07.06.2012, 18:34

Also ich weiß nicht wie die Texturen bei SFML aufgebaut sind, aber die haben glaube ich den Alphawert 0. Sollte ich nur eins blenden oder wie?
Dann verstehe ich die Aussage nicht wirklich, wenn doch beide Texturen laut dir einen Alphawert von 150 haben.
Du meinst von OpenGL Lichter?
z.B. ja

15

07.06.2012, 18:36

Zitat von »Delop«



Also ich weiß nicht wie die Texturen bei SFML aufgebaut sind, aber die haben glaube ich den Alphawert 0. Sollte ich nur eins blenden oder wie?

Dann verstehe ich die Aussage nicht wirklich, wenn doch beide Texturen laut dir einen Alphawert von 150 haben.
Die beiden Texturen haben auch den Alphawert 150, aber die Texturen, aus der die Welt besteht haben die Alphawerte 0.

Sc4v

Alter Hase

Beiträge: 376

Beruf: Student

  • Private Nachricht senden

16

07.06.2012, 18:38

Klappt denn das Blending mit der Dunkelheit wie gewünscht?

17

07.06.2012, 18:41

Ja, dass klappt.

So mache ich das:

C-/C++-Quelltext

1
2
3
glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    app.draw(darkness);

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

18

07.06.2012, 19:16

Zitat

Was spricht gegen eine richtige Beleuchtung?

Das er es nur 2D machen will und OpenGL Lichter da weniger flexibel und wesentlich langsamer sind.

So wie ich das verstanden haba, willst du ein Rechteck mit einer Runden Texture drauf zeichnen.
Es gäbe da eine wesentlich einfachere Lösung:
Du zeichnest mit TriangleFan & Sinus\Cosinus direkt einen Kreis und setzt passende Alphawerte.

Siehe Bild:


Der innere Vertex hat den Alphawert 1 und die äußeren Vertices haben den Alphawert 0.
Es ergibt sich dann ganz ohne Texturen ein wunderbarer Lichtkegel. (Nicht vergessen, die Texturierung evt. auszuschalten)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Spiele Programmierer« (07.06.2012, 19:21)


Sc4v

Alter Hase

Beiträge: 376

Beruf: Student

  • Private Nachricht senden

19

07.06.2012, 19:29

Das er es nur 2D machen will und OpenGL Lichter da weniger flexibel und wesentlich langsamer sind.

Okay das habe ich nicht gewusst ;)

20

07.06.2012, 19:34

Hab es versucht, aber der Kreis ist und bleibt aus irgendwelchen Gründen schwarz und von Alphawerte-Änderungen sehe ich leider auch nichts. Wo ist hier der Fehler?

PS: Mit glDisable(GL_TEXTURE_2D); wird alles weiß und nur der Kreis ist sichtbar

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    glBegin(GL_TRIANGLE_FAN);
    
    sf::Vector2f myPos;
    myPos.x = Spieler1->NewPosition.x + light.getGlobalBounds().width / 2;
    myPos.y = Spieler1->NewPosition.y + light.getGlobalBounds().height / 2;

    glColor4f(0.f, 0.f, 0.f, 1.f);
    glVertex2f(myPos.x, myPos.y);
    
    glColor4f(0.f, 0.f, 0.f, 1.f);
    for(float angle = 0; angle <= 360; angle++) {
        float degInRad = angle * DegtoRad;
        glVertex2f(myPos.x + std::cos(degInRad) * 50, myPos.y + std::sin(degInRad) * 50);
    }

    glEnd();

Werbeanzeige