Renderowanie 2D cześć 6: Tekst True Type Font

Posted on Sun 06 August 2017 in OpenGL • Tagged with Gamedev, OpenGL

Renderowanie tekstu jest nieco bardziej skomplikowane od wyświetlania prostych obrazków. Wyświetlanie tekstu możemy zrealizować na dwa sposoby:

  • renderowanie SpriteFontów,
  • renderowanie True Type Font.

Pierwszy sposób polega na wygenerowaniu sobie z pliku czcionki tekstury oraz pliku opisującego układ znaków na teksturze. Potem podczas renderowania wycinamy za pomocą tych danych odpowiednie obszary …


Continue reading

Renderowanie 2D cześć 5: Kamera

Posted on Sun 02 July 2017 in OpenGL • Tagged with Gamedev, OpenGL

Cześć. W poprzednich artykułach opisałem jak zaimplementowałem renderowanie 2D, dziś jeszcze jeden element dotyczący grafiki, czyli kamera 2D. Kamera jest elementem za pomocą, którego możemy manipulować viewport'em. Sam interfejs klasy kamery jest dość prosty:

class Camera
{
public:
    Camera(int viewportWidth, int viewportHeight);
    ~Camera();

    inline float get_rotation() const
    {
        return this->_rotation …

Continue reading

Renderowanie 2D część 4.2: Spritebatch

Posted on Wed 21 June 2017 in OpenGL • Tagged with Gamedev, OpenGL

Cześć. W poprzedniej części napisałem nieco o tym jak przebiega rysowanie a właściwie dokładanie elementów do narysowania. W tym artykule zajmiemy się dokładnie tym jak działa pipeline rysowania SpriteBatchem. Aby narysować jaką teksturę należy napisać taki oto kodzik:

this->_device->clear(Colors::black);
batch->begin(TextureWrap::REPEAT, TextureFilter::POINT_FILTER);

    batch …

Continue reading

Renderowanie 2D część 4.1: Spritebatch

Posted on Sun 18 June 2017 in OpenGL • Tagged with Gamedev, OpenGL

W poprzednich postach opisałem składowe potrzebne do napisania właściwego renderowania, dziś zajmiemy się właśnie Spritebatchem, który będzie służył w silniku 2DXngine do renderowania 2D. Zacznijmy jak zawsze od interfejsu klasy, którą będziemy omawiać:

enum FlipEffect
{
    NONE_FLIP,
    FLIP_HORIZONTAL,
    FLIP_VERTICAL,
};

enum SortMode
{
    NONE_SORT,
    FRONT_TO_BACK,
    BACK_TO_FRONT,
};

class SpriteBatch
{
public:
    SpriteBatch(GraphicDevice* device);
    ~SpriteBatch …

Continue reading

Renderowanie 2d część 3: Sampler State

Posted on Sun 11 June 2017 in OpenGL • Tagged with Gamedev, OpenGL

Sampler to dość nowa rzecz w OpenGL, dostępna od wersji 3.3. Jest to taki kontener, który pozwala na przechowywanie parametrów potrzeb renderowania tekstur. Jego ustawienia są wykorzystywane przez fragment shader. W poprzednich wersjach OpenGL ustawienia te trzeba było ustawiać w teksturze przez funkcje glTexParameteri(), ale w momencie kiedy mamy …


Continue reading

Renderowanie 2D część 2: Shadery

Posted on Sat 20 May 2017 in OpenGL • Tagged with DSP2017, Gamedev, OpenGL

Shadery to programy wykonywane podczas procesu renderowania OpenGL. Nie będę tu opisywał całego pipeline, ponieważ to byłby temat na cały osobny artykuł, więc wspomnę tylko, że dla renderowania 2D istotne jest wipięcie się w fazę vertex shadera i fragment shadera. Ten pierwszy opowiada za umiejscowienie naszego spritea w przestrzeni, jego …


Continue reading

Renderowanie 2D część 1: Tekstury

Posted on Wed 17 May 2017 in OpenGL • Tagged with DSP2017, Gamedev, OpenGL

Ostatnio udało mi się skończyć renderowanie w 2DXngine, chciałbym opisać jak działa zaimplementowane przeze mnie rozwiązanie. Zaczniemy od struktur danych, które są nam potrzebne aby działało renderowanie 2D. Jako pierwsze przyjrzymy się jak zaimplementować teksturę oraz jak ją wczytać z dysku, co nie do końca może być takie oczywiste w …


Continue reading