DrawSphere3D

3D空間に球を描画する

DrawSphere3D CenterPos, r, DivNum, DifColor, SpcColor, FillFlag

VECTOR CenterPos : 球の中心座標
float r : 球の半径
int DivNum : 球を形成するポリゴンの細かさ
unsigned int DifColor : 球の頂点ディフューズカラー
unsigned int SpcColor : 球の頂点スペキュラカラー
int FillFlag : 球を塗りつぶすかどうか( TRUE:塗りつぶす FALSE:塗りつぶさない )

(プラグイン / モジュール : DxLibW)

解説

3D空間に CenterPos を中心座標とした半径 r の球を描画します。

DivNum は球を形成するポリゴンの細かさです。

引数 CenterPos は float x, y, z の三つのメンバ変数を持っている構造体 VECTOR で、
この3要素を使用して3次元の座標を指定します。

引数が構造体だと事前に引数に渡す構造体を宣言してメンバ変数に座標値を代入して・・・と準備が面倒ですが、
引数に x, y, z の値を渡すとそれを元にした VECTOR 構造体を戻り値で返してくれる関数 VGet を使用することで簡素に引数を渡すことが出来ます。

// 例:座標 ( 320.0f, 100.0f, 0.0f ) を中心に半径 80.0f の球を描画する
DrawSphere3D( VGet( 320.0f, 100.0f, 0.0f ), 80.0f, 16, GetColor( 255,0,0 ), GetColor( 0,0,0 ), FALSE ) ;

引数 DifColor と SpcColor はそれぞれ球の頂点ディフューズカラーと頂点スペキュラカラーです、
この関数で描かれる球はライティング計算が行われるので、
ただの「描画カラー」ではなくライティング計算で使用される「頂点ディフューズカラー( 拡散光色 )」と「頂点スペキュラカラー( 反射光色 )」を指定します。

この二つの色の値はライブラリの関数『GetColor』を使って取得します。

尚、この引数で指定する値は球を描画する際に用意される頂点データに含まれるディフューズカラーとスペキュラカラーですので、
SetMaterialUseVertDifColorSetMaterialUseVertSpcColor で頂点カラーを使用しない設定にした場合はこの引数の値は使用されず、
SetMaterialParam の引数で指定されたマテリアルのディフューズカラーとスペキュラカラーがそれぞれ使用されます。

因みに球の中身を塗りつぶす場合、
ZバッファとZバッファへの書き込みをそれぞれ SetUseZBuffer3D 関数と SetWriteZBuffer3D 関数で有効にしておかないと手前の面を描画した後に後ろの面が描画されたりして正常な見た目になりませんので注意してください。

戻り値:
  0:成功

関連項目

DrawSphere3DD3Dの球体を描画する(DxLibW)

情報

プラグイン / モジュールDxLibW
バージョン3.24f
作成日2026/04/12
著作者DxLib: Takumi Yamada / HSP binding: IronHSP Project
URLhttps://dxlib.xsrv.jp/
備考hspdxlib.as をインクルードして使用
タイプDxLib ゲームライブラリ
グループDxLib グラフィック描画
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\hspdxlib.hs