Autor Wątek: [SOLVED] SDL 2 Problem z renderowaniem dwóch okien naraz  (Przeczytany 1607 razy)

Offline Dethas

  • Użytkownik

# Marzec 08, 2015, 17:02:41
Witam, postanowiłem zrobić program w którym na dwóch różnych oknach renderują się te same obiekty, problem polega na tym że tylko w jednym oknie się one chcą renderować, zauważyłem że
IMG_LoadTexture( SDL_Renderer *renderer, const char *file )
wymaga do pracy SDL_Renderer, tak samo też
SDL_RenderCopy( SDL_Renderer * renderer, SDL_Texture * texture, const SDL_Rect * srcrect, const SDL_Rect * dstrect);
wymaga SDL_Renderer. Pomyślałem że można podawać różne SDL_Renderer przez co w różnych oknach będzie renderowana tekstura, jednak tylko render z IMG_LoadTexture działa, dlaczego tak jest i jak można to obejść? Prosiłbym o pomoc, nie mogę znaleźć rozwiązania i tymczasowo ładuję grafikę dwa razy podając dwa różne konteksty renderowania, co nie jest zbyt dobrym rozwiązaniem.
« Ostatnia zmiana: Marzec 10, 2015, 16:03:29 wysłana przez Dethas »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline timus

  • Użytkownik

# Marzec 08, 2015, 18:46:33
Wczytaj jako SDL_Surface i potem przerob na texture dla obu rendererów z SDL_CreateTextureFromSurface, minus jest taki ze mamy 2 takie same tekstury w pamięci.

Offline Dethas

  • Użytkownik

# Marzec 08, 2015, 19:12:44
Rozumiem że innego sposobu na to nie ma?

Offline timus

  • Użytkownik

# Marzec 08, 2015, 19:48:47
Popatrzyłem trochę w kod SDL i żeby tekstura działa z rendererem to musi być przez niego stworzona w innym przypadku będzie wywoływać błąd "Texture was not created with this renderer" i przerywać rysowanie. A jako, że nie widzę żadnej funkcji do przerabiania tekstury na inny renderer, to o ile sobie takiej nie napiszesz, to nie widzę innego rozwiązania.

Offline Xirdus

  • Redaktor

# Marzec 08, 2015, 23:08:00
Problem polega na tym, że każdy Renderer tworzy osobny kontekst OpenGL (czy tam DirectX), a konteksty nie mogą współdzielić ze sobą tekstur (chyba że utworzy się kontekst w specjalny sposób, ale z tego co pamiętam często nie działa jak należy i lepiej nie współdzielić).

Offline Dethas

  • Użytkownik

# Marzec 09, 2015, 01:12:39
Dzięki za pomoc, w takim razie muszę jakoś inaczej sobie poradzić z tym problemem ;] wątek do zamknięcia.