|
レンダリング |
m_pTextureSet->CurrentIndex = (m_pTextureSet->CurrentIndex + 1) % m_pTextureSet->TextureCount; |
// レンダリングターゲットの準備 //
ID3D11DeviceContext *pDevCtx = ...;
ID3D11DepthStencilView *pDepthStencilView = NULL; // 深度バッファが必要な場合はここで設定 //
pDevCtx->OMSetRenderTargets( 1, m_ppRenderTargetView + m_pTextureSet->CurrentIndex, pDepthStencilView );
// レンダリングターゲットのクリア //
static const float ColorRGBA[4] = { 0.0f, 0.0f, 0.0f, 0.0f };
pDevCtx->ClearRenderTargetView( m_ppRenderTargetView[ m_pTextureSet->CurrentIndex ], ColorRGBA );
|
for(int eye=0;eye<2;eye++) {
// Viewport の設定 //
D3D11_VIEWPORT View;
View.TopLeftX = m_OVRLayer.Viewport[eye].Pos.x;
View.TopLeftY = m_OVRLayer.Viewport[eye].Pos.y;
View.Width = m_OVRLayer.Viewport[eye].Size.w;
View.Height = m_OVRLayer.Viewport[eye].Size.h;
View.MinDepth = 0.0f;
View.MaxDepth = 1.0f;
pDevCtx->RSSetViewports( 1, &View );
// このままレンダリングを実行 //
:
|
: // 1枚分のレンダリングが完了 // } // レンダリング完了処理 // ovrLayerHeader *layers = &m_OVRLayer.Header; ovr_SubmitFrame( m_OVRSessionId, 0, NULL, &layers, 1 ); |
|
左右のレンダリングが終了したら、SDK による終了処理を実行します。 おそらくこの中で HMD のレンズの歪みを考慮した変形等を含めた転送処理が行われると思います。 |