#include <iris/gx/g3imm.h> #include <iris/gx/g3b.h> #include <iris/gx/g3c.h>
void G3_PolygonAttr( int light, GXPolygonMode polyMode, GXCull cullMode, int polyognID, int alpha, int misc);
void G3B_PolygonAttr(GXDLInfo* info, ...); void G3C_PolygonAttr(GXDLInfo* info, ...); void G3BS_PolygonAttr(GXDLInfo* info, ...);void G3CS_PolygonAttr(GXDLInfo* info, ...);
| info | コマンドリスト情報 |
| light | どのライトを点灯するかを指定する4ビットのマスクです。 |
| polyMode | ポリゴンモードを指定します。 |
| cullMode | どの面をカリングするかを指定します。 |
| polygonID | ポリゴンIDを指定します |
| alpha | α値を指定します。 |
| misc | その他のポリゴン属性を指定するためのビットフィールドです。 |
なし。
ポリゴン関連属性値を設定します。
lightは4ビットのフラグで、下位4ビットで下位から順に、ライト0, ライト1, ライト2,
ライト3のON/OFFを指定します。
polyModeはポリゴンモードを指定する引数で、GXPolygonMode型の値を指定します。
cullModeはポリゴンのカリング方式を指定する引数で、GXCull型の値を指定します。
polygonIDはポリゴンIDを指定する引数で、0以上63以下を指定できます。半透明ポリゴン、シャドウポリゴン、及びエッジマーキング描画時に使用されます。
alphaはポリゴンのα値を指定する引数で、0以上31以下を指定できます。31の場合不透明ポリゴンで、0の場合ワイヤーフレーム表示(G3X_AlphaTestの設定で表示しないようにすることが可能)、1以上30以下の場合は、半透明ポリゴンになります。
miscはその他の属性フラグをまとめたビットフィールドで、GXPolygonAttrMisc型の値の論理和を渡します。
GX_POLYGONMODE_MODULATE |
モジュレーションモード |
GX_POLYGONMODE_DECAL |
デカルモード |
GX_POLYGONMODE_TOON |
トゥーンシェーディング/ハイライトシェーディングモード |
GX_POLYGONMODE_SHADOW |
シャドウポリゴンモード |
GX_CULL_ALL |
両面表示しない |
GX_CULL_FRONT |
表面を表示しない |
GX_CULL_BACK |
裏面を表示しない |
GX_CULL_NONE |
両面表示する |
GX_POLYGON_ATTR_MISC_NONE |
何も指定しません。 |
GX_POLYGON_ATTR_MISC_XLU_DEPTH_UPDATE |
半透明ポリゴン描画時にデプスバッファを更新します。 |
GX_POLYGON_ATTR_MISC_FAR_CLIPPING |
ポリゴンがFAR面と交差したらクリッピングします(指定しない場合は交差したら消去)。 |
GX_POLYGON_ATTR_MISC_DISP_1DOT |
1ドットのポリゴンを表示します。G3X_SetDisp1DotDepthも参照してください。 |
GX_POLYGON_ATTR_MISC_DEPTHTEST_DECAL |
フラグメントのデプス値がデプスバッファのデプス値と等しい場合に描画します。 指定しない場合は、デプス値より小さい場合に描画します。 |
GX_POLYGON_ATTR_MISC_FOG |
レンダリングエンジンでフォグブレンディングを行います。 |
以下にGXPolygonMode型とGXCull型とGXPolygonAttrMisc型の型定義を示しておきます。
typedef enum
{
GX_POLYGONMODE_MODULATE = 0,
GX_POLYGONMODE_DECAL = 1,
GX_POLYGONMODE_TOON = 2,
GX_POLYGONMODE_SHADOW = 3
}
GXPolygonMode;
typedef enum
{
GX_CULL_ALL = 0,
GX_CULL_FRONT = 1,
GX_CULL_BACK = 2,
GX_CULL_NONE = 3
}
GXCull;
typedef enum
{
GX_POLYGON_ATTR_MISC_NONE = 0,
GX_POLYGON_ATTR_MISC_XLU_DEPTH_UPDATE = 1 << REG_G3_POLYGON_ATTR_XL_SHIFT,
GX_POLYGON_ATTR_MISC_FAR_CLIPPING = 1 << REG_G3_POLYGON_ATTR_FC_SHIFT,
GX_POLYGON_ATTR_MISC_DISP_1DOT = 1 << REG_G3_POLYGON_ATTR_D1_SHIFT,
GX_POLYGON_ATTR_MISC_DEPTHTEST_DECAL = 1 << REG_G3_POLYGON_ATTR_DT_SHIFT,
GX_POLYGON_ATTR_MISC_FOG = 1 << REG_G3_POLYGON_ATTR_FE_SHIFT
}
GXPolygonAttrMisc;
Ver. 2004/01/19