gl3w
gl3wは、OpenGL3/4のcore profileが提供する機能を手に入れるための最も簡単な方法。
以下のサイトから
https://github.com/skaslev/gl3w
ダウンロード
% git clone https://github.com/skaslev/gl3w.git
gl3wをテストする
% cd gl3w % ./gl3w_gen.py
すると、srcディレクトリにgl3w.cファイルが生成される。
% cd src % gcc -o test test.c gl3w.c -I../include -lglut
実行する。
% ./test
実行がうまくいくと、ランダム(randf)でチカチカする画面が表示される。
サンプル
#include <stdio.h>
#include <GL3/gl3w.h>
#include <GL/glut.h>
// ...
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);
glutInitWindowSize(width, height);
glutCreateWindow("cookie");
glutReshapeFunc(reshape);
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutSpecialFunc(special);
glutMouseFunc(mouse);
glutMotionFunc(motion);
if (gl3wInit()) {
fprintf(stderr, "failed to initialize OpenGL\n");
return -1;
}
if (!gl3wIsSupported(3, 2)) {
fprintf(stderr, "OpenGL 3.2 not supported\n");
return -1;
}
printf("OpenGL %s, GLSL %s\n", glGetString(GL_VERSION),
glGetString(GL_SHADING_LANGUAGE_VERSION));
// ...
glutMainLoop();
return 0;
}
メモ
現状Linuxの環境で動かそうとしたとき、原因不明のSegmentation Fault.が発生した。
原因は、gl3wInit()を呼ぶ前に、glGetString(GL_VERSION)を呼んだことだった。
glewと挙動が異なったため、少しハマってしまった。。
原因は、gl3wInit()を呼ぶ前に、glGetString(GL_VERSION)を呼んだことだった。
glewと挙動が異なったため、少しハマってしまった。。