English
PROGRAMMER'S GUIDEVDP1ライブラリ
戻る|   ■
VDP1ライブラリ

6.3 関数仕様




Title

関数仕様

Function

VDP1 3Dワークエリア定義マクロ

Function Name

SPR_3DefineWork

No

1

 書 式
[#define SPR_3USE_DOUBLE_BUF]
[#define SPR_3NEED_WORLD_VERT]
 #include "sega_spr.h"
SPR_3DefineWork(WORK3D, OBJ_SURF_MAX,OBJ_VERT_MAX)
 入 力
WORK3D 
:ワークエリア名
OBJ_SURF_MAX
:オブジェクトの最大面数
OBJ_VERT_MAX
:オブジェクトの最大頂点数
 機 能
VDP1 3D表示で使用するワークエリアをAP内のデータエリアに定義します。
#define SPR_3USE_DOUBLE_BUF は省略可能で、指定するとオブジェクトの頂点座標や面の輝度テーブルを2個使用してDSPによる座標変換等の処理とSHの処理を並列化し、実行スピードを上げます。
#define SPR_3NEED_WORLD_VERT は省略可能で、指定すると座標変換結果の通知時に、ワールド座標系での頂点座標テーブルを通知します。
#define SPR_3USE_DOUBLE_BUFと#definePR_3NEED_WORD_VERTHは#define "sega_spr.h"の定義前に定義する必要があります。



Title

関数仕様

Function

VDP1 3D表示の初期化

Function Name

SPR_3Initial

No

2

 書 式
void SPR_3Initial(Spr3WorkArea *workArea)
 入 力
workArea : ワークエリア定義テーブル
 出 力
なし
 関数値
なし
 機 能
VDP1 3D表示を初期化します。
  • 視点はワールド座標系の原点で視点アングルは (0,0,0)(Zの正方向)、回転操作はX→Y→Zの順番に設定されます。
  • 光源アングルは (0,0,0)(Zの正方向)です。
  • クリッピングレベルは2で、視点座標系Z座標の表示範囲最大/最小値は-0.005から負の最小値までです。



Title

関数仕様

Function

クリッピングモードのセット

Function Name

SPR_3SetClipLevel

No

3

 書 式
void SPR_3SetClipLevel(Uint16 clipLevel, Fixed32 clipZmin,Fixed32 clipZmax)
 入 力
clipLevel:クリッピングのレベル番号
番号意  味
クリッピングなし。
視点座標系のZ範囲でクリップポリゴンの代表点のZ値が指定Z値範囲外に出たものは描画されない。
2以上フレームバッファ全域をスクリーンとする視野ピラミッドでクリップを行う。
1点でも視野ピラミッド外に出たポリゴンは描画されない。
clipZmin:視点座標系Z座標クリップ最小値
clipZmax:視点座標系Z座標クリップ最大値
 出 力
なし
 関数値
なし
 機 能
ポリゴンのクリッピングレベルをセットします。上位レベルは下位レベルの機能を含みます。レベル1の場合、ポリゴンの最大Z座標値で視点座標系内でクリッピングを行いますが、その範囲をSPR3_DrawModel()の実行前にclipZminとclipZmaxで設定する必要があります。



Title

関数仕様

Function

単位ピクセル数のセット

Function Name

SPR_3SetPixelCount

No

4

 書 式
void  SPR_3SetPixelCount(Uint16 pixelCountX, Uint16 pixelCountY)
 入 力
pixelCountX 
:クリーンXの単位ピクセル数
pixelCountY 
:スクリーンYの単位ピクセル数
 出 力
なし
 関数値
なし
 機 能
スクリーンへの透視変換時のXY各々1.0に対するスクリーンのピクセル数を設定します。初期設定時には各々256に設定されています。



Title

関数仕様

Function

光源のセット

Function Name

SPR_3SetLight

No

5

 書 式
void SPR_3SetLight(Uint16 moveKind, MthXyz *lightAngle)
 入 力
moveKind  
:移動量の種別
b0        
:0 = 相対移動
 1 = 絶対移動
b1        
:0 = 回転移動量が角度
 1 = 回転移動量が単位ベクトル
lightAngle
:平行光源の回転移動量が角度の場合、移動量の指定範囲は次式のとおりです。
 ベクトル指定の場合は角度に変換されます。
 FIXED(-180.0) ≦ 回転移動量 ≦ FIXED(180.0)
 回転操作はX→Y→Zの順番に行われます。
 出 力
なし
 関数値
なし
 機 能
光源アングルをセットします。




Title

関数仕様

Function

視点のセット

Function Name

SPR_3SetView

No

6

 書 式
voidSPR_3SetView(Uint16 moveKind, MthXyz *viewPoint,MthXyz *viewAngle, Uint16 angleSeq, MthXyz *viewCoordPoint)
 入 力
moveKind  
:移動量の種別
b0        
:0 = 相対移動
          
 1 = 絶対移動
b1        
:0 = 回転移動量が角度
          
 1 = 回転移動量がベクトル
viewPoin  
:視点の位置または平行移動量。
          
 ワールド座標系内の視点の回転位置で0の場合、無視されます。
viewAngle 
:視点の回転移動量が角度の場合、移動量の指定範囲は次式の通り。
          
 ベクトル指定の場合は角度に変換される。
          
 FIXED(-180.0) ≦ 回転移動量 ≦ FIXED(180.0)
          
 0の場合、無視されます。
angleSeq  
:視点の回転操作
viewCoordPoint
:視点座標系内での視点位置または平行移動量。
          
 0の場合、無視されます。初期値は、(0,0,0)になっています。
 出 力
なし
 関数値
なし
 機 能
視点位置をワールド座標系内で移動し、その位置を中心に回転します。
viewCoordPointの指定があれば視点座標系内で視点位置を原点から指定位置に移動します。

angleSeq = ROT_SEQ_ZYX : 視点の回転操作をZ→Y→Xの順番で行う
         = ROT_SEQ_ZXY :    ”    Z→X→Y  ”
         = ROT_SEQ_YZX :    ”    Y→Z→X  ”
         = ROT_SEQ_YXZ :    ”    Y→X→Z  ”
         = ROT_SEQ_XYZ :    ”    X→Y→Z  ”
         = ROT_SEQ_XZY :    ”    X→Z→Y  ”




Title

関数仕様

Function

クラスタの移動

Function Name

SPR_3MoveCluster

No

7

 書 式
void SPR_3MoveCluster(SprCluster *cluster, Uint16 moveKind,MthXyz *angle, MthXyz *point)
 入 力
cluster  
:移動すべきクラスタテーブルのポインタ
moveKind 
:移動量の種別
b0       
:0 = 相対移動
 1 = 絶対移動
b1       
:0 = 回転移動量が角度
 1 = 回転移動量が単位ベクトル
angle    
:回転移動量が角度の場合、移動量の指定範囲は次式のとおりです。
 ベクトル指定の場合は角度に変換されます。
 FIXED(-180.0) ≦ 回転移動量 ≦ FIXED(180.0)
point    
:平行移動量
 出 力
なし
 関数値
なし
 機 能
クラスタの移動を回転、平行移動の順番で行います。
angle, pointがそれぞれ0の場合、その値は無視されます。



Title

関数仕様

Function

モデルの登録

Function Name

SPR_3DrawModel

No

8

 書 式
void SPR_3DrawModel(SprCluster *rootCluster)
 入 力
rootCluster:表示すべきモデルのルートクラスタテーブルのポインタ
 出 力
なし
 関数値
なし
 機 能
モデルを登録します。



Title

関数仕様

Function

モデルの描画

Function Name

SPR_3Flush

No

9

 書 式
void SPR_3Flush(void)
 入 力
なし
 出 力
なし
 関数値
なし
 機 能
モデルを描画します。
SPR_3DrawMode()により登録されたポリゴン群の視点座標系におけるZソートを完了します。



Title

関数仕様

Function

テクスチャのセット

Function Name

SPR_3SetTexture

No

10

 書 式
void SPR_3SetTexture(SprTexture *texture)
 入 力
texture:テクスチャテーブルのポインタ
 出 力
なし
 関数値
なし
 機 能
テクスチャをセットします。



Title

関数仕様

Function

テクスチャエリアの解放

Function Name

SPR_3ClrTexture

No

11

 書 式
void SPR_3ClrTexture(SprTexture *texture)
 入 力
texture:テクスチャテーブルのポインタ
 出 力
なし
 関数値
なし
 機 能
テクスチャエリアを解放します。



Title

関数仕様

Function

全クラスタに対する
ファンクションコール

Function Name

SPR_3CallAllCluster

No

12

 書 式
void SPR_3CallAllCluste(SprCluster *cluster, void (*userFunc)(SprCluster*))
 入 力
cluster 
:ルートクラスタテーブルのポインタ
userFunc
:ユーザファンクション
 出 力
なし
 関数値
なし
 機 能
ルートクラスタにつながる全クラスタ毎にそのクラステーブルをパラメータとして指定ファンクションを呼び出します。



Title

関数仕様

Function

テクスチャカラーデータの変更

Function Name

SPR_3ChangeTexColor

No

13

 書 式
voidSPR_3ChangeTexColor(Uint16 charNo, Uint16 color,SprLookupTbl *lookupTbl)
 入 力
charNo   
:キャラクタ番号
color    
:カラーデータルックアップテーブル番号またはカラーバンクコード
lookupTbl
:ルックアップテーブルのポインタ
 出 力
なし
 関数値
なし
 機 能
キャラクタ番号で指定された登録済みテクスチャのカラーデータとカラールックアップテーブルの変更を行います。 lookupTblが0の場合、colorの変更のみ行い、カラールックアップテーブルの登録は行いません。



Title

関数仕様

Function

Zソート範囲の最小最大値をセット

Function Name

SPR_3SetZSortMinMax

No

14

 書 式
voidSPR_3SetZSortMinMaxl(Uint16 zSortMode,Fixed32 zSortMin,Fixed32 zSortMax)
 入 力
zSortMode
:ZソートZ座標値の採用モード
 ZSORT_FLOAT_MODE=浮動モード
 ZSORT_FIXED_MODE=固定モード
zSortMin 
:視点座標系ZソートZ座標最小値
zSortMax 
:視点座標系ZソートZ座標最大値
 出 力
なし
 関数値
なし
 機 能
 zSortMinとzSortMaxは描画順番のブロック分けをするZの範囲を指定するパラメータで、SPR3_DrawModel()ルーチンの実行前に設定します。
 Z座標値の採用モードとして浮動モードを指定すると指定されたzSortMinとzSortMaxを初期値とし、以後のZの範囲には前回描画時の視点座標系Z座標最大値と最小値を採用します。
 固定モードの場合、指定されたzSortMinとzSortMaxを固定値として採用します。
 SPR_3Initial()ルーチンの初期設定時にはzSortMinとして-10.0がzSortMaxとして0.0が設定されZ座標値の採用モードは浮動モードとなっています。
 視点座標系では、視点位置座標が0.0でZのマイナス方向を向いています。
 Zソートで使用するブロックはVDP1拡張処理の描画プライオリティブロックを使用するので、Zソートを細かく行いたい場合、2Dワークエリア定義で描画プライオリティブロック数を大きく取る必要があります。
 また、Zソートを行う場合はSPR_2OpenCommand()ルーチンでdrawPrtyFlag=SPR_2DRAW_PRTY_ONにしなければなりません。




Title

関数仕様

Function

現3D環境データの取得

Function Name

SPR_3GetStatus

No

15

 書 式
void SPR_3GetStatus(Spr3dStatus *spr3dStatus)
 入 力
なし
 出 力
spr3dStatus:3D環境データテーブルのポインタ
 関数値
なし
 機 能
現3D環境データを取得します。




Title

関数仕様

Function

オブジェクトの面法線ベクトル計算

Function Name

SPR_3SetSurfNormVect

No

16

 書 式
void SPR_3SetSurfNormVect(SprObject3D *obj)
 入 力
なし
 出 力
obj:3Dオブジェクト
 関数値
なし
 機 能
指定3Dオブジェクトの面の頂点テーブルから法線ベクトルを計算し面法線ベクトルテーブルに設定します。法線ベクトルは面の頂点順を右回りとしてそれに垂直になります。
3Dオブジェクトの surfNormK パラメータを設定する必要があります。




Title

関数仕様

Function

VDP1の高速描画パラメータセット

Function Name

SPR_3SetDrawSpeed

No

17

 書 式
voidSPR_3SetDrawSpeed(Sint32 hssFlag, Sint32 eosFlag, Sint32 pclpFlag)
 入 力
hssFlag
:ハイスピードシュリンクフラグ(テクスチャポリゴンの描画モード指定)
 0 = 精度優先描画(デフォルト)
 1 = 速度優先描画
eosFlag
:速度優先描画を指定した時の元絵テクスチャのサンプリング座標
 0 = 偶数座標をサンプリング(デフォルト)
 1 = 奇数座標をサンプリング
pclpFlag
:プリクリッピング有効/無効フラグ
 0 = 有効(デフォルト)
 1 = 無効
 出 力
なし
 関数値
なし
 機 能
VDP1スプライトコマンドの描画モードに埋め込む高速描画モードを設定します。ハイスピードシュリンク、プリクリッピングについてはVDP1ハードウェアマニュアルを参照してください。


戻る|   ■
PROGRAMMER'S GUIDEVDP1ライブラリ
Copyright SEGA ENTERPRISES, LTD., 1997