トップページ > 過去ログ > 記事閲覧
図形が表示できません
名前:さと 日時: 2006/11/08 20:04

はじめまして、 14歳からはじめるC言語を買って勉強はじめましたが、最初のサンプルプログラムから、悩んでいます。以下のプログラムですが #include "DxLib.h" int WINAPI WinMain(HINSTANCE hI,HINSTANCE hP,LPSTR lpC,int nC) { ChangeWindowMode(TRUE);//ウィンドウモード起動 if(DxLib_Init() == -1) return (-1);//DXライブラリ初期化 DrawBox(0,0,120,120,65535,TRUE); WaitKey();//キー入力待ち DxLib_End();//DXライブラリ終了 return (0);//終了 } プログラムを実行したところウィンドウは表示されましたが、 ウィンドウ内にDrawBoxで描かれるはずの図形が表示されないので、過去ログから調べて、 DxLib_Init の前に、SetScreenMemToVramFlag( FALSE );を付け足したところ表示されましたが、画面がフリーズを起こし、何度やってもctrl+Alt+Deleteで強制終了するしかありません。アドバイスをいただけないでしょうか。 ちなみに、以下はログファイルです。 2:システムの情報を出力します 2: DXライブラリ Ver2.22d 3: OS WindowsMe ( Build 73010104 ) 104: CPU動作速度:大体0.85GHz 104: MMX命令を使用します 105: CPUベンダ:AuthenticAMD 106: CPU名:AMD Duron(tm) Processor 107:COMの初期化... 成功しました 140:ソフトの二重起動検査... 二重起動はされていませんでした 140:メモリ総量:375.08MB 空きメモリ領域:185.45MB 141:ソフトの実行優先レベルを上げました 141:ウインドウクラスを登録します... 登録に成功しました 142:ウインドウモード起動用のウインドウを作成します 156:IMEを無効にしました 158:タイマーの精度を検査します 165:精度結果 更新回数 マルチメディアタイマー:4 パフォーマンスカウンター:60 165:パフォーマンスカウンターを使用します タイマー分解能 : 1193.180000 KHz 366:ウインドウスタイルをウインドウモード用に変更します... 完了 368:DirectInput関係初期化処理 369: DirectInput7 の取得中... 成功 413: 引き続き初期化処理... 初期化成功 414: ジョイパッドの初期化... 419: ジョイパッドの初期化は正常に終了しました 419: マウスデバイスの初期化... 初期化成功 421: キーボードデバイスの初期化... 初期化成功 423:DirectInput 関連の初期化は正常に終了しました 424:DirectSound の初期化を行います 424:DirectSound インターフェースの取得を行います.... 成功 429:引き続きインターフェースの初期化処理... 成功 484: DirectSound デバイスを列挙します 486: モジュール名: ドライバ記述:プライマリ サウンド ドライバ 487: モジュール名: yacxg.sys ドライバ記述:YAMAHA AC-XG WDM Audio 487: モジュール名: WaveOut 1 ドライバ記述:ゲーム互換デバイス (列挙済み) 487: モジュール名: WaveOut 2 ドライバ記述:Voice Modem Wave #00 Line (列挙済み) 488: モジュール名: WaveOut 3 ドライバ記述:Voice Modem Wave #00 Handset (列挙済み) 488: 最大サンプリングレート:48.00KHz 最小サンプリングレート:44.10KHz 488: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 489: 利用可能サンプリング精度 489: プライマリ 16bit = OK 8bit = NO 489: セカンダリ 16bit = OK 8bit = NO 490: 利用可能チャンネル 490: プライマリ MONO = OK STEREO = OK 490: セカンダリ MONO = OK STEREO = OK 491:DirectSound の初期化は正常に終了しました 491:DirectDraw 関連の初期化を行います 492: DirectDraw オブジェクトの取得を行います.... 成功 494: 引き続き初期化処理... 初期化に成功しました 497: ビデオカードの情報 498: 画面モード変更処理を開始します 559: 画面モードの変更処理を開始します 640 x 480 16 bit 560: ウインドウモードにします 560: 画面モードの変更は正常に終了しました 561: カラー情報 561: A:00000000 B:0000f800 G:000007e0 B:0000001f 561: ウインドウスタイルをウインドウモード用に変更します... 完了 562: 出力画面用の DirectDrawSurface を作成します 564: 各スクリーンメモリの配置位置 565: PrimaryBuffer : VIDEOMEMORY 565: BaskBuffer : VIDEOMEMORY 565: 出力画面用の DirectDrawSurface の作成は正常に終了しました 566: Direct3D 関連の初期化を行います 568: Direct3Dオブジェクトを取得します 576: Direct3Dオブジェクトを取得しました 578: 3Dデバイスを作成します... 3Dデバイスの作成に成功しました 583: テクスチャ最大幅:2048 最小幅:1 583: 描画制限: D_D3DPTEXTURECAPS_POW2 = 1 D_D3DPTEXTURECAPS_SQUAREONLY = 0 584: テクスチャピクセルフォーマット 584: 通常グラフィック用 584: BIT:16 RED:5 GREEN:6 BLUE:5 584: RED:00f800 GREEN:0007e0 BLUE:00001f 585: BIT:16 RED:5 GREEN:6 BLUE:5 585: RED:00f800 GREEN:0007e0 BLUE:00001f 585: アルファチャンネル付きグラフィック用 586: BIT:16 ALPHA:4 RED:4 GREEN:4 BLUE:4 586: ALPHA:0000f000 RED:00000f00 GREEN:000000f0 BLUE:0000000f 586: BIT:32 ALPHA:8 RED:8 GREEN:8 BLUE:8 587: ALPHA:ff000000 RED:00ff0000 GREEN:0000ff00 BLUE:000000ff 587: Direct3D 関連の初期化は正常に終了しました 587: グラフィック管理系の初期化を行います 592: 3Dグラフィック描画機能を使用します 593: フォントの初期化を行います 610: フォントの初期化は正常に終了しました 610: グラフィック管理系の初期化は正常に終了しました 2089: サーフェス間転送には BltFast を使用します 2090: BitBlt:803712μs BltFast:650976μs 2092: スキャンラインの数:768 2133: 1フレーム当たりの時間は 0 msecです 2134: Tri00:0 msec 2134: Tri01:0 msec 2134: Tri02:12 msec 2135: Tri03:0 msec 2135: 画面モード変更処理は正常に終了しました 2235: ウインドウを閉じようとしています 2240: ウインドウが破棄されようとしています 2241: ソフトを終了する準備が整いました 2322: オーバーレイサーフェスを使用します    UYVY 2322: DirectDraw 関連の初期化は正常に終了しました 2367: 文字コードバッファの初期化を行います... 完了しました 2398: DirectDraw 関連の終了処理をおこないます 2401: フォントの初期化を行います 2418: フォントの初期化は正常に終了しました 2419: グラフィック管理系の終了処理は正常に終了しました 2419: Direct3D 関連の終了処理を行います 2421: 3Dデバイスの削除は正常に終了しました 2422: Direct3D 関連の終了処理は正常に終了しました 2422: メインサーフェスを破棄をします... 完了しました 2423: DirectDrawオブジェクトを解放します 2424: DirectDrawオブジェクトを解放しました 2425: DirectDraw 関連の終了処理は正常に終了しました 2427: DirectInput 関連の終了処理... 完了 2506: DirectSound の終了処理は正常に終了しました 2513: 2513: Alloc memory dump Total size:0(0.000kb) Alloc num:0 2514: お願いします。

