Direct3D 多窗口视图显示

GeneralMonkey 2016-08-30 02:27:28


我用的viewport弄的 但是2,3,4 都没,只有第一个视图渲染成功,
代码如下

IDirect3DSurface9 * pBackBuffer = NULL;
lRet = m_pDirect3DDevice->GetBackBuffer(0,0, D3DBACKBUFFER_TYPE_MONO, &pBackBuffer);

////清屏
//m_pDirect3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);
////开始渲染
//m_pDirect3DDevice->BeginScene();
////正式绘制
//m_pDirect3DDevice->StretchRect(m_pDirect3DSurfaceRender, NULL, pBackBuffer, &m_rtViewport, D3DTEXF_LINEAR);
////结束绘制
//m_pDirect3DDevice->EndScene();


D3DVIEWPORT9 viewport1 = { 0, 0, m_Width / 2, m_Height / 2, 0.0f, 1.0f };
D3DVIEWPORT9 viewport2 = { m_Width / 2, 0, m_Width / 2, m_Height / 2, 0.0f, 1.0f };
D3DVIEWPORT9 viewport3 = { 0, m_Height / 2, m_Width / 2, m_Height / 2, 0.0f, 1.0f };
D3DVIEWPORT9 viewport4 = { m_Width / 2, m_Height / 2, m_Width / 2, m_Height / 2, 0.0f, 1.0f };

Draw(&viewport4, pBackBuffer);

Draw(&viewport2, pBackBuffer);

Draw(&viewport1, pBackBuffer);

Draw(&viewport3, pBackBuffer);

//释放buff
pBackBuffer->Release();

void Direct3DPlayer::Draw(D3DVIEWPORT9* viewport, IDirect3DSurface9* Buffer)
{
m_pDirect3DDevice->SetViewport(viewport);
m_pDirect3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, 0x0000ffff, 1.0f, 0);

// Begin the scene
if (SUCCEEDED(m_pDirect3DDevice->BeginScene()))
{
// Draw
HRESULT Ret;
Ret = m_pDirect3DDevice->StretchRect(m_pDirect3DSurfaceRender, NULL, Buffer, (const RECT*)viewport, D3DTEXF_LINEAR);

// End the scene
m_pDirect3DDevice->EndScene();

////显示翻转
m_pDirect3DDevice->Present(NULL, NULL, NULL, NULL);
}
}

在线等!或者给个其他方式进行多视图播放视频,另外我这个是读取本地yuv420数据
...全文
880 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-09-07
  • 打赏
  • 举报
回复
在MSDN里面搜Direct3D方面的例子代码。
GeneralMonkey 2016-08-30
  • 打赏
  • 举报
回复
自己顶一下 求大神帮忙看看哈

18,141

社区成员

发帖
与我相关
我的任务
社区描述
Windows客户端使用相关问题交流社区
社区管理员
  • Windows客户端使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