ページ 11

directX9でdebugだと描画でき、Releaseだとできない

Posted: 2019年2月10日(日) 22:46
by gb
初めまして774と申します。

タイトルの通り、directX9をvisual studio 2017にてdebugモードで実行すると、3Dの描画に成功し、
releaseモードで実行すると3Dの描画がされない不具合に悩まされております。

どのタイミングでこのような状態になってしまったか把握できておらず、原因がわかりません。。。

他に見られる状況として、
・エラーは一切でない
・なぜか2Dの描画はできる。
・windowを2つ表示しそれぞれに描画している。(1枚にしても症状は同じ)
・ifndefによるdebugとreleaseの場合わけによる処理は行なっていない。
・release時の出力にて「functions were compiled because no usable ipdb/iobj from previous compilation was found.」の表示が出る。

かれこれ2週間ほど悩んでいます。。。
最初から作り直した方が早いレベルなのですが、原因がわからないのが気に入らず粘っています。。。
どなたか助言いただけると助かります。
よろしくお願いいたします。

Re: directX9でdebugだと描画でき、Releaseだとできない

Posted: 2019年2月11日(月) 08:41
by Math
これだけでは原因究明できません。
症状が再現する最低限のサンプルをzipファイル等で提示していただけないでしょうか。

zipファイルを提示いたします。

Posted: 2019年2月11日(月) 12:06
by gb
返信いただきありがとうございます。
先ほどは774と名乗りましたが、以後gbと名乗らせていただきます。

お話いただいた通りzipファイルをGigaFile便[保存期間1週間]にて掲示いたします。
https://3.gigafile.nu/0218-m85d653db200 ... 722cd3ce09

コードが冗長で見にくくなっており大変申し訳ありません。
フォルダ内に簡単な概要を記述したreadme.txtファイルがあります。
プロジェクトの設定などは済ませているのでそのままビルドできるかと思います。

何かわかりにくい箇所があれば申し付けください。

申し訳ありませんが、ご助力いただけると幸いです。
よろしくお願いいたします。

Re: directX9でdebugだと描画でき、Releaseだとできない

Posted: 2019年2月11日(月) 13:39
by Math
当方Windows10でVS2017Communityを使用しております。
VS2017CommunityをインストールしただけでDirectX12,11,9 が使えます。
(Windows10SDKで全てOK)

http://www2.koyoen.birdview.co.jp/~abcx ... -11-b-.PNG

そちらの環境は?
(こうなります)
http://www2.koyoen.birdview.co.jp/~abcx ... -11-a-.PNG

DirectX SDK(June 2010)をインストールしています。

Posted: 2019年2月11日(月) 14:37
by gb
math様、返信いただきありがとうございます。
gbです。

私の環境は
OS:Windows10 Pro
PC:Surface Book2
VS:Visual Stdio 2017 Professional
SDK:DirectX SDK(June 2010)
です。

恐らく一番の要因は、DirectX SDKのインストールかと思います。
差し支えなければ、下記サイトにてSDKのインストールをお願いいたします。
https://www.microsoft.com/en-us/downloa ... px?id=6812

また、[Debug/Release]タブの横にある[x64/x86]タブをx64→x86で実行しています。
お使いの環境がx64の場合、プロジェクトの設定にて
インクルード/ライブラリディレクトリの設定を変更する必要があるかと思います。

また何かあればお申し付けください。
よろしくお願いいたします。

Re: directX9でdebugだと描画でき、Releaseだとできない

Posted: 2019年2月11日(月) 16:09
by Math
インストール済みです。
viewtopic.php?f=3&t=20502
の#21に記したように Windows10 に VC++2008 を インストールしてDirectX 9 SDK(June) を設定して
テストしています。

http://www2.koyoen.birdview.co.jp/~abcx ... 11-8b-.PNG

http://www2.koyoen.birdview.co.jp/~abcx ... 11-8a-.PNG

ここrules 
にあるように
◾丸投げをする行為 は禁止されています。

検証できる 1ファイルくらいのテストコードを作ってください。

(Surfaceは 特殊なので Microsoft のforumに聞いたほうが速いと思いますが)

