SDL2 と OpenGL のラッパーライブラリです。 面倒な初期化やシェーダー管理を隠蔽し、少ないコードで 3D/2D 描画ができます。
- ヘッダオンリー —
EasyGL.hを1ファイル追加するだけ - シンプルな API — 初期化・モデル読み込み・描画がそれぞれ1行
- 3D 描画 — OBJ モデル読み込み、テクスチャ、カメラ、ライティング(複数ライト対応)
- 2D 描画 — 矩形、円、画像、テキスト(FreeType)
- C++17
EasyGL は単一のヘッダファイルのみ存在するシングルヘッダライブラリです。
EasyGL.h にはAPI宣言(ヘッダ部)と関数本体(実装部)の両方が含まれています。
// ── すべての .cpp ファイルで ──
#include "EasyGL.h" // 宣言だけが展開される
// ── プロジェクト内の *1つだけ* の .cpp ファイルで ──
#define EASYGL_IMPLEMENTATION // 実装コードの展開を有効化
#include "EasyGL.h"EASYGL_IMPLEMENTATION を定義すると、関数の実体や内蔵ライブラリ(GLAD・stb_image)の実装が展開されます。
複数の .cpp で定義するとリンク時に重複シンボルエラーになります。必ず1ファイルだけで定義してください。
Tip: 専用の
easygl_impl.cppを作り、そこでだけ#defineするのがおすすめです。// easygl_impl.cpp #define EASYGL_IMPLEMENTATION #include "EasyGL.h"
Ubuntu / Debian:
sudo apt-get install libsdl2-dev libfreetype-dev libassimp-dev libglm-dev以下のファイルとフォルダを指定の場所にコピーします。
EasyGL.h— メインヘッダファイルlibs/glm- 自分のプロジェクトのlibs/を作成して、そのままコピーしてください。
ディレクトリ構成:
your-project/
├── EasyGL.h
├── main.cpp
├── libs/
│ └── glm/ ← GLM ヘッダ群
コードを書く際にEASYGL_IMPLEMENTATIONを一度だけ定義してください。
#define EASYGL_IMPLEMENTATION以下は簡易的なサンプルです。 関数のリファレンスはAPI リファレンス を参照してください。
#define EASYGL_IMPLEMENTATION
#include <SDL2/SDL.h>
#include "EasyGL.h"
int main()
{
SDL_Init(SDL_INIT_VIDEO);
SDL_Window *window = SDL_CreateWindow(
"EasyGL Demo",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
800, 600, SDL_WINDOW_OPENGL
);
// 初期化
EasyGL gl;
EZ_Init(&gl, window, 800, 600);
// モデル・シェーダー・カメラ・ライトを作成
EZ_Object obj = EZ_CreateObject("assets/obj/model.obj", "assets/texture/texture.jpeg");
EZ_Shader shader = EZ_CreateShader();
EZ_Camera camera = EZ_CreateCamera(800.0f, 600.0f);
EZ_Light light = EZ_CreateLight();
// 描画ループ
bool running = true;
while (running)
{
EZ_BackgroundClear(22, 100, 100);
EZ_DrawObject(obj, shader, camera, light);
SDL_GL_SwapWindow(window);
SDL_Event event;
if (SDL_PollEvent(&event) && event.type == SDL_QUIT)
running = false;
}
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}g++ -std=c++17 -o demo main.cpp \
-I. -Ilibs \
$(pkg-config --cflags --libs sdl2 freetype2 SDL2_net assimp) \
-ldl
./demo| ライブラリ | ライセンス |
|---|---|
| GLAD | Public Domain / CC0 |
| stb_image | MIT / Public Domain |
| KHR Headers | MIT |
外部依存(別途インストールが必要): SDL2, SDL2_net, FreeType, Assimp, GLM