トップページ > 過去ログ > 記事閲覧
3D画面分割について
名前:たかひろ 日時: 2011/09/09 18:21

タイトルの通りなんですが、画面の分割を実装するには SetDrawArea関数とSetDrawArea関数を使うんですよね? 今、対戦用に上下に2分割した画面を作りたいと思ってますが、上手くいかないので詳しい方法を教えて欲しいです。 SetCameraScreenCenter( 320.0f, 360.0f ) ; SetDrawArea( 0 , 0 , 640 , 480 ) ; ↑こういう風に書いても下半分がまっくらになってしまい 下半分にも画面を書こうと直後に SetCameraScreenCenter( 320.0f, 120.0f ) ; SetDrawArea( 0 , 0 , 640 , 240 ) ; と書き足すと今度は上半分に画面が描画されなくなってしまいます。

Page: 1 |

Re: 3D画面分割について ( No.1 )
名前:いっち 日時:2011/09/09 19:26

特に問題なく動作しているように見受けられました。 //- 以下、テストコード (DxChara.xを使用)-// #include "DxLib.h" int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int ) { ChangeWindowMode( TRUE ); SetWindowText( "DxLib:" DXLIB_VERSION_STR ); if ( DxLib_Init( ) == -1 ) return -1; int white = GetColor( 255, 255, 255 ); int mh = MV1LoadModel( "DxChara.x" ); MV1SetPosition( mh, VGet( 320.0f, -300.0f, 600.0f ) ); SetDrawScreen( DX_SCREEN_BACK ); while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { ClearDrawScreen( ); DrawFormatString( 0, 0, white, "TEST" ); SetDrawArea( 0, 0, 640, 240 ); SetCameraScreenCenter( 320.0f, 120.0f ); DrawBox( 0, 0, 640, 480, GetColor( 128, 0, 0 ), TRUE ); MV1DrawModel( mh ); SetDrawArea( 0, 240, 640, 480 ); SetCameraScreenCenter( 320.0f, 360.0f ); DrawBox( 0, 0, 640, 480, GetColor( 0, 128, 0 ), TRUE ); MV1DrawModel( mh ); SetDrawAreaFull( ); ScreenFlip( ); } DxLib_End( ); return 0; }
Re: 3D画面分割について ( No.2 )
名前:たかひろ 日時:2011/09/09 21:40

>いっちさん テストコードをこちらでも試してみたところ、確かに正常に動きました。 ただ、3Dモデルは表示されませんでしたが・・・。 もしかして、この関数は3Dには使えないのでしょうか。 テストプログラムをゲーム用に改良し、 SetDrawArea( 0, 0, 640, 240 ); SetCameraScreenCenter( 320.0f, 120.0f); SetCameraPositionAndTarget_UpVecY( 1Pカメラ座標 ) ; SetDrawArea( 0, 240, 640, 480 ); SetCameraScreenCenter( 320.0f, 360.0f ); SetCameraPositionAndTarget_UpVecY( 2Pカメラ座標 ) ; SetDrawAreaFull( ); というようにしてみましたが、 最後のSetDrawAreaFull関数の影響か、実際の実行画面は全画面表示で2P視点が描画され、 1P視点はどこにも描画されません(2回目のSetCameraScreenCenter関数の影響で注視点もずれている)。 SetDrawAreaFull関数を消すと、上半分は真っ暗で下半分だけ2P視点が描画されます。 推測ですが、2回目のSetDrawArea関数で1P視点の描画に上書きされてしまうのではないかと思います。 リファレンスを読んだところ、SetDrawArea関数は、指定した領域以外には「描画しない」ため、 1P視点を描画後、2P視点を描画する際に上半分を指定していないので描画をやめてしまい、真っ暗になってしまうように思います。 でもDrawBox関数は普通に機能するんですよね・・・ 3Dモデルの表示やカメラ座標の設定だけ何故できないのでしょう。
Re: 3D画面分割について ( No.3 )
名前:いっち 日時:2011/09/09 22:06

> ただ、3Dモデルは表示されませんでしたが・・・。 (No.1) のソースを実行しても"DxChara.x"が表示されないという意味でしょうか? その際の log.txt をご提供下さい。
Re: 3D画面分割について ( No.4 )
名前:たかひろ 日時:2011/09/09 22:36

