Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

SFML - oświetlenie

Ostatnio zmodyfikowano 2014-07-28 13:15
Autor Wiadomość
unkn9wn
» 2014-07-28 12:50:56
Nie jestem pewien czy dobrze zrozumiałeś, więc podaję trochę kodu

C/C++
sf::RenderTexture lightingTex;
lightingTex.create( 1024, 640 );
lightingTex.clear( sf::Color( 0, 0, 0, 0 ) );
lightingTex.draw( light, sf::BlendAdd ); // light - sprite, figura, cokolwiek sf::Drawable
lightingTex.display(); // wywołanie tekstury, zapieczętowanie

sf::Sprite lighting;
lighting.setTexture( lightingTex.getTexture() );

// ...

window.draw( lighting, sf::BlendMultiply );


Aby osiągnąć efekt znikającego światła, możesz np.:
zbudować trójkąt z wierzchołków i ustawić kolor światła dla każdego z wierzchołków.
Dzięki temu kolory się zleją wewnątrz.

Tak więc dla wierzchołka przy graczu, dałbyś jasność (ostatni parametr funkcji sf::Color()) na 255, dla pozostałych dwóch wierzchołków, oddalonych od gracza - 0

trójkąt z wierzchołków

C/C++
sf::VertexArray light( sf::Triangles, 3 );
light[ 0 ].texCoords = light[ 0 ].position = sf::Vector2f( 500, 300 ); // pozycja pierwszego wierzchołka
light[ 1 ].texCoords = light[ 1 ].position = sf::Vector2f( 700, 200 ); // drugiego
light[ 2 ].texCoords = light[ 2 ].position = sf::Vector2f( 700, 400 ); // i ostatniego
light[ 0 ].color = sf::Color( 255, 255, 255, 255 ); // pierwszy wierzchołek dostaje "pełny" kolor
light[ 1 ].color = light[ 2 ].color = sf::Color( 255, 255, 255, 0 ); // dwa oddalone wierzchołki dostają przezroczysty kolor
[ / code ]
P-114533
ggerek
Temat założony przez niniejszego użytkownika
» 2014-07-28 13:15:54
Dzięki, dokładnie o taki efekt mi chodziło :D

P-114540
1 « 2 »
Poprzednia strona Strona 2 z 2