ediepl Opublikowano 29 Stycznia 2013 Udostępnij Opublikowano 29 Stycznia 2013 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ć? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 29 Stycznia 2013 Udostępnij Opublikowano 29 Stycznia 2013 render texture Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 29 Stycznia 2013 Udostępnij Opublikowano 29 Stycznia 2013 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 Więcej opcji udostępniania...
ediepl Opublikowano 29 Stycznia 2013 Autor Udostępnij Opublikowano 29 Stycznia 2013 #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 Więcej opcji udostępniania...
Utermiko Opublikowano 29 Stycznia 2013 Udostępnij Opublikowano 29 Stycznia 2013 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 Więcej opcji udostępniania...
ediepl Opublikowano 29 Stycznia 2013 Autor Udostępnij Opublikowano 29 Stycznia 2013 To mam chyba pecha -_-, sprawdziłem też debug, to samo... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 29 Stycznia 2013 Udostępnij Opublikowano 29 Stycznia 2013 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 Więcej opcji udostępniania...
ediepl Opublikowano 29 Stycznia 2013 Autor Udostępnij Opublikowano 29 Stycznia 2013 @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 )? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 29 Stycznia 2013 Udostępnij Opublikowano 29 Stycznia 2013 @ediepl To dotyczy tylko jeśli używasz zintegrowanej karty graficznej Intela. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 29 Stycznia 2013 Udostępnij Opublikowano 29 Stycznia 2013 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 Więcej opcji udostępniania...
ediepl Opublikowano 29 Stycznia 2013 Autor Udostępnij Opublikowano 29 Stycznia 2013 To tym bardziej, ja mam nvidie więc to od czegoś innego zależy. @UP Co to sprite batch? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 29 Stycznia 2013 Udostępnij Opublikowano 29 Stycznia 2013 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 Więcej opcji udostępniania...
ediepl Opublikowano 29 Stycznia 2013 Autor Udostępnij Opublikowano 29 Stycznia 2013 Ogólnie to aż tak źle nie jest, na mapie składającej się z 1202 elementów fps mam +-300, jak rysuje tylko to co jest w zasięgu view'u. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę