//==================================================================== // IrisGXB_Primitive.h // IRISプリミティブ描画ディスプレイリストをバッファへ生成 // // Copyright (C) 2003 NINTENDO Co.,Ltd. //==================================================================== #ifndef _IRIS_GXB_PRIMITIVE_H #define _IRIS_GXB_PRIMITIVE_H #include #include #include #ifdef __cplusplus extern "C" { #endif //---------------------------------------------------------------------- // 立方体の描画 // //・立方体を描画します。 // //・引数: // bufp ディスプレイリストバッファのポインタ // width 一辺の長さ // texParamp テクスチャパラメータへのポインタ // (フォーマットはPrimTexParam構造体を参照して下さい) // //・戻り値: なし //---------------------------------------------------------------------- #define GXB_DrawCube(bufp, width, texParamp) \ \ ((bufp) = _GXB_DrawCube(bufp, width, texParamp)) u32 *_GXB_DrawCube(u32 *bufp, u16 width, const u32 (* texParamp)[4]); //---------------------------------------------------------------------- // 直方体の描画 // //・直方体を描画します。 // //・引数: // bufp ディスプレイリストバッファのポインタ // width 幅 // height 高さ // depth 奥行き // texParamp テクスチャパラメータへのポインタ // (フォーマットはPrimTexParam構造体を参照して下さい) // //・戻り値: なし //---------------------------------------------------------------------- #define GXB_DrawBox(bufp, width, height, depth, texParamp) \ \ ((bufp) = _GXB_DrawBox(bufp, width, height, depth, texParamp)) u32 *_GXB_DrawBox(u32 *bufp, u16 width, u16 height, u16 depth, const u32 (* texParamp)[4]); //---------------------------------------------------------------------- // 球の描画 // //・球を描画します。 // //・引数: // bufp ディスプレイリストバッファのポインタ // radius 半径 // numMajor 緯度(latitude)の分割数 // numMinor 経度(longitude)の分割数 // texParamp テクスチャパラメータへのポインタ // (フォーマットはPrimTexParam構造体を参照して下さい) // //・戻り値: なし //---------------------------------------------------------------------- #define GXB_DrawSphere(bufp, radius, numMajor, numMinor, texParamp) \ \ ((bufp) = _GXB_DrawSphere(bufp, radius, numMajor, numMinor, texParamp)) u32 *_GXB_DrawSphere(u32 *bufp, s16 radius, s16 numMajor, s16 numMinor, const u32 (* texParamp)[4]); //---------------------------------------------------------------------- // 正二十面体を再帰的に分割した球の描画 // //・正二十面体を再帰的に分割した球を描画します。 // //・引数: // bufp ディスプレイリストバッファのポインタ // radius 半径 // numLevel 細分のレベル数 // //・戻り値: なし // //※平方根演算器と除算器を使用するため、TCM上で実行したとしても // DMA転送とシステムバス上で衝突した場合には // CPUのストールが発生してしまいます。 //---------------------------------------------------------------------- #define GXB_DrawSphereHedron(bufp, radius, numLevel) \ \ ((bufp) = _GXB_DrawSphereHedron(bufp, radius, numLevel)) u32 *_GXB_DrawSphereHedron(u32 *bufp, s16 radius, s16 numLevel); //---------------------------------------------------------------------- // 円柱の描画 // //・円柱を描画します。 // //・引数: // bufp ディスプレイリストバッファのポインタ // radius 半径 // height 高さ // numEdges 円周の分割数 // texParamp テクスチャパラメータへのポインタ // (フォーマットはPrimTexParam構造体を参照して下さい) // //・戻り値: なし //---------------------------------------------------------------------- #define GXB_DrawCylinder(bufp, radius, height, numEdges, texParamp) \ \ ((bufp) = _GXB_DrawCylinder(bufp, radius, height, numEdges, texParamp)) u32 *_GXB_DrawCylinder(u32 *bufp, s16 radius, u16 height, s16 numEdges, const u32 (* texParamp)[4]); //---------------------------------------------------------------------- // 円錐の描画 // //・円錐を描画します。 // //・引数: // bufp ディスプレイリストバッファのポインタ // radius 底面の半径 // height 高さ // numEdges 円周の分割数 // texParamp テクスチャパラメータへのポインタ // (フォーマットはPrimTexParam構造体を参照して下さい) // //・戻り値: なし // //※平方根演算器と除算器を使用するため、TCM上で実行したとしても // DMA転送とシステムバス上で衝突した場合には // CPUのストールが発生してしまいます。 //---------------------------------------------------------------------- #define GXB_DrawCone(bufp, radius, height, numEdges, texParamp) \ \ ((bufp) = _GXB_DrawCone(bufp, radius, height, numEdges, texParamp)) u32 *_GXB_DrawCone(u32 *bufp, s16 radius, u16 height, s16 numEdges, const u32 (* texParamp)[4]); //---------------------------------------------------------------------- // トーラス(円環)の描画 // //・トーラス(円環)を描画します。 // //・引数: // bufp ディスプレイリストバッファのポインタ // size トーラスの中心から回転される円の中心までの距離 // rc sizeと回転される円の半径の比率 // numc 回転される円の分割数 // numt 軸回転による円の分割数 // texParamp テクスチャパラメータへのポインタ // (フォーマットはPrimTexParam構造体を参照して下さい) // //・戻り値:なし //---------------------------------------------------------------------- #define GXB_DrawTorus(bufp, size, rc, numc, numt, texParamp) \ \ ((bufp) = _GXB_DrawTorus(bufp, size, rc, numc, numt, texParamp)) u32 *_GXB_DrawTorus(u32 *bufp, s16 size, s16 rc, s16 numc, s16 numt, const u32 (* texParamp)[4]); //---------------------------------------------------------------------- // 正八面体の描画 // //・正八面体を描画します。 // //・引数: // bufp ディスプレイリストバッファのポインタ // radius 半径 // //・戻り値:なし // //※平方根演算器と除算器を使用するため、TCM上で実行したとしても // DMA転送とシステムバス上で衝突した場合には // CPUのストールが発生してしまいます。 //---------------------------------------------------------------------- #define GXB_Draw8Hedron(bufp, radius) \ \ ((bufp) = _GXB_Draw8Hedron(bufp, radius)) u32 *_GXB_Draw8Hedron(u32 *bufp, s16 radius); //---------------------------------------------------------------------- // 正十二面体の描画 // //・正十二面体を描画します。 // //・引数: // bufp ディスプレイリストバッファのポインタ // radius 半径 // //・戻り値:なし // //※平方根演算器と除算器を使用するため、TCM上で実行したとしても // DMA転送とシステムバス上で衝突した場合には // CPUのストールが発生してしまいます。 //---------------------------------------------------------------------- #define GXB_Draw12Hedron(bufp, radius) \ \ ((bufp) = _GXB_Draw12Hedron(bufp, radius)) u32 *_GXB_Draw12Hedron(u32 *bufp, s16 radius); //---------------------------------------------------------------------- // 正二十面体の描画 // //・正二十面体を描画します。 // //・引数: // bufp ディスプレイリストバッファのポインタ // radius 半径 // //・戻り値:なし // //※平方根演算器と除算器を使用するため、TCM上で実行したとしても // DMA転送とシステムバス上で衝突した場合には // CPUのストールが発生してしまいます。 //---------------------------------------------------------------------- #define GXB_Draw20Hedron(bufp, radius) \ \ ((bufp) = _GXB_Draw20Hedron(bufp, radius)) u32 *_GXB_Draw20Hedron(u32 *bufp, s16 radius); #ifdef __cplusplus } #endif #endif // _IRIS_GXB_PRIMITIVE_H