Przy okazji dorzuciłem define'a koloru, który będzie zamieniany na przezroczysty: jasnoniebieski.
/* graphics.h
* NScreen class
*/
#ifndef HGRAPHICS
#define HGRAPHICS
#include <SDL.h>
#include <assert.h>
#define COLOR_TRANSPARENT 0x00, 0xFF, 0xFF
class NScreen
{
public:
static SDL_Surface * Screen;
int Init(int width, int height);
void Flip();
};
#endif
Dzięki temu, że deklarujemy Screen jako static, każdy obiekt tej klasy będzie miał identyczny wskaźnik. Przydatne, gdy będziemy używać właściwości Screena w innych klasach. Wystarczy wtedy stworzyć nowy obiekt NScreena, wygrzebać potrzebne dane i go zniszczyć.
Przyjrzyjmy się funkcji Init:
int NScreen::Init(int width, int height)
{
NScreen::Screen = SDL_SetVideoMode (width, height, 32, SDL_SWSURFACE);
if (NScreen::Screen == NULL)
{
return -1;
}
else
{
return 0;
}
}
Kod jest prosty. Funkcja SDL_SetVideoMode ustawia bebechy SDLa i jednocześnie zwraca wskaźnik na SDL_Surface'a. Dwa pierwsze argumenty nie wymagają chyba komentarza. Trzeci argument to głębia obrazu - 32 bity na pixel. Czwarta określa, czy Surface ma być stworzony w pamięci RAM (wolniejsze wyrzucanie na ekran, szybsze operacje łączenia, przekształceń itd.) czy w pamięci karty graficznej (na odwrót).Następnie sprawdzamy, czy operacja się udała.
Brak komentarzy:
Prześlij komentarz