DrawCone3D

3D空間に円錐を描画する

DrawCone3D TopPos, BottomPos, r, DivNum, DifColor, SpcColor, FillFlag

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

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

解説

3D空間に TopPos を頂点、BottomPos を底辺の中心とした半径 r の円錐を描画します。

DivNum はカプセルを形成するポリゴンの細かさです。

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

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

// 例:
// 座標 ( 320.0f, 400.0f, 0.0f ) を頂点
//      ( 320.0f, 100.0f, 0.0f ) を底辺の中心とした円錐を描画する
DrawCone3D( VGet(320.0f,400.0f,0.0f), VGet(320.0f,100.0f,0.0f),80.0f,8,GetColor(255,255,0), FALSE);

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

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

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

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

戻り値:
  0:成功

関連項目

DrawCone3DD3Dの円錐を描画する(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