マルチプラットフォーム対応のOpenGLコードの第一歩です。
とりあえずmacでC++を使ってウィンドウを表示します。
各種OSで動作させるためにGLFWを利用します。GLFWはオープンソースのマルチプラットフォーム対応ライブラリで、Window表示やコンテキスト、入力イベントなどを扱えます。GLEWはOpenGL拡張を手軽に用いることができる便利ツールで、こちらも利用します。インストールしましょう。
brew install glfw
brew install glew
コードは以下の通りです。徹夜で書き上げました。解説?初めて利用するライブラリなので解説できるほどの知識は持っていません・・・
#include <iostream>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
using namespace std;
int main() {
// GLFW init
if (glfwInit() == GL_FALSE) {
cout << "failed to glfwInit" << endl;
return 1;
}
atexit(glfwTerminate);
// create window
GLFWwindow *const window(glfwCreateWindow(1200, 720, "GameInsWindow", NULL, NULL));
if (NULL == window) {
cout << "failed to create window" << endl;
return 1;
}
// OpenGL 4.1
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);
// make context
glfwMakeContextCurrent(window);
glfwSwapInterval(1);
// GLEW init
if (GLEW_OK != glewInit()) {
cout << "failed to glewInit" << endl;
return -1;
}
// clear
glClearColor(0.0f, 0.5f, 0.0f, 1.0f);
while (glfwWindowShouldClose(window) == GL_FALSE) {
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
return 0;
}
コンパイルしましょう。IDE?CMake?なにそれ美味しいの?
g++ Program.cpp -lglfw -lglew -framework OpenGL
とりあえずmacで動作することを確認しました。
明日はLinux(Ubuntu)や、EdgeやCortanaの利用を強制してくる邪悪なWindowsでも動作確認を行なっていきます。