Zaurus GA 3D Engine ライブラリマニュアル Copyright 1999-2000 小笠原博之 GA 3D Engine の本体です。 【関数マニュアル】 ●基本型 DVAL (signed int) ----------------------------------------------------------------------------- ライブラリの基本となる 32bit(16.16bit)固定少数値です。置数には DV(nn) を、DVAL 同士の乗算と除算にはそれぞれ GaMul()、GaDiv() を使う必要があ ります。加減算は普通に行うことができます。整数値への変換には IDV(n) マクロを使用してください。 [例] DVAL num= DV(123.45); // num= 123.45 DVAL pos= GaMul( num, DV(3.5) ) + DV(30); // pos= num*3.5+30 ----------------------------------------------------------------------------- DANG (signed int) ----------------------------------------------------------------------------- 角度の基本型です。精度単位はライブラリ内部フォーマットによって異なる ので、取り扱い時は必ず指定のマクロを使う必要があります。DEGREE 角度 から DANG に変換するには D2R(n) マクロを使用します。 ----------------------------------------------------------------------------- DCOL (unsigned int) ----------------------------------------------------------------------------- 32bitのフルカラー値です。ピクセルフォーマットは ARGB8888 となります。 色演算時や Zaurus の API へはこの形式を使用し、最後の描画時に DCOLS 型へ変換されます。 ----------------------------------------------------------------------------- DCOLS (unsigned int) ----------------------------------------------------------------------------- 実際のメモリイメージで使用されるピクセルカラー値です。フォーマットは RGB565 (65536色) となります。DCOLS は演算用のカラー値で、ピクセルそ のものは DPIXEL 型になります。 ----------------------------------------------------------------------------- DTRI (unsigned short) ----------------------------------------------------------------------------- 頂点リストに対するインデックス番号を保持するための型です。 ----------------------------------------------------------------------------- DPIXEL (unsigned short) ----------------------------------------------------------------------------- テクスチャのピクセル情報を直接扱う場合に使用します。RGB565 ----------------------------------------------------------------------------- ●構造体 GaVect ----------------------------------------------------------------------------- 3要素のベクトル { DVAL x, y, z; } ----------------------------------------------------------------------------- GaVect4 ----------------------------------------------------------------------------- 4要素のベクトル { DVAL x, y, z, w; } ----------------------------------------------------------------------------- GaMatrix ----------------------------------------------------------------------------- 4x4要素のマトリクス ----------------------------------------------------------------------------- GaVertex ----------------------------------------------------------------------------- 通常の頂点フォーマットです。 { DVAL x, y, z; //頂点座標 DVAL nx, ny, nz; //法線 DVAL tu, tv; //テクスチャ座標 } ----------------------------------------------------------------------------- GaRVertex ----------------------------------------------------------------------------- ジオメトリ演算済み頂点フォーマットです。GaVertex を GaTransform() す るとこの形式になります。 { DVAL x, y, z; //頂点座標 DVAL rhw; //未使用 DCOL diffuse; //頂点カラー DVAL specular; //未使用 DVAL tu, tv; //テクスチャ座標 } ----------------------------------------------------------------------------- GaTexture ----------------------------------------------------------------------------- テクスチャオブジェクトです。ライブラリの修正によって構造が変化する可 能性があるため、構造体内部への直接アクセスは推奨しません。 ----------------------------------------------------------------------------- GaModel ----------------------------------------------------------------------------- { int NVertex; //頂点数 int NIndex; //インデックス数 GaVertex *Vertexp; //頂点ポインタ unsigned short *Indexp; //インデックスポインタ } 基本的なモデルデータを格納します。 ----------------------------------------------------------------------------- ●マクロ DVAL DV( alltypes ) ----------------------------------------------------------------------------- DVAL型に変換する置数用マクロ。 ----------------------------------------------------------------------------- int IDV(DVAL) ----------------------------------------------------------------------------- DVAL型から整数部を取り出すマクロ。 ----------------------------------------------------------------------------- float FDV(DVAL) ----------------------------------------------------------------------------- DVAL型をfloatに変換するマクロ。 ----------------------------------------------------------------------------- DANG D2R(int) ----------------------------------------------------------------------------- 360で一周を表す角度単位を DANG に変換するマクロ。 ----------------------------------------------------------------------------- DCOL RGBA_MAKE( int red, int green, int blue, int alpha ) ----------------------------------------------------------------------------- DCOL型の置数を行います。各要素は 0〜255 の範囲でなければなりません。 ----------------------------------------------------------------------------- DCOLS RGBS_MAKE( int red, int green, int blue, int alpha ) ----------------------------------------------------------------------------- DCOLS型の置数を行います。各要素は 0〜255 の範囲でなければなりません。 ----------------------------------------------------------------------------- ●システム関数 SZAB とのリンクに使用する関数。 void GaInit( WINDOWHD wp ) ----------------------------------------------------------------------------- ライブラリを初期化します。アプリケーションプログラム開始時、または GaQuit() を行った後再びライブラリを使うときに呼び出してください。 ----------------------------------------------------------------------------- void GaQuit() ----------------------------------------------------------------------------- ライブラリを終了します。アプリケーション終了時に必ず呼び出してくださ い。3Dライブラリはヒープメモリを大量に消費するため、OUT 移行時もでき る限り GaQuit() しておくのが望ましいでしょう。 ----------------------------------------------------------------------------- void GaExecMainLoop( MESSAGE *Message ) ----------------------------------------------------------------------------- 標準のメインループを実行します。この関数は内部でメッセージループを形 成しており、条件がそろうまで戻ってきません。 ----------------------------------------------------------------------------- void GaSetAppFunction( void (*init)(), void (*quit)(), void (*move)(), void (*draw)() ) ----------------------------------------------------------------------------- メインループから呼び出される 4つのアプリケーション関数を登録します。 これらの関数は、各アプリケーションが用意しなければなりません。 init メッセージループ開始時最初に一度だけ呼び出されます。 quit メッセージループ終了時に呼び出されます。 move メッセージ発生時に呼び出されます。 draw 毎フレーム呼び出されます。 ----------------------------------------------------------------------------- ●基本関数 void GaDraw() ----------------------------------------------------------------------------- バックバッファの内容をプライマリに転送します。この関数を呼び出して始 めて、レンダリング結果が画面に反映されます。 ----------------------------------------------------------------------------- void GaClear( DCOLS color ) ----------------------------------------------------------------------------- バックバッファを任意のカラーで全クリアします。 ----------------------------------------------------------------------------- void GaDrawBg( GaTexture *texp ) ----------------------------------------------------------------------------- BG描画専用命令で、GaClear() の代わりに使用します。同様のことは GaDrawPatternCopy() でもできるため、将来この関数は無くなるかもしれま せん。この関数は 160x160dot サイズのテクスチャデータを必要とします。 ----------------------------------------------------------------------------- ●ジオメトリ演算 void GaSetProjection( DVAL scale, DVAL zoffset ) ----------------------------------------------------------------------------- プロジェクションを設定します。 scale スケール(default DV(1000)) zoffset 未使用 ----------------------------------------------------------------------------- void GaSetTransform( GaMatrix *mat ) ----------------------------------------------------------------------------- トランスフォームマトリクスを設定します。以後の GaDrawPrimitive()、 GaDrawModel()、GaTransform() でこのマトリクスが有効になります。光源 の演算も同時に行います。 ----------------------------------------------------------------------------- void GaSetTransformNL( GaMatrix *mat ) ----------------------------------------------------------------------------- トランスフォームマトリクスを設定します。光源処理を行わないオブジェク トの場合、こちらを使った方が(わずかに)高速です。 ----------------------------------------------------------------------------- void GaTransform( GaVertex *vpin, GaRVertex *vpout, int vn ) ----------------------------------------------------------------------------- 頂点リストを現在のジオメトリに従って変換し、スクリーン座標を得ます。 出力は GaRVertex 型の頂点リストになります。 vpin 入力頂点リスト vpout 出力頂点リスト vn 頂点数 ----------------------------------------------------------------------------- ●3D描画関数 void GaDrawPrimitive( GaVertex *vp, int vn, DTRI *ip, int in ) ----------------------------------------------------------------------------- トライアングルの基本プリミティブを描画します。この関数は描画と同時に ジオメトリトランスフォームを行います。頂点形式として GaVertex を使い ます。 vp 頂点リスト vn 頂点数 ip インデックスリスト in インデックス数(必ず3の倍数) ----------------------------------------------------------------------------- void GaDrawPrimitive4( GaVertex *vp, int vn, DTRI *ip, int in ) ----------------------------------------------------------------------------- 四角形プリミティブを描画します。(未完成) 現在この関数は機能しません。 vp 頂点リスト vn 頂点数 ip インデックスリスト in インデックス数(必ず4の倍数) ----------------------------------------------------------------------------- void GaDrawModel( GaModel *model ) ----------------------------------------------------------------------------- モデルを描画します。モデル構造体を引数に持てるだけで、内部では GaDrawPrimitive() を呼び出しているに過ぎません。 ----------------------------------------------------------------------------- void GaDrawPrimitiveRV( GaRVertex *vp, int vn, DTRI *ip, int in ) ----------------------------------------------------------------------------- トライアングルの基本プリミティブを描画します。この関数は、すでにジオ メトリト変換されている頂点リスト GaRVertex を使って描画を行います。 vp 頂点リスト vn 頂点数(未使用) ip インデックスリスト in インデックス数(必ず3の倍数) ----------------------------------------------------------------------------- ●2D描画関数 void GaDrawPattern( GaTexture *texp, int x, int y, int w, int h, int tx, int ty, int tw, int th ) ----------------------------------------------------------------------------- テクスチャ上の任意のパターンを描画します。転送元と転送先のサイズを変 えることができるので、拡大縮小表示が可能となります。色コードの 0 は抜 き色とみなして描画を行いません。クリッピングが行われます。 x, y 転送先座標(左上位置) w, h 転送先のサイズ(ドットサイズ) tx, ty テクスチャ上の座標(左上位置) tw, th テクスチャ上のサイズ(ドットサイズ) ----------------------------------------------------------------------------- void GaDrawPatternFast( GaTexture *texp, int x, int y, int w, int h, int tx, int ty ) ----------------------------------------------------------------------------- テクスチャ上の任意のパターンを描画します。拡大縮小を行わない分、与え るパラメータ数が少なくなっています。固定サイズの2Dスプライトとして使 用することができます。色コードの 0 は抜き色とみなします。クリッピング が行われます。 x, y 転送先座標(左上位置) w, h 転送先のサイズ(ドットサイズ) tx, ty テクスチャ上の座標(左上位置) ----------------------------------------------------------------------------- void GaDrawPatternCopy( GaTexture *texp, int x, int y, int w, int h, int tx, int ty ) ----------------------------------------------------------------------------- テクスチャ上の任意のパターンを描画します。クリッピングや抜き色の処理 を行わずに高速転送します。この描画ルーチンは余計な処理が一切無いので、 背景などの固定パターン転送に適しています。 x, y 転送先座標 w, h 転送先のサイズ tx, ty テクスチャ上の座標 ----------------------------------------------------------------------------- ●光源 void GaSetMaterial( DCOL material ) ----------------------------------------------------------------------------- マテリアル( Diffuse 及び Ambient の両方)を設定します。この値によって 光源処理が行われます。 ----------------------------------------------------------------------------- void GaSetAmbient( DCOL ambient ) ----------------------------------------------------------------------------- 環境光を設定します。 ----------------------------------------------------------------------------- void GaSetDiffuse( DCOL diffuse ) ----------------------------------------------------------------------------- diffuse マテリアルカラーを設定します。 ----------------------------------------------------------------------------- void GaSetSpecular( DCOL specular ) ----------------------------------------------------------------------------- specular マテリアルカラーを設定します。(未使用) ----------------------------------------------------------------------------- void GaSetLightDirection( DVAL x, DVAL y, DVAL z ) ----------------------------------------------------------------------------- 平行光源の向きを設定します。x, y, z はあらかじめノーマライズしておく 必要があります。 ----------------------------------------------------------------------------- void GaLightEnable( int flag ) ----------------------------------------------------------------------------- 光源演算の ON/OFF を指定します。 TRUE 光源処理を行う FALSE 光源処理を行わない ----------------------------------------------------------------------------- void GaSetGouraud( int flag ) ----------------------------------------------------------------------------- グーローシェーディングの ON/OFF を行います。 TRUE グーローシェーディングを行う FALSE フラットシェーディングを行う ----------------------------------------------------------------------------- void GaRasterCache( DCOL color ) ----------------------------------------------------------------------------- テクスチャ無し光源処理あり+グーローシェーディング時の表示カラー(マテ リアル)をキャッシュします。本来 GaSetDiffuse()、GaSetAmbient()、 GaSetMaterial() で行うべきですが、現在高速化のために分離してあります。 テクスチャ無しのグーローシェーディング時はあらかじめこの関数を実行し ておいて下さい。 ----------------------------------------------------------------------------- ●テクスチャ void GaSetTexture( GaTexture *texture ) ----------------------------------------------------------------------------- レンダリングで使用するテクスチャを指定します。NULL の場合、テクスチャ なしの描画になります。 ----------------------------------------------------------------------------- void GaTexDelete( GaTexture *texture ) ----------------------------------------------------------------------------- テクスチャを開放します。 ----------------------------------------------------------------------------- int GaTexLoad( GaTexture *texp, char *fname, int level ) ----------------------------------------------------------------------------- テクスチャをファイルから読み込みます。テクスチャデータは zit フォー マットで、ピクセル形式は 16bit RGB565 のみ対応しています。level は光 源処理を行う場合の色深度です。光源処理が不要な場合は level を必ず0に してください。光源処理を行う場合の推奨値は level=4 (16段階)です。こ の場合ヒープメモリを 16倍消費するので、メモリが足り無い場合は level=3 にしてください。成功で TRUE を、失敗で FALSE を返します。 ----------------------------------------------------------------------------- int GaTexMemory( GaTexture *texp, DPIXEL *data, int w, int h, int level ) ----------------------------------------------------------------------------- テクスチャをメモリから割り付けます。独自のテクスチャローダーを作成す る場合に使用します。メモリは内部で確保し直すので、呼び出したあと元の 画像を開放しても構いません。成功で TRUE を、失敗で FALSE を返します。 ----------------------------------------------------------------------------- int GaTexIsActive( GaTexture *texp ) ----------------------------------------------------------------------------- テクスチャバッファが有功か無効かを返します。無効なら 0、有功なら 0 以 外を返します。 ----------------------------------------------------------------------------- ●基本数値演算 void GaMathInit() ----------------------------------------------------------------------------- 数値演算ライブラリを初期化します。この処理は GaInit() 内部で呼び出さ れているため、特にアプリケーションが使用する必要はありません。 ----------------------------------------------------------------------------- void GaMathQuit() ----------------------------------------------------------------------------- 数値演算ライブラリを終了します。特にアプリケーションが使用する必要は ありません。 ----------------------------------------------------------------------------- DVAL GaMul( DVAL a, DVAL b ) ----------------------------------------------------------------------------- 固定少数値 a×b を計算します。 ----------------------------------------------------------------------------- DVAL GaDiv( DVAL a, DVAL b ) ----------------------------------------------------------------------------- 固定少数値 a÷b を計算します。 ----------------------------------------------------------------------------- DVAL GaSin( DANG ang ) DVAL GaCos( DANG ang ) ----------------------------------------------------------------------------- 三角関数 ----------------------------------------------------------------------------- DVAL GaSqrt( DVAL n ) DVAL GaInvSqrt( DVAL n ) ----------------------------------------------------------------------------- 数学関数 ----------------------------------------------------------------------------- DVAL GaRandD() ----------------------------------------------------------------------------- DV(0)〜DV(1)未満の範囲で乱数値を得ます。 ----------------------------------------------------------------------------- int GaRand( int n ) ----------------------------------------------------------------------------- 0〜(n-1) までの乱数値を得ます。 ----------------------------------------------------------------------------- ●ベクトル演算 void GaVectNormalize( GaVect *vect ) ----------------------------------------------------------------------------- ベクトルをノーマライズします。 ----------------------------------------------------------------------------- DVAL GaVectLength( GaVect *vect ) ----------------------------------------------------------------------------- ベクトルの大きさを計算します。 ----------------------------------------------------------------------------- void GaVectSetPoint( GaVect *v1, GaVect *v2, GaVect *dst ) ----------------------------------------------------------------------------- ベクトルの減算を行います。dst= v1-v2 2点の座標からベクトルを求めて dst に代入します。 ----------------------------------------------------------------------------- void GaVectAdd( GaVect *v1, GaVect *v2, GaVect *dst ) ----------------------------------------------------------------------------- ベクトルの加算を行います。dst= v1+v2 ----------------------------------------------------------------------------- void GaVectTransformation4( GaMatrix *mat, GaVect4 *src, GaVect4 *dst ) ----------------------------------------------------------------------------- src×mat の結果を dst に返します。 ----------------------------------------------------------------------------- DVAL GaVectTransformationW( GaMatrix *mat, GaVect *src, GaVect *dst ) ----------------------------------------------------------------------------- src を (x,y,z,1) とみなして src×mat を演算します。結果は (x,y,z) を dst に返し、最後の w を戻り値とします。 ----------------------------------------------------------------------------- void GaVectTransformation3( GaMatrix *mat, GaVect *src, GaVect *dst ) ----------------------------------------------------------------------------- mat を 3x3 マトリクスとみなして src×mat を演算し dst に返します。 ----------------------------------------------------------------------------- void GaVectTransformation( GaMatrix *mat, GaVect *src, GaVect *dst ) ----------------------------------------------------------------------------- src を (x,y,z,1) とみなして src×mat を演算します。結果は (x,y,z) を dst に返し、w は求めません。 ----------------------------------------------------------------------------- DVAL GaVectDot( GaVect *vect0, GaVect *vect1 ) ----------------------------------------------------------------------------- 内積 vect0・vect1 の結果を返します。 ----------------------------------------------------------------------------- void GaVectCross( GaVect *vect0, GaVect *vect1, GaVect *dst ) ----------------------------------------------------------------------------- 外積 vect0×vect1 の結果を dst に返します。 ----------------------------------------------------------------------------- ●マトリクス演算 void GaMatIdentity( GaMatrix *mat ) ----------------------------------------------------------------------------- mat を単位行列に初期化します。 ----------------------------------------------------------------------------- void GaMatCopy( GaMatrix *src, GaMatrix *dst ) ----------------------------------------------------------------------------- src を dst にコピーします。 ----------------------------------------------------------------------------- void GaMatMul( GaMatrix *mat, GaMatrix *mat2, GaMatrix *mat3 ) ----------------------------------------------------------------------------- mat と mat2 の乗算を行います。結果を mat3 に返します。 ----------------------------------------------------------------------------- void GaMatTranslation( GaMatrix *mat, DVAL x, DVAL y, DVAL z ) void GaMatTranslationX( GaMatrix *mat, DVAL x ) void GaMatTranslationY( GaMatrix *mat, DVAL y ) void GaMatTranslationZ( GaMatrix *mat, DVAL z ) ----------------------------------------------------------------------------- 平行移動します。 ----------------------------------------------------------------------------- void GaMatRotationX( GaMatrix *mat, DANG ang ) void GaMatRotationY( GaMatrix *mat, DANG ang ) void GaMatRotationZ( GaMatrix *mat, DANG ang ) ----------------------------------------------------------------------------- それぞれの軸を中心に回転します。 ----------------------------------------------------------------------------- void GaMatSale( GaMatrix *mat, DVAL x, DVAL y, DVAL z ) ----------------------------------------------------------------------------- スケール設定をします。 ----------------------------------------------------------------------------- void GaMatTranspose( GaMatrix *src, GaMatrix *dst ) ----------------------------------------------------------------------------- src の転置行列を求め、dst に返します。 ----------------------------------------------------------------------------- ●MatrixStackライブラリ Matrix管理を簡略化するためのスタックライブラリです。 void GaMatrixStackInit( int alloc ) ----------------------------------------------------------------------------- 初期化を行いスタック領域を alloc 個数分確保します。この関数は、初期 領域として GaInit() 内部で alloc=32 で呼び出されています。スタックサ イズを 32 以外に変更する場合は、アプリケーション側で一度 GaMatrixStackQuit() してから GaMatrixStackInit( alloc ) で確保し直し てください。 ----------------------------------------------------------------------------- void GaMatrixStackQuit() ----------------------------------------------------------------------------- スタック領域を開放します。GaQuit() 内部でも呼び出しています。 ----------------------------------------------------------------------------- void GaMatrixStackClean() ----------------------------------------------------------------------------- スタックを初期化します。 ----------------------------------------------------------------------------- GaMatrix *GaMatrixPush() ----------------------------------------------------------------------------- スタックを1段プッシュし、新しいマトリクスポインタを得ます。スタック トップには、前回の値が初期値としてコピーされます。 ----------------------------------------------------------------------------- GaMatrix *GaMatrixPushNC() ----------------------------------------------------------------------------- 前回のマトリクス値をコピーしないでスタックを進めます。Push 直後に GaMatIdentity() するような場合はこちらの方が高速です。 ----------------------------------------------------------------------------- GaMatrix *GaMatrixPop() ----------------------------------------------------------------------------- スタックを一段戻し、戻したマトリクスポインタを得ます。 ----------------------------------------------------------------------------- GaMatrix *GaMatrixGet() ----------------------------------------------------------------------------- 現在のマトリクスポインタを得ます。 ----------------------------------------------------------------------------- ●その他 void GaVersion( char *buf ) ----------------------------------------------------------------------------- ライブラリのバージョン文字列を取得します。buf には、終端 '\0' を含め て最大 16byte の情報を返します。先頭の 5byte でバージョンを表し、残り の領域は付加情報となります。 例 " 0.90 Beta" " 1.00" ----------------------------------------------------------------------------- DCOLS GaColorS( DCOL col ) ----------------------------------------------------------------------------- DCOL 型(ARGB8888)の色情報を DCOLS 型(RGB565)に変換します。 ----------------------------------------------------------------------------- void GaSetDrawType( int type ) ----------------------------------------------------------------------------- 描画タイプを設定します。type= 0 で、すべての機種で動作するモードにな ります。通常は最適な値に自動設定されます。 0 SystemAPI 10/BO/BI/P3 1 QVGA HC - QVGA HC 500/600/310/C1 2 QVGA HC - QVGA M4 100/P1/P2/J1/MT/BB 3 QVGA M4 - QVGA M4 4 QVGA HC - VGA HC EX1 (interlace) 5 VGA HC - VGA HC 6 QVGA HC - QVGA M4 P10 7 QVGA M4 - QVGA M4 ----------------------------------------------------------------------------- void GaSetScreenPosition( int x, int y ) ----------------------------------------------------------------------------- プライマリスクリーンへ描画転送する位置を変更します。デフォルトの位置 は、画面中央の (80,40) になっています。x は必ず 8 の倍数でなければな りません。 ----------------------------------------------------------------------------- DPIXEL *GaGetBackBuffer() ----------------------------------------------------------------------------- バックバッファのアドレスを得ます。 ----------------------------------------------------------------------------- WINDOWHD GaGetScreenWp() ----------------------------------------------------------------------------- 面画面のウィンドウを得ます。 ----------------------------------------------------------------------------- ●直接描画命令 バックバッファを使わず、直接画面上に描画するファンクションです。 void GaClsAll( DCOL clearcolor ) ----------------------------------------------------------------------------- 画面全域を指定カラーでクリアします。 ----------------------------------------------------------------------------- void GaPrintf( int x, int y, DCOL color, DCOL bgcolor, int font, int mode, char *format, .... ) ----------------------------------------------------------------------------- 画面にフォーマット付き文字列を描画します。 font QP40_CHR 10dot QP48_CHR 12dot(標準フォント) QP56_CHR 12dotBold QP64_CHR 16dot QP72_CHR 18dot(数字のみ) QP96_CHR 24dot FBSET 通常描画 FSET フォアグラウンドcolorのみ BSET バックグラウンドbgcolorのみ FBEX fg/bg反転 mode DS_NORMAL 通常フォント DS_HOLLOWED 彫り文字 DS_CONVEX 浮き文字 ----------------------------------------------------------------------------- ●定義シンボル _SCREENSIZEX レンダリング画面領域(160) _SCREENSIZEY レンダリング画面領域(160) 【補助ライブラリ】 ●3Dスプライトライブラリ 3Dモデルを扱える簡単なスプライトライブラリを提供します。スプライトという名前 ですが、2D ではなく 3D のモデルデータを扱います。単純な形状のみで構成されて いる場合、このライブラリを使うことでオブジェクト単位のソーティングを簡単に 済ませることができます。 3D IM-Clock 及び R-panel で使用した描画ルーチンを汎用化したものです。 void GaSpriteInit( int max ) ----------------------------------------------------------------------------- スプライトライブラリを初期化します。スプライト登録テーブルの個数を max に与えます。 ----------------------------------------------------------------------------- void GaSpriteQuit() ----------------------------------------------------------------------------- スプライトライブラリの終了処理を行います。 ----------------------------------------------------------------------------- void GaSpriteClean() ----------------------------------------------------------------------------- スプライトテーブルの内容をクリアします。毎フレーム最初に呼び出します。 ----------------------------------------------------------------------------- void GaSpriteDraw() ----------------------------------------------------------------------------- 登録が終わったスプライトをテーブルに従ってすべて描画します。この時、 登録したスプライト単位で、Z 位置によってソートされます。 ----------------------------------------------------------------------------- void GaSpriteQuick( GaMatrix *matp, GaModel *mp, DCOL material, GaTexture *texp, int stateflag ) ----------------------------------------------------------------------------- スプライトを登録します。 matp 描画マトリクスのポインタ mp 描画するモデルデータ material モデルを描画する場合のマテリアルカラー texp モデルを描画する場合のテクスチャ(不要ならNULL) stateflag 描画する場合モード(以下のフラグの組み合わせ) GA_RENDER_STATE_FLAT フラットシェーディング GA_RENDER_STATE_GOURAUD グーローシェーディング GA_RENDER_STATE_LIGHTING 光源処理を行う ----------------------------------------------------------------------------- ●Z-sortライブラリ 3Dスプライトライブラリでは、ソーティングをオブジェクト単位で行うために比較的 高速に動作しますが、複雑な形状を表示しようとすると多くの矛盾が発生します。こ のライブラリはポリゴン単位でソーティングを行い、矛盾の少ない描画を可能にしま す。その代わり処理速度が犠牲になり、また消費メモリも多くなります。 void GaZsInit( int maxv, int maxp ) ----------------------------------------------------------------------------- Z-sort ライブラリを初期化します。 maxv 頂点バッファの容量(最大頂点数) maxp プリミティブバッファの容量数(最大ポリゴン数) ----------------------------------------------------------------------------- void GaZsQuit() ----------------------------------------------------------------------------- Z-sort ライブラリの終了処理を行います。 ----------------------------------------------------------------------------- void GaZsSetScreen( DVAL near, DVAL far ) ----------------------------------------------------------------------------- Z軸のクリッピングレンジを指定します。 near これより近いポリゴンは描画しません。 far これより遠いポリゴンは描画しません。 ----------------------------------------------------------------------------- void GaZsDraw() ----------------------------------------------------------------------------- 描画を行います。 ----------------------------------------------------------------------------- void GaZsDrawPrimitive( GaVertex *vp, int vn, DTRI *ip, int in ) ----------------------------------------------------------------------------- 描画プリミティブを登録します。 ----------------------------------------------------------------------------- void GaZsDrawQuick( GaMatrix *matp, GaModel *mp, DCOL material, GaTexture *texp, int stateflag ) ----------------------------------------------------------------------------- 描画プリミティブを登録します。 ----------------------------------------------------------------------------- ●MESHライブラリ モデルデータをプログラム上で変形生成したり、プログラム上でテクスチャのラッピ ングを行うことができます。 void MeshNormalize( GaVect *vp, int vn ) ----------------------------------------------------------------------------- 頂点リスト内の法線をノーマライズします。 ----------------------------------------------------------------------------- void MeshTransform( GaMatrix *mat, GaVect *vp, int vn ) ----------------------------------------------------------------------------- 指定マトリクスですべての頂点を変換します。現バージョンでは法線の変換 は行いません。将来この仕様は変更される可能性があります。 ----------------------------------------------------------------------------- void MeshGenerateNromal( GaVect *vp, int vn, DTRI *ip, int in ) ----------------------------------------------------------------------------- 頂点から法線を生成します。 ----------------------------------------------------------------------------- void MeshWrapFlat( int type, GaVect *vp, int vn ) ----------------------------------------------------------------------------- モデルデータにテクスチャをラッピングします。 type= 0 Z軸方向に平面ラップ 1 Y軸方向に平面ラップ 2 X軸方向に平面ラップ ----------------------------------------------------------------------------- void MeshWrapClyindrical( int type, GaVect *vp, int vn ) ----------------------------------------------------------------------------- モデルデータにテクスチャをシリンドリカルラップします。(未完成) ----------------------------------------------------------------------------- void MeshSize( GaVertex *vp, int vn, GaVect *max, GaVect *min ) ----------------------------------------------------------------------------- モデルデータ内の、各軸における最小値最大値を求めます。 ----------------------------------------------------------------------------- 2000/01/08 初版 2000/01/15 説明大幅修正、Z-sortライブラリ追加 2000/09/18 マニュアルの記述ミスを修正。P10対応。 ・MatrixStack の関数名が違っていたのを修正 ・GaSetGouraud()/GaRasterCache() の記載忘れ ・GaSetDrawType() の説明追加。 ・GaMatTranslationX/Y/Z() 追加 2000/09/24 EX1/TR1対応 小笠原博之 oga@art.udn.ne.jp http://www.vector.co.jp/authors/VA004474/