//==================================================================== // IrisGX_Primitive.h // IRISプリミティブ描画ディスプレイリスト生成 // // Copyright (C) 2003 NINTENDO Co.,Ltd. //==================================================================== #ifndef _IRIS_GX_PRIMITIVE_H #define _IRIS_GX_PRIMITIVE_H #include #include #ifdef __cplusplus extern "C" { #endif // プリミティブ描画関数用テクスチャパラメータ構造体 typedef struct { TexImageParamCnt img; // テクスチャイメージコマンドのパラメータ TexPlttBaseCnt plt; // テクスチャパレットベースコマンドのパラメータ TexCoord texStart; // テクスチャスタート座標 TexCoord texEnd; // テクスチャエンド座標 } PrimTexParam; //---------------------------------------------------------------------- // 立方体の描画 // //・立方体を描画します。 // //・引数: // width 一辺の長さ // texParamp テクスチャパラメータへのポインタ // (フォーマットはPrimTexParam構造体を参照して下さい) // //・戻り値: なし // //※I/Oレジスタ経由でジオメトリFIFOへ直接書き込むため、 // ディスプレイリスト転送中には実行しないで下さい。 //---------------------------------------------------------------------- void GX_DrawCube(u16 width, const u32 (* texParamp)[4]); //---------------------------------------------------------------------- // 直方体の描画 // //・直方体を描画します。 // texParamp テクスチャパラメータへのポインタ // (フォーマットはPrimTexParam構造体を参照して下さい) // //・引数: // width 幅 // height 高さ // depth 奥行き // //・戻り値: なし // //※I/Oレジスタ経由でジオメトリFIFOへ直接書き込むため、 // ディスプレイリスト転送中には実行しないで下さい。 //---------------------------------------------------------------------- void GX_DrawBox(u16 width, u16 height, u16 depth, const u32 (* texParamp)[4]); //---------------------------------------------------------------------- // 球の描画 // //・球を描画します。 // //・引数: // radius 半径 // numMajor 緯度(latitude)の分割数 // numMinor 経度(longitude)の分割数 // texParamp テクスチャパラメータへのポインタ // (フォーマットはPrimTexParam構造体を参照して下さい) // //・戻り値: なし // //※I/Oレジスタ経由でジオメトリFIFOへ直接書き込むため、 // ディスプレイリスト転送中には実行しないで下さい。 //---------------------------------------------------------------------- void GX_DrawSphere(s16 radius, s16 numMajor, s16 numMinor, const u32 (* texParamp)[4]); //---------------------------------------------------------------------- // 正二十面体を再帰的に分割した球の描画 // //・正二十面体を再帰的に分割した球を描画します。 // //・引数: // radius 半径 // numLevel 細分のレベル数 // //・戻り値: なし // //※I/Oレジスタ経由でジオメトリFIFOへ直接書き込むため、 // ディスプレイリスト転送中には実行しないで下さい。 //---------------------------------------------------------------------- void GX_DrawSphereHedron(s16 radius, s16 numLevel); //---------------------------------------------------------------------- // 円柱の描画 // //・円柱を描画します。 // //・引数: // radius 半径 // height 高さ // numEdges 円周の分割数 // texParamp テクスチャパラメータへのポインタ // (フォーマットはPrimTexParam構造体を参照して下さい) // //・戻り値: なし // //※I/Oレジスタ経由でジオメトリFIFOへ直接書き込むため、 // ディスプレイリスト転送中には実行しないで下さい。 //---------------------------------------------------------------------- void GX_DrawCylinder(s16 radius, u16 height, s16 numEdges, const u32 (* texParamp)[4]); //---------------------------------------------------------------------- // 円錐の描画 // //・円錐を描画します。 // //・引数: // radius 底面の半径 // height 高さ // numEdges 円周の分割数 // texParamp テクスチャパラメータへのポインタ // (フォーマットはPrimTexParam構造体を参照して下さい) // //・戻り値: なし // //※I/Oレジスタ経由でジオメトリFIFOへ直接書き込むため、 // ディスプレイリスト転送中には実行しないで下さい。 //---------------------------------------------------------------------- void GX_DrawCone(s16 radius, u16 height, s16 numEdges, const u32 (* texParamp)[4]); //---------------------------------------------------------------------- // トーラス(円環)の描画 // //・トーラス(円環)を描画します。 // //・引数: // size トーラスの中心から回転される円の中心までの距離 // rc sizeと回転される円の半径の比率 // numc 回転される円の分割数 // numt 軸回転による円の分割数 // texParamp テクスチャパラメータへのポインタ // (フォーマットはPrimTexParam構造体を参照して下さい) // //・戻り値:なし // //※I/Oレジスタ経由でジオメトリFIFOへ直接書き込むため、 // ディスプレイリスト転送中には実行しないで下さい。 //---------------------------------------------------------------------- void GX_DrawTorus(s16 size, s16 rc, s16 numc, s16 numt, const u32 (* texParamp)[4]); //---------------------------------------------------------------------- // 正八面体の描画 // //・正八面体を描画します。 // //・引数: // radius 半径 // //・戻り値:なし // //※I/Oレジスタ経由でジオメトリFIFOへ直接書き込むため、 // ディスプレイリスト転送中には実行しないで下さい。 //---------------------------------------------------------------------- void GX_Draw8Hedron(s16 radius); //---------------------------------------------------------------------- // 正十二面体の描画 // //・正十二面体を描画します。 // //・引数: // radius 半径 // //・戻り値:なし // //※I/Oレジスタ経由でジオメトリFIFOへ直接書き込むため、 // ディスプレイリスト転送中には実行しないで下さい。 //---------------------------------------------------------------------- void GX_Draw12Hedron(s16 radius); //---------------------------------------------------------------------- // 正二十面体の描画 // //・正二十面体を描画します。 // //・引数: // radius 半径 // //・戻り値:なし // //※I/Oレジスタ経由でジオメトリFIFOへ直接書き込むため、 // ディスプレイリスト転送中には実行しないで下さい。 //---------------------------------------------------------------------- void GX_Draw20Hedron(s16 radius); #ifdef __cplusplus } #endif #endif // _IRIS_GX_PRIMITIVE_H