ページ

2014年6月12日木曜日

Cent OSでOpenGL 4 - XLib調査2 -

前回の続き・・

 cmap = XCreateColormap(dpy, root, vi->visual, AllocNone);
これは一体何をしているのか?

概要:カラーマップと色構造体の生成
引数:Display *         ・・・    Xサーバの接続を指定
            Window           ・・・    カラーマップを作るスクリーンに属するウィンドウ
            Visual *           ・・・    スクリーンがサポートするVisual 
            int                    ・・・     割当られるカラーマップのエントリー

XSetWindowAttributes    swa;

 swa.colormap = cmap;
 swa.event_mask = ExposureMask | KeyPressMask;

 win = XCreateWindow(dpy, root, 0, 0, 600, 600, 0, vi->depth, InputOutput, vi->visual, CWColormap | CWEventMask, &swa);
XCreateWindow

概要:ウィンドウの生成

 XMapWindow(dpy, win);
 XStoreName(dpy, win, "VERY SIMPLE APPLICATION”);

XMapWindow
   Xサーバーとウィンドウとのマッピング

XStoreName
  Window名の設定

ここからOpenGLの初期化
 glc = glXCreateContext(dpy, vi, NULL, GL_TRUE);
 glXMakeCurrent(dpy, win, glc);


 glEnable(GL_DEPTH_TEST); 

glXCreateContext

概要:GLXレンダリングコンテキストの作成
引数:Display* Xサーバー
            XVisualInfo* コンテキストが利用可能なフレームバッファリソースの定義
            GLXContext 共有するコンテキスト
            Bool レンダリングをグラフィックシステムと直接接続で行う(GL_TRUE)か
                      サーバー経由で行うか(GL_FALSE)

glXMakeCurrent

概要:GLXコンテキストをウィンドウ又はGLXピックスマップ(Bitmap)に割り当てる
引数:Display* Xサーバー
            GLXDrawable XウィンドウIDかGLXピックスマップID
            GLXContext コンテキスト

glEnable
概要:有効な描画方法を設定
参考:http://www.westernvillage.co.jp/openglprogram.htm

 while(1) {
        XNextEvent(dpy, &xev);

        if(xev.type == Expose) {
                XGetWindowAttributes(dpy, win, &gwa);
                glViewport(0, 0, gwa.width, gwa.height);
                DrawAQuad();
                glXSwapBuffers(dpy, win);
        }

        else if(xev.type == KeyPress) {
                glXMakeCurrent(dpy, None, NULL);
                glXDestroyContext(dpy, glc);
                XDestroyWindow(dpy, win);
                XCloseDisplay(dpy);
                exit(0);
        }
    } /* this closes while(1) { */

} /* this is the } which closes int main(int argc, char *argv[]) { */

XNextEvent
概要:イベントを型によって選択
参考:http://xjman.dsl.gr.jp/man/man3/XNextEvent.3x.html

XGetWindowAttributes
概要:ウィンドウの現在の属性を取得
参考:http://xjman.dsl.gr.jp/man/man3/XGetWindowAttributes.3x.html

glViewport
概要:ビューポートの設定
参考:http://wisdom.sakura.ne.jp/system/opengl/gl13.html

glXSwapBuffers
概要:ブッファの入れ替え
参考:http://manpages.ubuntu.com/manpages/gutsy/ja/man3/glXSwapBuffers.3x.html

0 件のコメント:

コメントを投稿