トップページ > 記事閲覧
プログラマブルシェーダーが使用できなくなった
名前:へけぽん 日時: 2019/01/30 11:57

3.20にアップデートした後からDrawPrimitive2DToShaderでの描画が出来なくなりました ところが、古いバージョンに戻してみてもシェーダを使う場合の描画が上手くいかず 不思議に思いGetValidShaderVersion()の戻り値を確かめてみたところ0になっていましたので プログラマブルシェーダーが使用できないのがDrawPrimitive2DToShaderが動作しなくなった原因のようです ただ以前GetValidShaderVersion()を使っていた時の戻り値は500であったことや 開発環境はオフライン、スタンドアロンのパソコンなので全く変わってない筈なので 何をどうすれば解決するのか見当が付きません プログラマブルシェーダーが使用できなくなる原因というのは、何が考えられるのでしょうか?
メンテ

Page: 1 |

Re: プログラマブルシェーダーが使用できなくなった ( No.1 )
名前:管理人 日時:2019/01/30 23:19

古いバージョンに戻しても正常に動作しないのですか… > プログラマブルシェーダーが使用できなくなる原因というのは、何が考えられるのでしょうか? グラフィックスデバイスが正しく認識されていないか、故障している可能性があります デバイスマネージャでグラフィックスデバイスが正しく認識されているかご確認になってみてください 正しく認識されているかどうかはプログラムを実行した際に作成される Log.txt の内容でも確認できますので、 よろしければ Log.txt の内容を丸ごとこちらにコピー&貼り付けして頂けないでしょうか?
メンテ
Re: プログラマブルシェーダーが使用できなくなった ( No.2 )
名前:へけぽん 日時:2019/01/31 05:29

