WindowsでOpenGLES --- GLFW導入
下記の記事にてWIN32APIでOpenGLESを利用する方法を記述しました。
WindowsでOpenGLES --- ANGLE準備 - 何でもプログラミング
今回は、ウィンドウの作成やOpenGLESの初期化などをクロスプラットフォームに行ってくれるライブラリ、GLFWを導入してみたいと思います。
ダウンロード
下記ページより必要なdll(glfw3.dll)を取得します。(ソースをCMakeでビルドする方法でも問題ありません。)
GLFW - Download
GLFW初期化
OpenGLES3を有効化するために、いくつか設定を行います。
あとはglfwCreateWindowを呼ぶだけで、必要な初期化を全て行ってくれます。
#define GLFW_INCLUDE_ES3 #define GL_GLEXT_PROTOTYPES #include <GLFW\glfw3.h> #pragma comment(lib, "glfw3.lib") #pragma comment(lib, "libGLESv2.lib") assert(glfwInit()); glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API); glfwWindowHint(GLFW_CONTEXT_CREATION_API, GLFW_EGL_CONTEXT_API); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); GLFWwindow* window = glfwCreateWindow(300, 300, "GL Window", NULL, NULL); assert(window); glfwMakeContextCurrent(window);
Draw関数
ウィンドウを灰色に塗りつぶすだけの関数です。
void Draw(GLFWwindow* window) { glClearColor(0.5, 0.5, 0.5, 1); glClear(GL_COLOR_BUFFER_BIT); glfwSwapBuffers(window); }
Run
下記のようにイベントループを回します。
また再描画が必要な時にDrawを呼ぶよう、コールバックをアタッチしています。
実行すると灰色に塗りつぶされたウィンドウが表示されます。
glfwSetWindowRefreshCallback(window, Draw);
while (glfwWindowShouldClose(window) == GL_FALSE)
{
glfwWaitEvents();
}