トップページ > 記事閲覧
ID3D11Texture2D* 取得系関数につきまして
名前:レモン 日時: 2024/02/17 14:30

お世話になります。 深度バッファをオリジナルシェーダで参照したいと思い GetUseDirect3D11DepthStencilTexture2D 関数から ID3D11Texture2D* を取得してシェーダリソースビューを生成しようとしています。 その過程で、デバッグ機能として深度バッファの内容を2Dとして画面に出力してみようと   ID3D11Texture2D* tex = (ID3D11Texture2D*)GetUseDirect3D11DepthStencilTexture2D();   int hdl = CreateGraphFromID3D11Texture2D(tex); このようなコードを書いたところ、CreateGraphFromID3D11Texture2Dで実行時エラーが発生してしまいました GetUseDirect3D11BackBufferTexture2D 関数で取得したID3D11Texture2D* であればエラーがおきず CreateGraphFromID3D11Texture2D は深度バッファには対応していないのかと思いまして、 試しに以下のようなコードを書いてみたところ DrawBox(50, 50, 100, 100, 0xffffffff, true); ID3D11Texture2D* tex = (ID3D11Texture2D*)GetUseDirect3D11BackBufferTexture2D(); int hdl = CreateGraphFromID3D11Texture2D(tex); DrawExtendGraph(200, 200, 500, 500, hdl, false); エラーは発生しないのですが、DrawExtendGraphによって描画されている内容が真っ黒になってしまいまして 何か使い方や関数の仕様を勘違いしているのかと思い、ご相談させていただければと思います ※ DxLib のバージョンは 3.24d を使用しています ※ DrawBox 部分を MV1 を利用した 3D 描画にしても結果かわらずでした どうぞよろしくお願い致します。
メンテ

Page: 1 |

Re: ID3D11Texture2D* 取得系関数につきまして ( No.1 )
名前:レモン 日時:2024/02/17 14:58

追記 深度バッファについて CreateGraphFromID3D11Texture2D は対応していない旨、過去スレから発見いたしました ですので当該部分以外をご相談とさせてください
メンテ
Re: ID3D11Texture2D* 取得系関数につきまして ( No.2 )
名前:管理人 日時:2024/02/17 17:43

> ですので当該部分以外をご相談とさせてください 該当部分以外とのことですので後半部分のこちらについてご返答します > DrawBox(50, 50, 100, 100, 0xffffffff, true); > > ID3D11Texture2D* tex = (ID3D11Texture2D*)GetUseDirect3D11BackBufferTexture2D(); > int hdl = CreateGraphFromID3D11Texture2D(tex); > DrawExtendGraph(200, 200, 500, 500, hdl, false); Direct3D 11 を使用した場合は描画先が表画面でも、内部では描画はバックバッファーに対して 行われますので、上記の処理を実行した場合は 『バックバッファーを使ってバックバッファーに描画する』 という処理になってしまっています 『自分のテクスチャを使って自分に描画する』 という処理は動作未定となっていて基本的に禁止されていますので、正常な描画結果が得られず 結果として画面が真っ暗になっているのだと思います
メンテ
Re: ID3D11Texture2D* 取得系関数につきまして ( No.3 )
名前:レモン 日時:2024/02/17 18:02

お返事ありがとうございます なるほど、納得できました MakeScreen してそちらに描画し、その結果をデフォルトバックバッファへ描画したところ正常に描画されました ありがとうございました
メンテ

Page: 1 |

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

   クッキー保存