以下の記事の、”チュートリアル1:ウィンドウを開く”
チュートリアル1:ウィンドウを開く | opengl-tutorial.org
でとりあえずウィンドウが開きました。
何も描画していないので、真っ黒なウィンドウです。
同時にglfwについて、もう少し調べてみました。
床井さんのページにglfwについてまとめた記事がありましたので、それを参考にしました。
床井研究室 - (1) GLFW で OpenGL を使う
大まかなプログラムは以下のような感じです。
#include <stdio.h> #include <stdlib.h> // Include GLEW #include <GL/glew.h> // Include GLFW #include <glfw3.h> GLFWwindow* window; int main(int argc, char *argv[]) { // Initialise GLFW if( !glfwInit() ) { fprintf( stderr, "Failed to initialize GLFW\n" ); return -1; } glfwWindowHint(GLFW_SAMPLES, 4); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // Open a window and create its OpenGL context window = glfwCreateWindow( 1024, 768, "Tutorial 02 - Red triangle", NULL, NULL); if( window == NULL ){ fprintf( stderr, "Failed to open GLFW window. If you have an Intel GPU, they are not 3.3 compatible. Try the 2.1 version of the tutorials.\n" ); glfwTerminate(); return -1; } glfwMakeContextCurrent(window); do{ // Clear the screen glClear( GL_COLOR_BUFFER_BIT ); // Draw the triangle // Swap buffers glfwSwapBuffers(window); glfwPollEvents(); } // Check if the ESC key was pressed or the window was closed while( glfwGetKey(window, GLFW_KEY_ESCAPE ) != GLFW_PRESS && glfwWindowShouldClose(window) == 0 ); // Close OpenGL window and terminate GLFW glfwTerminate(); return 0; }
glBegin, glEndは使いません。コールバック関数を使わず、do , whileでメインループを書きます。
gameコンソールと同じような書きかたです。
これにより、ユーザーは描画を制御、最適化しやすくなります。