ピクセルフォーマット〜はじめに

OpenGLの初期化の流れは下のようになります.

  • ピクセルフォーマット構造体にデータを入力する.
  • ピクセルフォーマット構造体のデータを確認する.
  • ピクセルフォーマット構造体を入力する.
  • レンダリングコンテキストを作成する.
  • ピクセルフォーマットとは、OSとOpenGLの橋渡しのようなものでOpenGL上での描画の細かい規則なんかを入力するものです.OSに対してのピクセルフォーマットの渡し方は関数名が違うくらいでほとんど同じ手順です.また,GLUTを使用する場合には,GLUTが勝手にやってくれるので非常に楽チンです.
    レンダリングコンテキストの扱いについては毎に微妙に違うのでここでは説明しません.ここではピクセルフォーマットとは何か?ということを説明します.
    すべての設定値に関しては言及しませんが,大まかなものについて説明します.
    C言語でのピクセルフォーマット構造体がこれです.

    static PIXELFORMATDESCRIPTOR pfd = {
    sizeof(PIXELFORMATDESCRIPTOR),      //この構造体のサイズ
    1,                                  //OpenGLバージョン
    PFD_DRAW_TO_WINDOW |                //ウィンドウスタイル
    PFD_SUPPORT_OpenGL |            //ウィンドウスタイル
    PFD_DOUBLEBUFFER,               //ウィンドウスタイル
    PFD_TYPE_RGBA,                      //RGBAカラー
    24,                                 //カラーバッファ・色数
    0, 0,                               //RGBAのビットとシフト設定
    0, 0,                               //G
    0, 0,                               //B
    0, 0,                               //A
    0,                                  //アキュムレーションバッファ
    0, 0, 0, 0,                         //RGBAアキュムレーションバッファ
    16,                                 //Zバッファ
    0,                                  //ステンシルバッファ
    0,                                  //使用しない
    PFD_MAIN_PLANE,                     //レイヤータイプ
    0,                                  //予約
    0, 0, 0                             //レイヤーマスクの設定・未使用
    };
    

    このピクセルフォーマットの中でも通常で設定するのは”ウィンドウスタイル”,”色設定”,”カラーバッファ”,”Zバッファ”が代表です.
     他の値に関して設定する必要はありません.ここで4種類の設定について言及します.
    .

    各要素について

    ウィンドウスタイル

    OpenGLをどう使用するか?といった設定になります.ここには各スタイルの”|”を使用して,論理和を代入します.
     PFD_DRAW_TO_WINDOWは,ウィンドウに直接描画するときに指定します.メモリに書き込むような特殊なとき以外は,このスタイルは指定します.
     PFD_SUPPORT_OpenGLは,OpenGLの命令をサポートするかどうかです.当然,サポートします.
     PFD_DOUBLEBUFFERは,アニメーションなどのCGを作るときに必要なダブルバッファを使用するかどうかです.静止画を主に描画するときはダブルバッファにしなくてもよいです.

    色設定

     ここではOpenGLで使用する色数を設定します.インデックスカラー,RGBカラー,RGBAカラーなどを定できます.ただし,インデックスカラーに関してはカラーインデックスを作成しなければならないので面倒くさいです.

    カラーバッファ

     ここでは上の”色設定”で指定したカラーを何ビットであらわすかということを設定します.

    デプスバッファ

     OpenGL上で3次元で物を描画するときに深さ情報を保持するためのバッファです.

    バッファの概念


     ここでバッファについて説明します.たとえば,RGBAカラーでカラーバッファを32bit,そしてデプスバッファを16bitにして,ピクセルフォーマットを設定するとひとつひとつの画面上のピクセルに48bitずつ,メモリが割り当てられることになります.このメモリがVRAMです. 
     実際のピクセルフォーマットはこんな概念になります.モニタのひとつひとつの画素に対して,赤,緑,青,α値のRGBAを保持し,あと3次元上での深さを示すデプスバッファのDepthです.
     こういった一連のOpenGLを扱うにあたって基礎的なことを設定するところがピクセルフォーマットです.具体的な設定方法,その他のレンダリングコンテキストの処理などについては各OSのコーディングのところで紹介します.
    -test -- [[sonson]] &new{2005-07-25 15:18:00 (月)};