サンプル
フォグ
ここではフォグについて解説します。
※ 開発環境によってダウンロードするサンプルデータが異なります。
目次
フォグとは視界距離に合わせて霧のようなぼかし効果を加えるもので、遠くにあるオブジェクトほど霞んで描画することができます。
1. フォグの設定
フォグを発生させるには、フォグのタイプ設定に mceCamera_setFogType( This, type ) 、フォグの色設定に mceCamera_setFogColor( This, bgr ) を使用します。
フォグのタイプには以下の3種類が用意されています。
- mceCamera_FogType_NONE ( フォグ無効 )
- mceCamera_FogType_LINEAR ( リニア指定 )
- mceCamera_FogType_EXPONENT ( 指数指定 )
発生させるフォグの濃度設定は、フォグのタイプ設定によって異なり、mceCamera_FogType_LINEAR の場合は mceCamera_setFogStartEnd( This, s, e ) を使用してフォグ発生開始位置と終了位置を設定します。
また、mceCamera_FogType_EXPONENT の場合は、mceCamera_setFogDensity( This, d ) を使用します。
typedef struct tagWork
{
(中略)
mceCamera *Camera; /* Camera */
(中略)
mceCamera_FogType FogType; /* フォグタイプ */
hi_sint32 FogColor; /* フォグカラー */
hi_coord FogNear; /* フォグニア */
hi_coord FogFar; /* フォグファー */
} WORK;
work->FogType = mceCamera_FogType_LINEAR;
work->FogColor = 0x00400000;
work->FogNear = MCE_F2C ( 0.1f);
work->FogFar = MCE_F2C (80.0f);
(中略)
hi_exception exception;
(中略)
/* フォグの発生設定 */
exception = mceCamera_setFogType (work->Camera, work->FogType);
if (exception != hi_NoException)
{
return 1;
}
mceCamera_setFogColor (work->Camera, work->FogColor);
mceCamera_setFogStartEnd (work->Camera,
work->FogNear, work->FogFar);
hi_exception exception;
exception = mceCamera_setFogType (work->Camera,
mceCamera_FogType_EXPONENT);
if (exception != hi_NoException)
{
return 1;
}
mceCamera_setFogColor (work->Camera, 0x00400000);
/* フォグの濃度を設定 */
mceCamera_setFogDensity (work->Camera, MCE_F2C (0.04f));
![]() |
![]() |
| mceCamera_FogType_LINEAR ( 発生範囲 0.01 から 80.0 ) |
mceCamera_FogType_LINEAR ( 発生範囲 60.0 から 80.0 ) |
![]() |
![]() |
| mceCamera_FogType_EXPONENT ( 濃度 0.02 ) |
mceCamera_FogType_EXPONENT ( 濃度 0.04 ) |
| 描画結果 | |





