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

Renderowanie dróg/ścieżek w grze

Ostatnio zmodyfikowano 2024-05-13 19:39
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
Renderowanie dróg/ścieżek w grze
» 2024-05-12 18:53:24
Witam. Potrzebuję dodać drogi / ścieżki w grze. Wpadłem na pomysł by renderować wiele razy grafikę przedstawiającą poszczególne kamyki i całkiem nieźle to wygląda, ale zdaje mi się, że wydajnościowo jest to nieoptymalna metoda. Co sądzisz o tym pomyśle  ?

Grafika z kamieniami

Wiele nałożonych na siebie grafik z kamieniami

prezentacja w grze
P-181059
DejaVu
» 2024-05-12 21:32:45
Póki działa wystarczająco dobrze to nie trać czasu na optymalizacje.
P-181060
pekfos
» 2024-05-12 22:01:12
O wydajności lepiej mówić przy kodzie, jeszcze lepiej mając pomiary czasu wykonania. Jeśli używasz do tego sf::Sprite, to wydajniej byłoby robić sf::VertexArray z sf::Quad. Ta rada aplikuje się wszędzie gdzie wyświetlasz wiele obiektów z jednej tekstury.
P-181061
tBane
Temat założony przez niniejszego użytkownika
» 2024-05-13 15:24:11
Mam coś takiego:

C/C++
#ifndef Paths_hpp
#define Paths_hpp

class Path
    : public GameObject
{
public:
   
   
Texture * texture;
   
sf::Sprite * sprite;
   
   
Path( string name, float radius, float height )
        :
GameObject( name, 0, 0, radius, height, false )
   
{ // name, x, y, radius, height, collision
       
type = gameObjectType::Path;
       
this->texture = getTexture( name );
       
sprite = new sf::Sprite();
       
sprite->setTexture( * texture->texture );
       
sprite->setOrigin( texture->cx, texture->cy );
   
}
   
   
Path( GameObject * object, float x, float y )
        :
GameObject( object, x, y )
   
{
       
type = gameObjectType::Path;
       
this->texture = getTexture( name );
       
sprite = new sf::Sprite();
       
sprite->setTexture( * texture->texture );
       
sprite->setOrigin( texture->cx, texture->cy );
   
}
   
   
~Path() { }
   
   
void update( float dt ) {
       
sprite->setPosition( x, y );
   
}
   
   
void render( sf::RenderWindow * window ) {
       
window->draw( * sprite );
   
}
}
;

std::vector < Path * > paths;

#endif
P-181062
pekfos
» 2024-05-13 19:36:52
C/C++
std::vector < Path * > paths;
Osobny kontener ma sens z punktu widzenia wydajności. Cała reszta nie. Ale jak DejaVu napisał, nie przejmuj się wydajnością dopóki nie jest problemem. Na niektóre rzeczy już zwracałem uwagę, wiec wyraźnie musisz się tego nauczyć na błędach.

Wpadłem na pomysł by renderować wiele razy grafikę przedstawiającą poszczególne kamyki i całkiem nieźle to wygląda
Dorzuciłbym losowo wybrane lustrzane odbicia i/lub obroty o 90n stopni, żeby niskim kosztem to trochę urozmaicić. Teraz miejscami grafiki się nieszczególnie dobrze układają. Poza tym te kamienie może powinny być mniejsze, bo będąc wielkości prawie głowy bohatera ta ścieżka wygląda bardziej jak przeszkoda.
P-181065
tBane
Temat założony przez niniejszego użytkownika
» 2024-05-13 19:39:48
Zobaczę co da się zrobić może faktycznie urozmaicic ścieżkę to dobre rozwiązanie :-)
P-181067
« 1 »
  Strona 1 z 1