トップページ > 記事閲覧
3D11BackBufferTexture2Dの取得に関して
名前:猫の湯飲み 日時: 2023/02/01 20:38

VR機器で描画する際 MakeScreenで左右の目専用のスクリーンを作成して、 SetCameraViewMatrixでカメラを設定した後、MakeScreenで作成したスクリーンに3Dモデルを描画して、VR機器にGetGraphID3D11Texture2Dを使用してID3D11Texture2Dを渡すと 一部のモデルで部分的に透明になったりと正常に描画されません。 しかしPC上に描画されているスクリーンををGetUseDirect3D11BackBufferTexture2Dを使用してVR機器にID3D11Texture2Dを渡すと 3Dモデルは正常に描画されます。 左右で異なる角度からの状態を表示したいためGetGraphID3D11Texture2Dを使用して、VR機器にID3D11Texture2Dを渡すしたいのですが無理でしょうか? もしくは使い方を間違えているのでしょうか?
メンテ

Page: 1 | 2 | 3 | 4 |

Re: 3D11BackBufferTexture2Dの取得に関して ( No.1 )
名前:管理人 日時:2023/02/02 02:19

透明になってしまうということはアルファチャンネルが関係しているかもしれません MakeScreen の第三引数を FALSE にして、アルファチャンネル無しのスクリーンを作成するようにしてみてください m(_ _)m
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.2 )
名前:猫の湯飲み 日時:2023/02/02 12:05

MakeScreen の第三引数を FALSE にしても一部のモデルで部分的に透明になったりと正常に描画されませんでした。
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.3 )
名前:管理人 日時:2023/02/03 00:37

駄目でしたか… MakeScreen で作成したグラフィックハンドルのテクスチャを GetGraphID3D11Texture2D を使用して VR機器に渡しているとのことですが、GetGraphID3D11Texture2D を使用せず、MakeScreen で作成した グラフィックハンドルを普通に裏画面に DrawGraph で描画した場合は正常な3Dの描画結果が 表示されるのでしょうか?
メンテ
Re: 3D11BackBufferTexture2Dの取得に関して ( No.4 )
名前:名無三 日時:2023/02/03 01:37

GetUseDirect3D11BackBufferTexture2DでVR実装した者です。 左右で別々に角度を指定して描画していましたが、パフォーマンス的にはあまり問題ないと思いますよ。(答えになってないですケド) 一部透明なのは分からないですが、両方のスクリーンでのニアファーとかの設定が片方漏れてるとか…ですかねえ? //HMDMatrix取得等略… for (char i = 0; i < 2; i++) { m_OutScreen[i].SetDraw_Screen(cams.GetCamPos() + this->GetEyePosition_minVR(i), cams.GetCamVec() + this->GetEyePosition_minVR(i), cams.GetCamUp(), cams.GetCamFov(), cams.GetCamNear(), cams.GetCamFar()); { //3D描画 } GraphHandle::SetDraw_Screen((int)DX_SCREEN_BACK); { SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 255); m_OutScreen[i].DrawGraph(0, 0, false); this->PutEye((ID3D11Texture2D*)GetUseDirect3D11BackBufferTexture2D(), i);//バックバッファを渡す } } GraphHandle::SetDraw_Screen((int)DX_SCREEN_BACK); ClearDrawScreen(); { //改めてディスプレイ描画 } ScreenFlip(); vr::VRCompositor()->WaitGetPoses(&tmp, 1, NULL, 1);
メンテ

Page: 1 | 2 | 3 | 4 |

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

   クッキー保存