いえ、そのような仕様はありません
ためしに以下のような MakeScreen を使用した後にシャドウマップを使用する
プログラムを組んでみましたが、正常に影が表示されました
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int CharaModelHandle ;
int ShadowMapHandle ;
int Screen ;
// ウインドウモードで起動する
ChangeWindowMode( TRUE ) ;
// DXライブラリの初期化
if( DxLib_Init() < 0 )
{
// エラーが発生したら終了
return -1 ;
}
// MakeScreen で仮画面を作成する
Screen = MakeScreen( 640, 480 ) ;
// キャラクターモデルの読み込み
CharaModelHandle = MV1LoadModel( "DxChara.x" ) ;
// シャドウマップハンドルの作成
ShadowMapHandle = MakeShadowMap( 1024, 1024 ) ;
// カメラの位置と向きを設定
SetCameraPositionAndTarget_UpVecY( VGet( 0.0f, 800.0f, -800.0f ), VGet( 0.000f, 500.000f, 0.000f ) );
// 描画する奥行き方向の範囲を設定
SetCameraNearFar( 40.000f, 2000.000f );
// ライトの方向を設定
SetLightDirection( VGet( 0.5f, -0.5f, 0.5f ) );
// シャドウマップが想定するライトの方向もセット
SetShadowMapLightDirection( ShadowMapHandle, VGet( 0.5f, -0.5f, 0.5f ) ) ;
// シャドウマップに描画する範囲を設定
SetShadowMapDrawArea( ShadowMapHandle, VGet( -1000.0f, -1.0f, -1000.0f ), VGet( 1000.0f, 1000.0f, 1000.0f ) ) ;
// Zバッファに対する描画を有効にする
SetUseZBufferFlag( TRUE ) ;
SetWriteZBufferFlag( TRUE ) ;
// メインループ
while( ProcessMessage() == 0 )
{
// 描画先を仮画面に変更
SetDrawScreen( Screen ) ;
// 画面をクリア
ClearDrawScreen() ;
// カメラの位置と向きを設定
SetCameraPositionAndTarget_UpVecY( VGet( 0.0f, 800.0f, -800.0f ), VGet( 0.000f, 500.000f, 0.000f ) );
// 描画する奥行き方向の範囲を設定
SetCameraNearFar( 40.000f, 2000.000f );
// シャドウマップへの描画の準備
ShadowMap_DrawSetup( ShadowMapHandle ) ;
// シャドウマップへキャラクターモデルの描画
MV1DrawModel( CharaModelHandle ) ;
// シャドウマップへの描画を終了
ShadowMap_DrawEnd() ;
// 描画に使用するシャドウマップを設定
SetUseShadowMap( 0, ShadowMapHandle ) ;
// 足場の描画
DrawCube3D( VGet( -1000.0f, -100.0f, -1000.0f ), VGet( 1000.0f, 0.0f, 1000.0f ), GetColor( 100,200,100 ), GetColor( 0,0,0 ), TRUE ) ;
// キャラクターモデルの描画
MV1DrawModel( CharaModelHandle ) ;
// 描画に使用するシャドウマップの設定を解除
SetUseShadowMap( 0, -1 ) ;
// 描画先を裏画面に変更
SetDrawScreen( DX_SCREEN_BACK ) ;
// 仮画面を裏画面に描画する
DrawGraph( 0, 0, Screen, FALSE ) ;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// シャドウマップの削除
DeleteShadowMap( ShadowMapHandle ) ;
// キャラクターモデルの削除
MV1DeleteModel( CharaModelHandle ) ;
// 仮画面の削除
DeleteGraph( Screen ) ;
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}
よろしければ TAKUさんの環境でも上記のプログラムで正常に影が描画されるか試してみてください m(_ _)m
( 因みに DrawCube3D で描画されるキューブに影が適用されるようになったのは最近の
バージョンなので、もし最新版のDXライブラリをお使いではありませんでしたら
こちらの暫定最新版のDXライブラリをお使いください
https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用
https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用
https://dxlib.xsrv.jp/temp/DxLibBCC2Test.exe // C++ Builder 10.1 Berlin 用
https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用
https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用
https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』をして下さい)