Re: directX9でdebugだと描画でき、Releaseだとできない

Posted: 2019年2月11日(月) 16:30
by Math
ここには DirectX9 に詳しい方 プロの方 もおられるので その方の返信があるかもしれません。

Re: directX9でdebugだと描画でき、Releaseだとできない

Posted: 2019年2月11日(月) 20:30
by Math
>私の環境は
>OS:Windows10 Pro
>PC:Surface Book2
> VS:Visual Stdio 2017 Professional

だったら 逆に SDK:DirectX SDK(June 2010) いらないはずでは?
何故 いれたのでしょうか。。

Re: directX9でdebugだと描画でき、Releaseだとできない

Posted: 2019年2月11日(月) 20:39
by Math
>、[Debug/Release]タブの横にある[x64/x86]タブをx64→x86で実行しています

x64の方が安定するのではないですか。

Re: directX9でdebugだと描画でき、Releaseだとできない

Posted: 2019年2月11日(月) 21:39
by gb
Math様、ご返信ありがとうございます。

>丸投げをする行為 は禁止されています。
検証できる 1ファイルくらいのテストコードを作ってください。

同じ状況を再現するのに多少削ったつもりでした。
正直どこに原因があるのかわからなかったので、どのようにファイルをまとめるのがいいのかわかりませんでした。
丸投げしようという意識ではありませんでしたし、提示したファイルも多少削った後の状態でした。
ルールを理解せずに質問してしまい申し訳ありません。さらに削った方が良いでしょうか?

>だったら 逆に SDK:DirectX SDK(June 2010) いらないはずでは?
何故 いれたのでしょうか。。

私が無知であったため、SDKなしで実行できることを知りませんでした。
どのようにしたら、できるのでしょうか?
ない場合の方がよいのでしょうか?

>x64の方が安定するのではないですか。

これについても、私が無知であったため、知りませんでした。
x64とx86での差も理解しておりませんでしたので、ご教授いただけると幸いです。

現在私は学生で、学校で教わったことと、独学で学んだことの組合せで開発を行っております。
ですので、コードもプロジェクトの作成も素人に毛が生えたレベルですので、
もし、こちらの方が良いのではということがあれば教えていただけると嬉しいです。

質問ばかりで、大変申し訳ありませんが、よろしくお願いいたします。

Re: directX9でdebugだと描画でき、Releaseだとできない

Posted: 2019年2月11日(月) 22:23
by Math
了解いたしました。(^^;

>私が無知であったため、SDKなしで実行できることを知りませんでした。

#4 を よーく お読みください。

>VS2017CommunityをインストールしただけでDirectX12,11,9 が使えます。
>(Windows10SDKで全てOK)

なを ここに詳しい説明とサンプル・コードがあります。ダウンロードしてためせます。

http://zerogram.info/?p=1832


>x64とx86

32bit版のCPU:x86
64bit版のCPU:x64
を基本として、それ以外にも、32bit版の○○は「x86系」、64bit版の○○「x64系」といった表現がされることが多い。
例えば、Windowsにも32bit版と64bit版があります。
32bit版のWindowsは、32bit版のCPUで動かすことを想定して作られたWindowsです。
64bit版のWindowsは、64bit版のCPUで動かすことを想定して作られたWindowsです。

いまはほとんど 64bit版のCPU:x64 なので

わざわざ メモリーの使える量がすくない 32bit版のCPU:x86 をターゲットに
プログラムする必要がありません。

( 私はSurface を触ったことがありませんが 特殊性の例を見かけるのでマイクロソフトのMSDNに
問い合わせて見るといいですよ)

Re: directX9でdebugだと描画でき、Releaseだとできない

Posted: 2019年2月11日(月) 22:54
by Math
>なを ここに詳しい説明とサンプル・コードがあります。ダウンロードしてためせます。

多分 ソリューションの再ターゲットをやる必要があります。
( ソリューションの上で右クリックするとでるメニューにあります。)

Re: directX9でdebugだと描画でき、Releaseだとできない

Posted: 2019年2月12日(火) 08:07
by Math
viewtopic.php?f=3&t=20482

も参考にしてください