Page: 1 |

Re: 図形が表示できません ( No.1 )
名前:管理人 日時:2006/11/09 13:33

 さとさん始めまして、DXライブラリの管理人です。  うーん、最低でも SetScreenMemToVramFlag( FALSE ); を付け足した 状態では正常に動作するようにしたいですね・・・・  宜しければ SetScreenMemToVramFlag( FALSE ); を付け足した状態で 実行した際のログファイルをこちらに貼り付けて頂けないでしょうか?  あと、画面のプロパティの、解像度や色数を変更するタブの 「ディスプレイ:」と書かれている下に、お使いのPCに 搭載されているビデオチップの名称が書かれていますので、 宜しければそちらも教えて下さい。m(_ _)m
Re: 図形が表示できません ( No.2 )
名前:さと 日時:2006/11/09 15:42

返信ありがとうございます。 ビデオチップ:S3 Graphics Inc. ProSavage 使っているパソコン:富士通 FMV DESKPOWER CE7/8573 (もう一台のパソコンでは、サンプルのプログラムを実行したところ、問題なくなかったです。ビデオチップ:Redeon VE もう一台のパソコンパソコン:富士通 FMV DESKPOWER M6/1909T) SetScreenMemToVramFlag( FALSE ); を付け足して、実行しフリーズを起こし強制終了したログファイルを貼らせていただきます。 0:システムの情報を出力します 1: DXライブラリ Ver2.21a 1: OS WindowsMe ( Build 73010104 ) 501: CPU動作速度:848MHz 501: MMX命令を使用します 501: CPUベンダ:AuthenticAMD 502: CPU名:AMD Duron(tm) Processor 503:COMの初期化... 成功しました 539:ソフトの2重起動検査... 2重起動はされていませんでした 539:メモリ総量:375.08MB 空きメモリ領域:141.32MB 540:ソフトの実行優先レベルを上げました 540:ウインドウクラスを登録します... 登録に成功しました 541:ウインドウモード起動用のウインドウを作成します 568:IMEを無効にしました 569:タイマーの精度を検査します 574:精度結果 更新回数 マルチメディアタイマー:2 パフォーマンスカウンター:60 574:パフォーマンスカウンターを使用します タイマー分解能 : 1193.180000 KHz 774:ウインドウスタイルをウインドウモード用に変更します... 完了 776:DirectInput関係初期化処理 776: DirectInputオブジェクトの取得中... 成功 840: 引き続き初期化処理... 初期化成功 842: ジョイパッドの初期化... 846: ジョイパッドの初期化は正常に終了しました 846: マウスデバイスの初期化... 初期化成功 848: キーボードデバイスの初期化... 初期化成功 850:DirectInput 関連の初期化は正常に終了しました 851:DirectSound の初期化を行います 851:DirectSound インターフェースの取得を行います.... 成功 854:引き続きインターフェースの初期化処理... 成功 916: DirectSound デバイスを列挙します 918: モジュール名: ドライバ記述:プライマリ サウンド ドライバ 919: モジュール名: yacxg.sys ドライバ記述:YAMAHA AC-XG WDM Audio 919: モジュール名: WaveOut 1 ドライバ記述:ゲーム互換デバイス (列挙済み) 919: モジュール名: WaveOut 2 ドライバ記述:Voice Modem Wave #00 Line (列挙済み) 919: モジュール名: WaveOut 3 ドライバ記述:Voice Modem Wave #00 Handset (列挙済み) 920: 最大サンプリングレート:48.00KHz 最小サンプリングレート:44.10KHz 920: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 920: 利用可能サンプリング精度 920: プライマリ 16bit = OK 8bit = NO 921: セカンダリ 16bit = OK 8bit = NO 921: 利用可能チャンネル 921: プライマリ MONO = OK STEREO = OK 921: セカンダリ MONO = OK STEREO = OK 921:DirectSound の初期化は正常に終了しました 922:DirectDraw 関連の初期化を行います 922: DirectDraw オブジェクトの取得を行います.... 成功 924: 引き続き初期化処理... 初期化に成功しました 1017: ビデオカードの情報 1250: ビデオカードドライバ:s3_8NB.dll バージョン:4.12.1.1043 1250: ドライバ記述:S3 Graphics Inc. ProSavage 1251: ビデオメモリ総量:6.03MB ビデオメモリ空き容量:6.03MB 1251: 画面モード変更処理を開始します 1311: 画面モードの変更処理を開始します 640 x 480 16 bit 1312: ウインドウモードにします 1312: 画面モードの変更は正常に終了しました 1312: カラー情報 1313: A:00000000 B:0000f800 G:000007e0 B:0000001f 1313: ウインドウスタイルをウインドウモード用に変更します... 完了 1314: 出力画面用の DirectDrawSurface を作成します 1319: 各スクリーンメモリの配置位置 1320: PrimaryBuffer : SYSTEMMEMORY( MEMIMG ) 1320: BaskBuffer : SYSTEMMEMORY( MEMIMG ) 1320: 出力画面用の DirectDrawSurface の作成は正常に終了しました 1320: グラフィック管理系の初期化を行います 1324: 3Dグラフィック描画機能は使用しません 1325: フォントの初期化を行います 1334: フォントの初期化は正常に終了しました 1335: グラフィック管理系の初期化は正常に終了しました 1347: スキャンラインの数:768 1368: 1フレーム当たりの時間は 0 msecです 1368: Tri00:0 msec 1369: Tri01:0 msec 1369: Tri02:12 msec 1369: Tri03:0 msec 1369: 画面モード変更処理は正常に終了しました 1415: オーバーレイサーフェスを使用します    UYVY 1415:DirectDraw 関連の初期化は正常に終了しました 1447:文字コードバッファの初期化を行います... 完了しました 5244:DirectDraw 関連の終了処理をおこないます 5245: フォントの初期化を行います 5253: フォントの初期化は正常に終了しました 5254: グラフィック管理系の終了処理は正常に終了しました 5254: メインサーフェスを破棄をします... 完了しました 5255: DirectDrawオブジェクトを解放します 5265: DirectDrawオブジェクトを解放しました 5266:DirectDraw 関連の終了処理は正常に終了しました 5266:DirectInput 関連の終了処理... 完了 5327:DirectSound の終了処理は正常に終了しました 5327:ウインドウを閉じようとしています 5332:ウインドウが破棄されようとしています 5333:ソフトを終了する準備が整いました 6262: 6262:Alloc memory dump 6262: Total size:0(0.000kb) Alloc num:0 6262: 以上です。ご迷惑おかけします また、SetScreenMemToVramFlag( FALSE );を使わず実行した場合、ウィンドウだけ表示されるのですが、閉じる(×)をクリックして閉じると、ウィンドウの後ろにプログラムで指定した図形が表示され残ってます。
Re: 図形が表示できません ( No.3 )
名前:管理人 日時:2006/11/12 15:15

 さとさんどうも、DXライブラリの管理人です。  ご返答有難う御座います。  うーん、Savage シリーズはちょっと癖が強いので、申し訳 ありませんがソフトウエアレンダリングモードで実行して頂く ことになると思います。m(_ _;m  で、そのソフトウエアレンダリングモードでも駄目でしたか・・・・ とはいえ、ログを拝見する限りでは処理は最後まで済んでいる様です。  コンパイルによって作成された実行ファイル(拡張子が exe のファイル) をダブルクリックで直接実行してもフリーズしてしまうのでしょうか?
Re: 図形が表示できません ( No.4 )
名前:さと 日時:2006/11/12 18:33

たびたび、ありがとうございます。 exeファイル(ソフトウエアレンダリングモード)を直接ダブルクイックして直接実行しても、図形は表示されますが、残念ながらフリーズしてしまいます。 後は、PCIの空きにグラフィックカードを買って挿すしかないかと考えています。
Re: 図形が表示できません ( No.5 )
名前:管理人 日時:2006/11/12 19:42

 さとさんどうも、DXライブラリの管理人です。  駄目でしたか・・・  ログを拝見する限り、プログラム自体は最後まで実行されている ようですので、まだグラフィックデバイスが原因かどうかはわかり ません。  とりあえず DirectDraw すら使わないソフトウエアレンダリング モードの機能をライブラリに追加してみましたので、宜しければ お試しになってみて下さい。m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用 (中身を既存のファイルに上書きして、BCCをお使いの場合は『再構築』、 VCをお使いの場合は『リビルド』をして下さい)  こちらのバージョンでは DirectDraw を使用するかどうかを設定する SetUseDirectDrawFlag という関数が追加されています。  SetScreenMemToVramFlag 関数と同様に DxLib_Init の前で 使用することで効果が出ますので、宜しければ DxLib_Init の前に SetUseDirectDrawFlag( FALSE );  という記述を増やして、DirectDraw を使用しない設定でプログラムを 実行してみて下さい。m(_ _)m
Re: 図形が表示できません ( No.6 )
名前:さと 日時:2006/11/13 10:56

おはようございます。早速、試してみました。無事フリーズも起こさず作動しました。ありがとうございます。(参考にNEC LaVieNX LW23/4でも今回の方法で試したところ問題なく作動しました。)今回起きた現象はやはりグラフィックカードが怪しいのでしょうか。実際交換してみないと分からないと思いますが。管理人さんの個人的な意見としていただきたいと思うのですが。 もしくは管理人さんが疑い交換するとしたら最初にどの部品からしますか。 同じ質問をするようですがお願いします。今回、無事動いたのでうれしかったです。ありがとうございました。
Re: 図形が表示できません ( No.7 )
名前:管理人 日時:2006/11/14 15:32

 さとさんどうも、DXライブラリの管理人です。  無事に動いた様で何よりです。(^^; > 今回起きた現象はやはりグラフィックカードが怪しいのでしょうか。 > 実際交換してみないと分からないと思いますが。管理人さんの個人的な > 意見としていただきたいと思うのですが。  もし私の手元にさとさんの環境があった場合は色々試してみると思うので 一概には言えませんが、私が現時点で持っているさとさんの環境に関する 情報から判断しますと、グラフィックカードに原因がある可能性はそれなりに 高いと思います。 > もしくは管理人さんが疑い交換するとしたら最初にどの部品からしますか。  こちらも、色々試した末にどうしても対処不可能と判断した場合ですが、 グラフィックカードを買い換えると思います。  ただ、来年始めに次期OSで高いなマシン性能を要求する Windows Vista が 発売されることや、今後発売されるPCゲームのプレイを視野に入れたりしますと、 少しお金が溜まるまで我慢して、新しいPCを購入するという事を選択するかもしれません。 (Vista が快適に動作する環境が安く揃えられるようになるまでは現在のPCの グラフィックカードをパワーアップして凌ぐというのももちろんアリですので、 実際の所はさとさんの立場と状況をもっと詳しく分からないと私なりの判断は 決定出来ません(・・; )

Page: 1 |