środa, 25 sierpnia 2010

Pierwsza klasa - NScreen

Zaczniemy od czegoś prostego. Klasa obsługująca tworzenie głównej SDL_Surface(jak sama nazwa wskazuje - "powierzchnia". Mogą mieć różne rozmiary, od biedy można porównać z warstwami w programach graficznych. Za pomocą łączenia i przekształceń na nich tworzymy obraz widziany w oknie programu) i wyrzucania jej na ekran.
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