Skocz do zawartości

[SFML 2] Surface?


ediepl

Rekomendowane odpowiedzi

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.

Odnośnik do komentarza
Udostępnij na innych stronach

#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.

Odnośnik do komentarza
Udostępnij na innych stronach

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.

Odnośnik do komentarza
Udostępnij na innych stronach

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 .
Odnośnik do komentarza
Udostępnij na innych stronach

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

Odnośnik do komentarza
Udostępnij na innych stronach

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

Odnośnik do komentarza
Udostępnij na innych stronach

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ę...