TwlIPL_commit-99/add-ins/TwlSystem/man/ja_JP/g3d/sbc/NNSG3dRS.html

234 lines
9.6 KiB
HTML
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
<META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 7.0.0.0 for Windows">
<TITLE>NNSG3dRS構造体とアクセサ</TITLE>
<LINK rel="stylesheet" href="../../css/nitro.css" type="text/css">
<LINK rel="stylesheet" href="../../css/apilist.css" type="text/css">
</HEAD>
<BODY>
<h1 align="left">NNSG3dRS構造体とアクセサ</h1>
<H2>説明</H2>
<P><CODE>NNSG3dRS</CODE>構造体は、レンダリング中の状態を保持するための構造体です。この構造体は、レンダリングやアニメーションの計算において参照されたり変更されたりする、いわゆるマシンステートに相当するデータを保持するためのデータ構造です。この構造体は、通常<CODE>NNS_G3dDraw</CODE>関数内部でスタック領域(DTCM)に確保され、SBC命令を処理する関数やコールバック関数などの実行の際には、第引数としてポインタが渡されています。また、<CODE>NNS_G3dDraw</CODE>関数の実行中には、グローバル変数の<CODE>NNS_G3dRS</CODE>にもポインタが格納されています。<BR>
<BR>
通常は、この構造体についての知識はなくとも問題はないのですが、コールバックで描画中の動作を細かくカスタマイズしたい場合には、この構造体が保持するデータを、参照・改変する必要が生じてきます。そこでこの項では、<CODE>NNS_G3dRS</CODE>構造体のデータメンバへのアクセサについて説明いたします。</P>
<H2>アクセサ関数</H2>
<P><A name="NNS_G3dRSSetCallBack"></A></P>
<TABLE border="1">
<TBODY>
<TR>
<TD><CODE>#include &lt;nnsys/g3d/sbc.h&gt;<BR>
void NNS_G3dRSSetCallBack(NNSG3dRS* rs, NNSG3dSbcCallBackFunc func, u8
cmd, NNSG3dSbcCallBackTiming timing);</CODE></TD>
</TR>
<TR>
<TD>SBC命令cmdに対してコールバックを設定します。<CODE>引数については<A href="../kernel/NNS_G3dRenderObjSetCallBack.html"><CODE>NNS_G3dRenderObjSetCallBack</CODE></A>関数を参照してください。 コールバックはcmdつにつきつ有効となります。同じcmdに対して実行された場合は設定が上書きされます。</CODE>コールバックを複数設定したい場合は、<CODE><A href="../kernel/NNS_G3dRenderObjSetCallBack.html">NNS_G3dRenderObjSetCallBack</A>関数を複数回呼び出すのではなくこちらの関数を使用してください。</CODE></TD>
</TR>
</TBODY>
</TABLE>
<P><A name="NNS_G3dRSResetCallBack"></A></P>
<TABLE border="1">
<TBODY>
<TR>
<TD><CODE>#include &lt;nnsys/g3d/sbc.h&gt;<BR>
void NNS_G3dRSResetCallBack(NNSG3dRS* rs, u8 cmd);</CODE></TD>
</TR>
<TR>
<TD>SBC命令cmdに対して設定されているコールバックを無効にします。</TD>
</TR>
</TBODY>
</TABLE>
<P><A name="NNS_G3dRSGetRenderObj"></A></P>
<TABLE border="1">
<TBODY>
<TR>
<TD><CODE>#include &lt;nnsys/g3d/sbc.h&gt;<BR>
NNSG3dRenderObj* NNS_G3dRSGetRenderObj(NNSG3dRS* rs);</CODE></TD>
</TR>
<TR>
<TD><CODE>NNSG3dRenderObj</CODE>構造体へのポインタを取得します。</TD>
</TR>
</TBODY>
</TABLE>
<P><A name="NNS_G3dRSGetMatAnmResult"></A></P>
<TABLE border="1">
<TBODY>
<TR>
<TD><CODE>#include &lt;nnsys/g3d/sbc.h&gt;<BR>
NNSG3dMatAnmResult* NNS_G3dRSGetMatAnmResult(NNSG3dRS* rs);</CODE></TD>
</TR>
<TR>
<TD><CODE>NNSG3dMatAnmResult</CODE>構造体へのポインタを取得します。<CODE>NNS_G3D_SBC_MAT</CODE>コマンドのタイミングA,
タイミングBのコールバックにおいて参照、変更可能。その他の場合は<CODE>NULL</CODE>です。</TD>
</TR>
</TBODY>
</TABLE>
<P><A name="NNS_G3dRSGetJntAnmResult"></A></P>
<TABLE border="1">
<TBODY>
<TR>
<TD><CODE>#include &lt;nnsys/g3d/sbc.h&gt;<BR>
NNSG3dJntAnmResult* NNS_G3dRSGetJntAnmResult(NNSG3dRS* rs);</CODE></TD>
</TR>
<TR>
<TD><CODE>NNSG3dJntAnmResult</CODE>構造体へのポインタを取得します。<CODE>NNS_G3D_SBC_NODEDESC</CODE>コマンドのタイミングA,
タイミングBのコールバックにおいて参照、変更可能。その他の場合は<CODE>NULL</CODE>です。</TD>
</TR>
</TBODY>
</TABLE>
<P><A name="NNS_G3dRSGetVisAnmResult"></A></P>
<TABLE border="1">
<TBODY>
<TR>
<TD><CODE>#include &lt;nnsys/g3d/sbc.h&gt;<BR>
NNSG3dVisAnmResult* NNS_G3dRSGetVisAnmResult(NNSG3dRS* rs);</CODE></TD>
</TR>
<TR>
<TD><CODE>NNSG3dVisAnmResult</CODE>構造体へのポインタを取得します。<CODE>NNS_G3D_SBC_NODE</CODE>コマンドのタイミングA,
タイミングBのコールバックにおいて参照、変更可能。その他の場合は<CODE>NULL</CODE>です。</TD>
</TR>
</TBODY>
</TABLE>
<P><A name="NNS_G3dRSGetSbcPtr"></A></P>
<TABLE border="1">
<TBODY>
<TR>
<TD><CODE>#include &lt;nnsys/g3d/sbc.h&gt;<BR>
u8* NNS_G3dRSGetSbcPtr(NNSG3dRS* rs);</CODE></TD>
</TR>
<TR>
<TD>現在実行中のSBC命令へのポインタを取得します。</TD>
</TR>
</TBODY>
</TABLE>
<P><A name="NNS_G3dRSSetFlag"></A></P>
<TABLE border="1">
<TBODY>
<TR>
<TD><CODE>#include &lt;nnsys/g3d/sbc.h&gt;<BR>
u8* NNS_G3dRSSetFlag(NNSG3dRS* rs, NNSG3dRSFlag flag);</CODE></TD>
</TR>
<TR>
<TD>sbc.hで定義されている<CODE>NNSG3dRSFlag</CODE>型のフラグを指定してONにする。</TD>
</TR>
</TBODY>
</TABLE>
<P><A name="NNS_G3dRSResetFlag"></A></P>
<TABLE border="1">
<TBODY>
<TR>
<TD><CODE>#include &lt;nnsys/g3d/sbc.h&gt;<BR>
u8* NNS_G3dRSResetFlag(NNSG3dRS* rs, NNSG3dRSFlag flag);</CODE></TD>
</TR>
<TR>
<TD>sbc.hで定義されている<CODE>NNSG3dRSFlag</CODE>型のフラグを指定してOFFにする。</TD>
</TR>
</TBODY>
</TABLE>
<P></P>
<TABLE border="1">
<TBODY>
<TR>
<TD><CODE>#include &lt;nnsys/g3d/sbc.h&gt;<BR>
int NNS_G3dRSGetCurrentMatID(const NNSG3dRS* rs);</CODE></TD>
</TR>
<TR>
<TD>現在<CODE>NNS_G3D_SBC_MAT</CODE>コマンドで計算中か直前に実行された<CODE>NNS_G3D_SBC_MAT</CODE>コマンドで設定されたマテリアルIDを返します。マテリアルIDはSBCの<CODE>NNS_G3D_SBC_MAT</CODE>コマンドで設定され、次の<CODE>NNS_G3D_SBC_MAT</CODE>コマンドがオーバーライドするか、コールバック関数内部で変更されるまで値を保持しつづけます。なお、<CODE>NNS_G3D_SBC_MAT</CODE>コマンドが未実行か直前の<CODE>NNS_G3D_SBC_MAT</CODE>コマンドの結果が無効とされている場合は-1を返します。</TD>
</TR>
</TBODY>
</TABLE>
<P></P>
<TABLE border="1">
<TBODY>
<TR>
<TD><CODE>#include &lt;nnsys/g3d/sbc.h&gt;<BR>
int NNS_G3dRSGetCurrentNodeID(const NNSG3dRS* rs);</CODE></TD>
</TR>
<TR>
<TD>現在計算中の<CODE>NNS_G3D_SBC_NODE</CODE>コマンドか直前に実行された<CODE>NNS_G3D_SBC_NODE</CODE>コマンドで設定されたードのIDを返します。ードIDはSBCの<CODE>NNS_G3D_SBC_NODE</CODE>コマンドで設定され、次の<CODE>NNS_G3D_SBC_NODE</CODE>コマンドがオーバーライドするか、コールバック関数内部で変更されるまで値を保持しつづけます。なお、<CODE>NNS_G3D_SBC_NODE</CODE>コマンドが未実行か直前の<CODE>NNS_G3D_SBC_NODE</CODE>コマンドの結果が無効とされている場合は-1を返します。</TD>
</TR>
</TBODY>
</TABLE>
<P></P>
<TABLE border="1">
<TBODY>
<TR>
<TD><CODE>#include &lt;nnsys/g3d/sbc.h&gt;<BR>
int NNS_G3dRSGetCurrentNodeDescID(const NNSG3dRS* rs);</CODE></TD>
</TR>
<TR>
<TD>現在計算中の<CODE>NNS_G3D_SBC_NODEDESC</CODE>コマンドか直前に実行された<CODE>NNS_G3D_SBC_NODEDESC</CODE>コマンドで設定されたードのIDを返します。ードIDはSBCの<CODE>NNS_G3D_SBC_NODEDESC</CODE>コマンドで設定され、次の<CODE>NNS_G3D_SBC_NODEDESC</CODE>コマンドがオーバーライドするか、コールバック関数内部で変更されるまで値を保持しつづけます。なお、<CODE>NNS_G3D_SBC_NODEDESC</CODE>コマンドが未実行か直前の<CODE>NNS_G3D_SBC_NODEDESC</CODE>コマンドの結果が無効とされている場合は-1を返します。</TD>
</TR>
</TBODY>
</TABLE>
<P></P>
<TABLE border="1">
<TBODY>
<TR>
<TD><CODE>#include &lt;nnsys/g3d/sbc.h&gt;<BR>
fx32 NNS_G3dRSGetPosScale(const NNSG3dRS* rs);</CODE></TD>
</TR>
<TR>
<TD><CODE>NNSG3dRS</CODE>構造体にキャッシュされている頂点座標に対するスケール値を取得します。</TD>
</TR>
</TBODY>
</TABLE>
<P></P>
<TABLE border="1">
<TBODY>
<TR>
<TD><CODE>#include &lt;nnsys/g3d/sbc.h&gt;<BR>
fx32 NNS_G3dRSGetInvPosScale(const NNSG3dRS* rs);</CODE></TD>
</TR>
<TR>
<TD><CODE>NNSG3dRS</CODE>構造体にキャッシュされている頂点座標に対するスケール値の逆数を取得します。</TD>
</TR>
</TBODY>
</TABLE>
<P><BR>
以下は、<CODE>NNSG3dRSFlag</CODE>型の主要な値についての説明です。</P>
<TABLE border="1">
<TBODY>
<TR>
<TD width="196"><PRE><CODE>NNS_G3D_RSFLAG_NODE_VISIBLE</CODE></PRE></TD>
<TD width="625"><CODE>NNS_G3D_SBC_NODE</CODE>コマンドで、ードに属するポリゴンがvisibleのときにセットされます。</TD>
</TR>
<TR>
<TD width="196">
<PRE><CODE>NNS_G3D_RSFLAG_MAT_TRANSPARENT</CODE></PRE></TD>
<TD width="625"><CODE>NNS_G3D_SBC_MAT</CODE>コマンドで、マテリアルが透明の場合にセットされます。</TD>
</TR>
<TR>
<TD width="196">
<PRE><CODE>NNS_G3D_RSFLAG_CURRENT_NODE_VALID</CODE></PRE></TD>
<TD width="625"><EM><STRONG>currentNode</STRONG></EM>に有効な値が入っている場合セットされています。</TD>
</TR>
<TR>
<TD width="196">
<PRE><CODE>NNS_G3D_RSFLAG_CURRENT_MAT_VALID</CODE></PRE></TD>
<TD width="625"><EM><STRONG>currentMat</STRONG></EM>に有効な値が入っている場合セットされています。</TD>
</TR>
<TR>
<TD><PRE><CODE>NNS_G3D_RSFLAG_RETURN</CODE></PRE></TD>
<TD>このフラグがセットされていると、現在のSBC命令終了後に<CODE>NNS_G3dDraw</CODE>関数の実行を終了します。</TD>
</TR>
<TR>
<TD><PRE><CODE>NNS_G3D_RSFLAG_SKIP</CODE></PRE></TD>
<TD>このフラグがセットされていると、次のコールバックポイントか現在の命令が終了するまで、処理をスキップします。</TD>
</TR>
</TBODY>
</TABLE>
<H2>参照</H2>
<H2>履歴</H2>
<P>2004/10/11 改訂版<BR>
2004/08/02 初版</P>
</BODY>
</HTML>