ログです 637のところにメモリ確保に失敗したと出てます 0:ChangeWindowMode実行 0:ウインドウモードフラグが立てられました 0:DXライブラリの初期化処理開始 16: システムの情報を出力します 16: DXライブラリ Ver3.20 16: 論理プロセッサの数 : 8 16: OS Windows7 ( Build 7601 Service Pack 1 ) 116: 現時点のCPU動作速度:大体3.24GHz 116: MMX命令を使用します 117: SSE命令が使用可能です 117: SSE2命令が使用可能です 117: CPUベンダ:GenuineIntel 118: CPU名: Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz 118: COMの初期化... 成功 119: 非同期読み込み処理の初期化...成功 119: ファイルアクセス処理の初期化...成功 120: メモリ総量:8160.16MB 空きメモリ領域:6619.32MB 120: タイマーの精度を検査します 121: 精度結果 更新回数 マルチメディアタイマー:1 パフォーマンスカウンター:60 121: パフォーマンスカウンターを使用します タイマー精度 : 3312.832000 KHz 121: ソフトの二重起動検査... 二重起動はされていませんでした 122: ウインドウクラスを登録します... 登録に成功しました 122: ウインドウモード起動用のウインドウを作成します 122: ディスプレイ情報のセットアップ開始 123: モニターの数:1 ディスプレイデバイスの数:5 123: No.0 モニター名:\\.\DISPLAY1 1920x1080 32bit 60Hz 139: ディスプレイ情報のセットアップ完了 140: ウインドウの作成に成功しました 140: ウインドウを表示します 163: IMEを無効にしました 164: ウインドウスタイルをウインドウモード用に変更します... 完了 187: DirectInput関係初期化処理 187: XInput DLL の読み込み中... 成功 192: DirectInput7 の取得中... DirectInput8 の取得を試みます...成功 206: 引き続き初期化処理... 初期化成功 209: ジョイパッドの初期化... 214: 入力装置を見つけました 214: Device Instance Name : USB Gamepad 214: Device Product Name : USB Gamepad 214: 周期的エフェクトの作成に失敗しました。 215: ジョイパッドの追加は正常に終了しました 222: ジョイパッドの初期化は正常に終了しました 222: マウスデバイスの初期化... 初期化成功 223: キーボードデバイスの初期化... 初期化成功 224: DirectInput 関連の初期化は正常に終了しました 228: DirectSound の初期化を行います 229: DirectSound インターフェースの取得を行います.... 成功 232: 引き続きインターフェースの初期化処理... 成功 282: DirectSound デバイスを列挙します 283: Module Name : Description : プライマリ サウンド ドライバー 283: Module Name : {0.0.0.00000000}.{3f3f3dfc-c15f-4909-baec-5c8c22136974} Description : スピーカー (Realtek High Definition Audio) 283: Module Name : {0.0.0.00000000}.{9bda6796-a16a-40d3-a959-a06bcb232501} Description : Realtek Digital Output (Realtek High Definition Audio) 283: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz 284: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 284: 利用可能サンプリング精度 284: Primary 16bit = OK 8bit = OK 284: Secondary 16bit = OK 8bit = OK 285: 利用可能チャンネル 285: Primary MONO = OK STEREO = OK 285: Secondary MONO = OK STEREO = OK 285: DirectSound の初期化は正常に終了しました 289: DirectDraw オブジェクトの取得を行います.... 成功 292: 引き続き初期化処理... 初期化に成功しました 313: IDirect3D9Ex オブジェクトを取得します.... 成功 315: IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します 611: 成功 612: Driver:nvd3dum.dll Description:NVIDIA GeForce GTX 560 613: 画面のフォーマットは D3DFMT_X8R8G8B8 です 613: 16bit Zバッファフォーマットは D3DFMT_D16 です 613: 24bit Zバッファフォーマットは D3DFMT_D24X8 です 614: 32bit Zバッファフォーマットは D3DFMT_D24X8 です 614: 16bit カラーフォーマットは D3DFMT_R5G6B5 です 614: 32bit カラーフォーマットは D3DFMT_X8R8G8B8 です 614: アルファ付き 16bit カラーフォーマットは D3DFMT_A4R4G4B4 です 615: アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 615: アルファテスト用 16bit カラーフォーマットは D3DFMT_A1R5G5B5 です 615: アルファテスト用 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 615: DXT1テクスチャフォーマットはD3DFMT_DXT1 です 616: DXT2テクスチャフォーマットはD3DFMT_DXT2 です 616: DXT3テクスチャフォーマットはD3DFMT_DXT3 です 616: DXT4テクスチャフォーマットはD3DFMT_DXT4 です 616: DXT5テクスチャフォーマットはD3DFMT_DXT5 です 616: ABGR 整数 16 ビット型カラーフォーマットは D3DFMT_A16B16G16R16 です 617: ABGR 浮動小数点 16 ビット型カラーフォーマットは D3DFMT_A16B16G16R16F です 617: ABGR 浮動小数点 32 ビット型カラーフォーマットは D3DFMT_A32B32G32R32F です 617: 1チャンネル整数 8 ビット型カラーフォーマットは D3DFMT_A8R8G8B8 です 617: 1チャンネル整数 16 ビット型カラーフォーマットは D3DFMT_G16R16 です 618: 1チャンネル浮動小数点 16 ビット型カラーフォーマットは D3DFMT_R16F です 618: 1チャンネル浮動小数点 32 ビット型カラーフォーマットは D3DFMT_R32F です 618: 2チャンネル整数 8 ビット型カラーフォーマットは D3DFMT_A8B8G8R8 です 618: 2チャンネル整数 16 ビット型カラーフォーマットは D3DFMT_G16R16 です 618: 2チャンネル浮動小数点 16 ビット型カラーフォーマットは D3DFMT_G16R16F です 619: 2チャンネル浮動小数点 32 ビット型カラーフォーマットは D3DFMT_G32R32F です 619: 描画用 16bit カラーフォーマットは D3DFMT_R5G5B5 です 619: 描画用 32bit カラーフォーマットは D3DFMT_X8R8G8B8 です 619: 描画用アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 620: 描画用 ABGR 整数 16 ビット型カラーフォーマットは D3DFMT_A16B16G16R16 です 620: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは D3DFMT_A16B16G16R16F です 620: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは D3DFMT_A32B32G32R32F です 620: 描画用1チャンネル整数 8 ビット型カラーフォーマットは D3DFMT_L8 です 620: 描画用1チャンネル整数 16 ビット型カラーフォーマットは D3DFMT_L16 です 621: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは D3DFMT_R16F です 621: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは D3DFMT_R32F です 621: 描画用2チャンネル整数 8 ビット型カラーフォーマットは D3DFMT_A8B8G8R8 です 621: 描画用2チャンネル整数 16 ビット型カラーフォーマットは D3DFMT_G16R16 です 622: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは D3DFMT_G16R16F です 622: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは D3DFMT_G32R32F です 622: A8R8G8B8 カラーフォーマットは頂点テクスチャフェッチに使用できます 622: X8R8G8B8 カラーフォーマットは頂点テクスチャフェッチに使用できません 622: R5G6B5 カラーフォーマットは頂点テクスチャフェッチに使用できません 623: A1R5G5B5 カラーフォーマットは頂点テクスチャフェッチに使用できません 623: X1R5G5B5 カラーフォーマットは頂点テクスチャフェッチに使用できません 623: 一度に描画できるプリミティブの最大数:16777215 623: 対応している最大頂点インデックス:16777215 623: 同時にレンダリングできるバッファの数:4 624: 最大テクスチャサイズ 幅:8192 高さ:8192 624: テクスチャステージテンポラリレジスタ:使用可 624: 減算合成のハードウェア対応:ネイティブ 624: ハードウェア頂点シェーダーバージョンコード:300 625: エミュレーション頂点シェーダーバージョンコード:エミュレーション無し 625: ピクセルシェーダーバージョンコード:300 635: バックバッファロック転送の時間:46nsec 一時的な描画可能バッファを使用した転送の時間:478nsec 636: バックバッファロックを使用します 636: Zバッファを作成します.... 成功 637: シェーダーコードを展開するメモリ領域の確保に失敗しました 637: プログラマブルシェーダーを使用しません 639: フォントの初期化を行います 643: フォントの初期化は正常に終了しました 649: 文字コードバッファの初期化を行います... 完了しました 651:DXライブラリの初期化処理終了 4602:ウインドウを閉じようとしています 4610:ウインドウが破棄されようとしています 4610:ソフトを終了する準備が整いました 4840:フォントの初期化を行います 4841:フォントの初期化は正常に終了しました 4841:Direct3DDevice9 の解放 2 4863:d3d9.dll の解放 1 4864:DirectInput 関連の終了処理... 完了 4872:DirectSound の終了処理は正常に終了しました 4905:COMを終了... 完了 4906: 4906:Alloc memory dump 4906: Total size:0(0.000kb) Alloc num:0 4906:
メンテ
Re: プログラマブルシェーダーが使用できなくなった ( No.3 )
名前:gdrop 日時:2019/01/31 21:15

