glfwとglutの比較

glfw2-glut.png

注意! この記事はGLFW Version2以前のものです。
GLFW3以降の生地はこちら

ディスプレイモードの初期化 glutInitDisplayMode(); glfwOpenWindowHint();
ウィンドウのサイズ設定 void glfwSetWindowSize( int width, int height ); glutInitWindowSize(int width,int height);
ウィンドウの位置 void glfwSetWindowPos( int x, int y ); glutInitWindowPosition( int x, int y);
バッファスワップ glfwSwapBuffers(); glutSwapBuffers();
ウィンドウタイトル glfwSetWindowTitle("The GLFW Window"); glutCreateWindow("volren");
終了 glfwTerminate(); glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,
GLUT_ACTION_GLUTMAINLOOP_RETURNS);
現在のウィンドウサイズの取得 glutGet(GLUT_WINDOW_WIDTH);
glutGet(GLUT_WINDOW_HEIGHT);
glfwGetWindowSize( int *width, int *height )

ウィンドウのリサイズ

このコールバックがメンバ関数でもいいかどうかが重要だわ。

glfwGetWindowSize(&x,&y);

int windowWidth, windowHeight;
void GLFWCALL myReshape( int _w, int _h)
{
windowWidth = _w;
windowHeight = _h;
printf("wiindowresize\n");
}
glfwSetWindowSizeCallback( myReshape);
//whileの外側に書く
static void myReshape(int _w, int _h){
    //射影変換行列
        glViewport (0, 0, (GLsizei) _w, (GLsizei) _h); 
        glMatrixMode (GL_PROJECTION);
        glLoadIdentity (); 
        gluPerspective(30.0, (float)_w / (float)_h, 1.0, 100.0);
        glMatrixMode (GL_MODELVIEW);
}
//main関数にて
glutReshapeFunc(myReshape);

キー入力

int glfwGetKey( GLFW_KEY_ESC );//引数にあたるキーがおされたかどうかを0か1かで返す。whileループに入れて使う。

文字列描画

glutBitmapString

なんと、フォントのレンダリングはできない!

glfwにないもの

glfwにないけど、便利だったものに関しては、freeglutと共存させてもいい

  • gluPerspective

サポートサイト Wikidot.com