2DXngine tutorial - Engine overview

Posted on Sat 28 October 2017 in 2DXngine • Tagged with 2DXngineTutorial, 2DXngine, gamedev

Hi everyone. This will be my first post in English, so I believe that it will be worst. I've made decision lately about that to make some simple 2DXngine tutorial. Writeing this in English language can reach bigger audience I believe. Let's start from the beginning. 2DXngine is my project …


Continue reading

PugiXML, czyli proste prasowanie XML w C/C++

Posted on Wed 11 October 2017 in C/C++ • Tagged with programming, Gamedev

Cześć. Jakiś czas temu stanąłem przed potrzebą wyboru jakiegoś rozwiązania do pracy z plikami XML. W C/C++ jest kilka bibliotek do obsługi XML'i:

  • TinyXML,
  • RapidXML,
  • LibXML2,
  • BoostXML,
  • PugiXML.

Jak pewnie można się domyślić po tytule, to mój wybór padł na bibliotekę pugixml. Wybrałem tak dlatego, że jej Api najbardziej …


Continue reading

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

Konfiguracja aplikacji za pomocą plików ini

Posted on Fri 21 July 2017 in C/C++ • Tagged with programming, Gamedev

Cześć. Dziś zajmiemy się konfiguracją aplikacji w C++. Temat przedstawię od strony mojego silnika 2DXngine. W przypadku C++ temat zewnętrznej konfiguracji nie jest tak oczywisty jak w przypadku C# i .NET, gdzie mamy pliki App i Web config. Taką konfiguracje w C++ możemy zapisać w plikach XML, ale jest to …


Continue reading

SDL_mixer, czyli szybka implementacja audio

Posted on Sun 09 July 2017 in Gamedev • Tagged with Gamedev

Prawdopodobnie każdy twórca gier chce, by jego gra powodowała większą immersję, dlatego też należałoby do niej dodać oprócz grafiki takżę dźwięk oraz muzykę. Ze względu na to, że 2DXngine używa SDL2 postanowiłem iść dalej tą drogą i do odczytywania wykorzystać plugin SDL_mixer. Jest to mała wtyczka do SDL2, która pozwala …


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