openglの学習を開始するこのチュートリアルに続いて、次のソースコードがあります。
#include <stdio.h>
#include <stdlib.h>
#include <GL/glew.h>
#include <GL/glfw.h>
#include <glm/glm.hpp>
using namespace glm;
int
main(void){
if(!glfwInit())
{
fprintf( stderr, "Failed to initialize GLFW\n" );
return -1;
}
glfwOpenWindowHint(GLFW_FSAA_SAMPLES, 4); // 4x antialiasing
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3); // We want OpenGL 3.1
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 1);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); //We don't want the old OpenGL
// Open a window and create its OpenGL context
if(!glfwOpenWindow(1024, 768, 0,0,0,0, 32,0, GLFW_WINDOW))
{
int a = glfwOpenWindow(1024, 768, 0,0,0,0, 32,0, GLFW_WINDOW);
fprintf( stderr, "Failed to open GLFW window\n" );
glfwTerminate();
return 1;
}
}
これにより、常に「GLFWウィンドウを開くことができませんでした」というエラーが発生します。GLFW_OPENGL_VERSION_MINOR
ソースコードをダウンロードして、それがコンパイルされるかどうかを確認し、違いを変数に絞り込みました。
マイナーが2または3に設定されている場合、プログラムはコンパイルされて正常に実行されますが、1に設定されている場合は正常に実行されません。これはGLFWのバグですか、それともここで何か面白いことが起こっていますか?
glfwソースのwindow.cの487行目は次のように述べています。
if( wndconfig.glProfile &&
( wndconfig.glMajor < 3 || ( wndconfig.glMajor == 3 && wndconfig.glMinor < 2 ) ) )
{
// Context profiles are only defined for OpenGL version 3.2 and above
return GL_FALSE;
}
これが原因である場合(そしてそれがそうであるように見える)、これは正確には何を意味し、なぜウィンドウの作成を停止するのですか?