> (No.1) のソースを実行しても"DxChara.x"が表示されないという意味でしょうか? いえ、"DxChara.x"の部分は自前で用意した3Dモデルに変えたため、そもそもモデルがロードできていない、なんていう事はありません。 以下、log.txtです。 0:システムの情報を出力します 3: DXライブラリ Ver3.05 6: 論理プロセッサの数 : 4 9: OS Windows7 ( Build 7600 ) 114: CPU動作速度:大体1.32GHz 117: MMX命令を使用します 120: SSE命令が使用可能です 123: SSE2命令が使用可能です 126: CPUベンダ:GenuineIntel 137: CPU名:Intel(R) Core(TM) i3 CPU U 380 @ 1.33GHz 145:COMの初期化... 成功しました 185:メモリ総量:1902.13MB 空きメモリ領域:787.08MB 189:タイマーの精度を検査します 192:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 195: パフォーマンスカウンターを使用します タイマー精度 : 1298.828000 KHz 200: ソフトの二重起動検査... 二重起動はされていませんでした 208:ウインドウクラスを登録します... 登録に成功しました 214:ウインドウモード起動用のウインドウを作成します 222:ウインドウの作成に成功しました 359:IMEを無効にしました 376:ウインドウスタイルをウインドウモード用に変更します... 完了 386:DirectInput関係初期化処理 394: DirectInput7 の取得中... 成功 463: 引き続き初期化処理... 初期化成功 473: ジョイパッドの初期化... 488: ジョイパッドの初期化は正常に終了しました 492: マウスデバイスの初期化... 初期化成功 499: キーボードデバイスの初期化... 初期化成功 508:DirectInput 関連の初期化は正常に終了しました 516:DirectSound の初期化を行います 520:DirectSound インターフェースの取得を行います.... 成功 540:引き続きインターフェースの初期化処理... 成功 647: DirectSound デバイスを列挙します 652: モジュール名: ドライバ記述:プライマリ サウンド ドライバー 656: モジュール名:{0.0.0.00000000}.{11d100df-3b99-4fd8-8a08-283e7746b39e} ドライバ記述:スピーカー (Realtek High Definition Audio) 660: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz 664: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 669: 利用可能サンプリング精度 673: プライマリ 16bit = OK 8bit = OK 677: セカンダリ 16bit = OK 8bit = OK 681: 利用可能チャンネル 685: プライマリ MONO = OK STEREO = OK 689: セカンダリ MONO = OK STEREO = OK 694:DirectSound の初期化は正常に終了しました 710:DirectDraw オブジェクトの取得を行います.... 成功 774:引き続き初期化処理... 初期化に成功しました 868:IDirect3D9Ex オブジェクトを取得します.... 成功 881:IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します 1240:成功 1245:Driver:igdumdx32.dll Description:Intel(R) Graphics Media Accelerator HD 1248:画面のフォーマットは D3DFMT_X8R8G8B8 です 1252:Zバッファのフォーマットは D3DFMT_D16 です 1255:16bit カラーフォーマットは D_D3DFMT_R5G6B5 です 1259:32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 1262:アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です 1266:アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 1270:アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です 1273:アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 1278:DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です 1281:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です 1284:DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です 1288:DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です 1293:DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です 1296:描画用 16bit カラーフォーマットは D_D3DFMT_R5G6B5 です 1300:描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 1305:描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 1311:最大テクスチャサイズ 幅:4096 高さ:4096 1316:テクスチャステージテンポラリレジスタ:使用可 1320:減算合成のハードウェア対応:ネイティブ 1324:頂点シェーダーバージョンコード:300 1329:ピクセルシェーダーバージョンコード:300 1412:バックバッファロック転送の時間:19304nsec 一時的な描画可能バッファを使用した転送の時間:3664nsec 1417:バックバッファロックを使用しません 1421:Zバッファを作成します.... 成功 1454:プログラマブルシェーダーを使用します 1626:フォントの初期化を行います 1640:フォントの初期化は正常に終了しました 1645:文字コードバッファの初期化を行います... 完了しました 4651:ウインドウを閉じようとしています 4697:ウインドウが破棄されようとしています 4728:ソフトを終了する準備が整いました 4786:フォントの初期化を行います 4791:フォントの初期化は正常に終了しました 4796:Direct3DDevice9 の解放 3 4866:Direct3D9 DLL の解放 4 4876:DirectInput 関連の終了処理... 完了 4984:DirectSound の終了処理は正常に終了しました 4990: 4993:Alloc memory dump 4997: Total size:0(0.000kb) Alloc num:0 5000:
Re: 3D画面分割について ( No.5 )
名前:いっち 日時:2011/09/09 23:10

> いえ、"DxChara.x"の部分は自前で用意した3Dモデルに変えたため、そもそもモデルがロードできていない、なんていう事はありません。 "DxChara.x"でご確認下さい。 それと差し支えなければ、DXライブラリを最新のものに更新してお試し下さい。
Re: 3D画面分割について ( No.6 )
名前:たかひろ 日時:2011/09/11 02:42

ライブラリを最新のものに更新しましたが、 問題は解決されませんでした。 コードも全く一緒にしましたがこれはプログラムの問題ではないのでしょうか・・・
Re: 3D画面分割について ( No.7 )
名前:いっち 日時:2011/09/11 20:25

> コードも全く一緒にしましたがこれはプログラムの問題ではないのでしょうか・・・ 私では分かりかねます。 念のため、私の環境でビルドした実行ファイルとスクリーンショットをアップロードしました。 お手数ですがご確認下さい。 > h t t p : / / w w w1.axfc.net/uploader/Sc/so/273734.zip&key=dxlib
Re: 3D画面分割について ( No.8 )
名前:たかひろ(解決) 日時:2011/09/12 02:30

ダウンロードさせていただきました実行ファイルは正常に動作し、3Dモデルも表示されました。 このファイルを参考に自分のコードをもう一度見直してみます。 これにて一旦解決とさせていただきます。

Page: 1 |