Skip to content

Instantly share code, notes, and snippets.

@YukiSnowy
Last active March 20, 2025 07:38
Show Gist options
  • Select an option

  • Save YukiSnowy/06ad3adadd38484cb1377ea45152c1a6 to your computer and use it in GitHub Desktop.

Select an option

Save YukiSnowy/06ad3adadd38484cb1377ea45152c1a6 to your computer and use it in GitHub Desktop.

Revisions

  1. YukiSnowy revised this gist Oct 5, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion main.cpp
    Original file line number Diff line number Diff line change
    @@ -69,7 +69,7 @@ int main(int argc, char *argv[])
    SDL_Event event;
    SDL_Init(SDL_INIT_VIDEO);

    window = SDL_CreateWindow("new_world",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,800,600,SDL_WINDOW_RESIZABLE);
    window = SDL_CreateWindow("example SDL2 Direct3D9 application",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,800,600,SDL_WINDOW_RESIZABLE);
    renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);

    //IDirect3DDevice9* Direct3D_device = SDL_RenderGetD3D9Device(renderer);
  2. YukiSnowy revised this gist Oct 5, 2018. 1 changed file with 8 additions and 9 deletions.
    17 changes: 8 additions & 9 deletions main.cpp
    Original file line number Diff line number Diff line change
    @@ -67,27 +67,26 @@ int main(int argc, char *argv[])
    SDL_Window *window;
    SDL_Renderer *renderer;
    SDL_Event event;

    SDL_Init(SDL_INIT_VIDEO);
    SDL_Init(SDL_INIT_VIDEO);

    window = SDL_CreateWindow("new_world",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,800,600,SDL_WINDOW_RESIZABLE);
    renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
    window = SDL_CreateWindow("new_world",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,800,600,SDL_WINDOW_RESIZABLE);
    renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);

    //IDirect3DDevice9* Direct3D_device = SDL_RenderGetD3D9Device(renderer);
    d3ddev = SDL_RenderGetD3D9Device(renderer);
    //IDirect3DDevice9* Direct3D_device = SDL_RenderGetD3D9Device(renderer);
    d3ddev = SDL_RenderGetD3D9Device(renderer);

    init_graphics();
    init_graphics();

    while (true)
    {
    {
    SDL_PollEvent(&event);
    if (event.type == SDL_QUIT)
    {
    d3ddev->Release();
    break;
    }

    render_frame();
    render_frame();
    }

    SDL_DestroyRenderer(renderer);
  3. YukiSnowy created this gist Oct 5, 2018.
    99 changes: 99 additions & 0 deletions main.cpp
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,99 @@
    // g++ *.cpp -o d3d9 -lmingw32 -lSDL2main -lSDL2 -I/dxsdk/include -L/dxsdk/lib -DUNICODE -ld3d9 -ld3dx9
    // http://blog.fourthwoods.com/2011/08/11/setting-up-mingw-for-directx/
    // http://www.directxtutorial.com/Lesson.aspx?lessonid=9-4-4

    #include <iostream>
    using namespace std;

    #include <SDL2/SDL.h>

    #include <windows.h>
    #include <d3d9.h>
    #include <d3dx9.h>
    IDirect3DDevice9* d3ddev;
    LPDIRECT3DVERTEXBUFFER9 v_buffer = NULL;

    struct CUSTOMVERTEX {FLOAT X, Y, Z, RHW; DWORD COLOR;};
    #define CUSTOMFVF (D3DFVF_XYZRHW | D3DFVF_DIFFUSE)

    void init_graphics(void)
    {
    // create the vertices using the CUSTOMVERTEX struct
    CUSTOMVERTEX vertices[] =
    {
    { 400.0f, 62.5f, 0.5f, 1.0f, D3DCOLOR_XRGB(0, 0, 255), },
    { 650.0f, 500.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(0, 255, 0), },
    { 150.0f, 500.0f, 0.5f, 1.0f, D3DCOLOR_XRGB(255, 0, 0), },
    };

    // create a vertex buffer interface called v_buffer
    d3ddev->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX),
    0,
    CUSTOMFVF,
    D3DPOOL_MANAGED,
    &v_buffer,
    NULL);

    VOID* pVoid; // a void pointer

    // lock v_buffer and load the vertices into it
    v_buffer->Lock(0, 0, (void**)&pVoid, 0);
    memcpy(pVoid, vertices, sizeof(vertices));
    v_buffer->Unlock();
    }

    void render_frame(void)
    {
    d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);

    d3ddev->BeginScene();

    // select which vertex format we are using
    d3ddev->SetFVF(CUSTOMFVF);

    // select the vertex buffer to display
    d3ddev->SetStreamSource(0, v_buffer, 0, sizeof(CUSTOMVERTEX));

    // copy the vertex buffer to the back buffer
    d3ddev->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);

    d3ddev->EndScene();

    d3ddev->Present(NULL, NULL, NULL, NULL);
    }

    int main(int argc, char *argv[])
    {
    SDL_Window *window;
    SDL_Renderer *renderer;
    SDL_Event event;

    SDL_Init(SDL_INIT_VIDEO);

    window = SDL_CreateWindow("new_world",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,800,600,SDL_WINDOW_RESIZABLE);
    renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);

    //IDirect3DDevice9* Direct3D_device = SDL_RenderGetD3D9Device(renderer);
    d3ddev = SDL_RenderGetD3D9Device(renderer);

    init_graphics();

    while (true)
    {
    SDL_PollEvent(&event);
    if (event.type == SDL_QUIT)
    {
    d3ddev->Release();
    break;
    }

    render_frame();
    }

    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);

    SDL_Quit();

    return 0;
    }