gSPLight.htm
3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>
<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.0j">
</HEAD>
<BODY>
<P>
<A NAME="_Toc366998474"></A><B><FONT FACE="Arial">gSPLight(3P)</FONT><FONT FACE="MS Pゴシック">
<BR>
</FONT></B>
<P>
<B>関数名 <BR>
</B>
<P>
gSPLight, gsSPLight
<P>
→ RSPへのライトのロード。<BR>
<P>
<B>構文<BR>
</B>
<P>
#include "gbi.h"
<P>
typedef struct {
<P>
unsigned char col[3]; /* ディフューズライト値(rgba)*/
<P>
char pad1;
<P>
unsigned char colc[3]; /* ディフューズライト値のコピー(rgba)*/
<P>
char pad2;
<P>
signed char dir[3]; /* ライトソースに向かっての方向 */
<P>
char pad3; /* 重要: dir の大きさは、127以下 */
<P>
} Light_t;
<P>
typedef union {
<P>
Light_t l;
<P>
long int force_structure_alignment[4];
<P>
} Light;
<P>
gSPLightGfx *gdl, Light *l, int n)
<P>
gsSPLight(Light *l, int n) <BR>
<P>
<B>パラメータ <BR>
</B>
<P>
<B>*gdl</B> グラフィックディスプレイリストポインタ。
<P>
<B>l</B> ライトポインタ。
<P>
<B>n</B> 置き換えるライトの番号、1〜8。<BR>
<P>
<B>説明<BR>
</B>
<P>
<b>gSPLight(3P)</b>コマンドはライトバッファ中にナンバリングされた位置に一つのライト構造体をロードします。
<BR>
<P>
ライティング計算に使用されるライトをどれに指定するかは<a href="../gsp/gSPNumLights.htm">gSPNumLights(3P)</a>コマンドを使用してください。<a href="../gsp/gSPNumLights.htm">gSPNumLights(3P)</a>でNライトを使用するように指定した場合、最初のNライト(1-N)は方向ライト(カラーと方向)として使用され、N+1番目はアンビエントライト(カラーのみ)として使用されます。
<BR>
<P>
ライト構造体中のカラーはマテリアルカラーとライトカラーをコンバインします。最初はこの設定方法は使いにくく思うかもしれませんが、この最適化はRSPジオメトリエンジンのスピードアップを図っています。
<BR>
<P>
(<b>gSPLight(3P)</b>コマンドで)ライトが設定され、(<a href="../gsp/gSPVertex.htm">gSPVertex(3P)</a>コマンドのどれかが)使用された後、そのライトカラーは再度<b>gSPLight(3P)</b>をコールすることによる将来の<a href="../gsp/gSPVertex.htm">gSPVertex(3P)</a>コール中での頂点のために変更されるかもしれません。このライトカラーの変更手順は、パフォーマンスの効率化になります(これはマテリアルカラーを変更するためにも使用できます)。しかしながら、光の方向が変更された場合は、ライトは<b>gSPLight(3P)</b>コマンドで再度送られ、<a href="../gsp/gSPNumLights.htm">gSPNumLights(3P)</a>コマンドで(変更がなかったとしても)リセットされなければなりません。
<BR>
<P>
静的ライトを定義する最良の方法は、(<b>gSPLight(3P)</b>と<a href="../gsp/gSPNumLights.htm">gSPNumLights(3P)</a>を使用する代わりに)
<a href="../gsp/gSPSetLights.htm ">gSPSetLights(3P)</a> コマンドによってフォローされる<a href="../gdsp/gdSPDefLights.htm">gdSPDefLights(3P)</a>コマンドを使用することです。
<BR>
<P>
<B>注意<BR>
</B>
<P>
ストラクチャ中でディフューズライト値のコピーが必要な理由は、RSPジオメトリエンジンの効率化のために頂点のライティング計算を一度に2つ処理しているからです。この最適化は'スペシャルエフェクト'に利用しています。
<BR>
<P>
<B>参照 <BR>
</B>
<P>
<a href="../gsp/gSPGeometryMode.htm">gSPGeometryMode(3P)</a> <a href="../gsp/gSPSetLights.htm">gSPSetLights(3P)</a> <a href="../gdsp/gdSPDefLights.htm">gdSPDefLights(3P)</a> <a href="../gsp/gSPNumLights.htm">gSPNumLights(3P)</a>
<a href="../gsp/gSPLightColor.htm">gSPLightColor(3P)</a> <BR>
</BODY>
</HTML>