シーンの描画

描画処理はプログラムの描画ハンドラで行います.GLUTを使う場合はglutDisplayFuncで登録したコールバック関数がこれにあたり, またFrameworkモジュールのFWAppを使う場合はDisplay仮想関数がこれにあたります. 以下が典型的な描画処理です.

    render->ClearBuffer();        // clear back buffer
    render->BeginScene();         // begin rendering

    grScene->Render(render);      // render scene

    render->EndScene();           // end rendering
    render->SwapBuffers();        // swap buffers

ClearBufferは描画バッファを所定の色で塗りつぶします. 塗りつぶし色の取得/設定はGRRenderGetClearColor,SetClearColorを使います.

    render->SetClearColor(Vec4f(1.0f, 0.0f, 0.0f, 1.0f));
    render->ClearBuffer();        // clear back buffer in red

BeginSceneEndSceneはシーンの描画の前後で必ず呼び出します. SwapBuffersはフロントバッファとバックバッファを切り換えることで描画内容を画面上に表示します.

GRSceneRender関数は,カメラ(GRCamera)のRenderとワールドフレーム(GRFrame)のRenderを 順次呼び出します.まずカメラの描画によって視点と投影変換が設定され, 次にワールドフレームの描画によってシーングラフが再帰的に描画されます.