Skocz do zawartości

[SFML 2] Surface?


Rekomendowane odpowiedzi

Opublikowano

Czy jest w sfml odpowiednik surface z GM'a, ponieważ chciałbym sobie raz narysować statyczne elementy na nim, a następnie go wyświetlać, próbowałem z RenderTexture, ale jakoś nie udało mi się na tym rysować?

Opublikowano

render texture

Opublikowano
render texture

próbowałem z RenderTexture, ale jakoś nie udało mi się na tym rysować?

 

Rysować, czy wyświetlić tego co narysowałeś?

 

Najpierw rysujesz na RenderTexture, potem pobierasz teksturę przez getTexture(), tworzysz sprite z tego i wyświetlasz na RenderWindow.

Opublikowano

#include <SFML/Graphics.hpp>    


int main()
{
// Create a new render-window
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");

// Create a new render-texture
sf::RenderTexture texture;
if (!texture.create(500, 500))
     return -1;

sf::Texture txt;
txt.loadFromFile("rescures\\object1.png");
sf::Sprite spr(txt);
spr.setPosition(100,100);

while(window.isOpen())
{
    // Event processing
    // ...

    // Clear the whole texture with red color
    texture.clear(sf::Color::Red);

    // Draw stuff to the texture
    texture.draw(spr);  // sprite is a sf::Sprite

    // We're done drawing to the texture
    texture.display();

    // Now we start rendering to the window, clear it first
    window.clear();

    // Draw the texture
    sf::Sprite sprite(texture.getTexture());
    window.draw(sprite);

    // End the current frame and display its contents on screen
    window.display();
}
return 0;
}

Skopiowałem to ze strony SFML i wyświetla się tylko czerwony kwadrat 500x500(czyli te RenderTexture, ale tylko to) bez sprita.

EDIT: Nie ma to jak źle napisać przykład do dokumentacji... wystarczyło usunąć "texture.display();"

EDIT2: Tylko ten texture jest odwrócony do góry nogami.

Opublikowano

Właśnie sprawdzałem to, bo mi działało bez texture.display().

Nie kapnąłem się, że jest odwrócony do góry nogami, ale jak dałem texture.display() to dobrze zadziałało.

Używam wersji dla .NET, ale to chyba nie ma wielkiego znaczenia bo i tak korzysta z natywnych bibliotek.

Opublikowano

Piszą, że trzeba wywołać display dla RenderTexture - to odwraca oś Y - http://en.sfml-dev.org/forums/index.php?topic=10149

Napisz na forum SFML o tym bugu - w sumie to jeszcze wersja RC.

 

@EDIT http://en.sfml-dev.org/forums/index.php?topic=9630.msg65765

If you're on Windows, you can try to upgrade your Intel drivers to the latest version. Someone reported that it solved RenderTexture problems .
Opublikowano

@Utermiko: Dzięki za pomoc :) , a co do sterowników to nie ma na stronie intela.

A tak przy okazji, znacie jakieś sposoby optymalizacji w SFML lub ogólnie, bo mam ok 600 obrazków tła na mapie( więc statycznych )?

Opublikowano

modyfikacja źródeł i użycie sprite batch, lub wyświetlanei tylko tego, co faktycznie ma byc widoczne

Opublikowano

sprite batch to metoda wrzucania multum sprajtow o tej samej teksturze do jednego bufora wierzcholkow, przez co wszystkie je rysujesz za jednym drawcallem, a nie 600 razy

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...