Win10 Pro x64, GTX1060、64bit+Unicodeで、GetValidShaderVersion()の戻り値は      DX11 DX9ex 3.19e  500  300 3.20a  500  0(シェーダーコードを展開するメモリ領域の確保に失敗しました) になります。たしかにDX9exで3.20では不具合発生中? なお、へけぽんさんがコメントNo.2で貼ったのは3.20なのか3.19なのかが気になります。 「3.19として貼った」のであれば3.20から戻しきれてない状態だからです。 (3.19に正確に戻せば、復活するのではないかと…)
メンテ
Re: プログラマブルシェーダーが使用できなくなった ( No.4 )
名前:へけぽん 日時:2019/01/31 22:48

>へけぽんさんがコメントNo.2で貼ったのは3.20なのか3.19なのかが気になります。 3.20です
メンテ
Re: プログラマブルシェーダーが使用できなくなった ( No.5 )
名前:管理人 日時:2019/02/01 03:48

ログの貼り付けありがとうございます gdropさんもご情報ありがとうございます 古いバージョンに戻しても正常に動作しない原因は不明ですが、とりあえず 3.20 でシェーダーが使用できない原因は DXライブラリのバグでした( 3.20 でDXアーカイブの仕様が変更となったのに、DXライブラリ内部で持っている Direct3D 9用のDXアーカイブのデータが旧バージョンのままだった ) 修正したバージョンをアップしましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.2 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: プログラマブルシェーダーが使用できなくなった ( No.6 )
名前:へけぽん(解決) 日時:2019/02/01 06:00

修正したバージョンで上書きしたところ、描画されるようになりました。対応ありがとうございました。 (3.20を解凍し、それに修正バージョンを上書きという手順でやりました) 旧バージョンで動作しなかった理由は おそらく旧バージョンに上書きしたつもりがしていなかったとか ちゃんと上書きしていなかったとか そういう類のミスによるものだと思います
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存