サンプル
カリングモード
ここではカリングモードについて解説します。
カリングモードとはポリゴンの表裏を判別し、指定した面を描画する方法です。
※ 開発環境によってダウンロードするサンプルデータが異なります。
目次
1. カリングモードの設定
カリングモードを設定するには、カリング対象であるモデルの mceAppearance を取得し、mceAppearance_setCullingMode( This, mode ) を用いて行います。
カリングのモード設定には以下の 3 種類が用意されています。
- mceAppearance_CullingMode_CULL_BACK ( 背面カリング指定 )
- mceAppearance_CullingMode_CULL_FRONT ( 前面カリング指定 )
- mceAppearance_CullingMode_CULL_NONE ( カリングなし )
上記を設定することで、状況に応じたカリングが可能となります。
下記のサンプルプログラムでは、カリングなしの描画と背面カリングの描画の切り替えを行っています。
typedef struct tagWork
{
(中略)
mceFigure *Figure; /* Figure */
(中略)
mceAppearance *Appe; /* Appearance */
/*------ カリング ------*/
hi_uint8 CullingFlag; /* カリングフラグ */
(中略)
} WORK;
work->CullingFlag = 0;
(中略)
hi_exception exception; /* エラーフラグ */
(中略)
/*------ カリング設定 ------*/
/* カリング対象のモデルからmceAppearanceを取得*/
work->Appe = (mceAppearance *)mceObject3D_findObject3D (
(mceObject3D *)work->Figure,
ClassId_Appearance,
0);
if (work->Appe == NULL)
{
return 1;
}
/* 取得したmceAppearanceに対してカリングを設定 */
if (work->CullingFlag == 0)
{
exception = mceAppearance_setCullingMode (work->Appe,
mceAppearance_CullingMode_CULL_NONE);
if (exception != hi_NoException)
{
return 1;
}
}
else
{
exception = mceAppearance_setCullingMode (work->Appe,
mceAppearance_CullingMode_CULL_BACK);
if (exception != hi_NoException)
{
return 1;
}
}
![]() |
![]() |
| カリングなしのモデル | 背面カリングのモデル |
| 描画結果 | |



