|
|
我想??一????蛞婚_始是????始????ヒ欢斡捌?影片播玩就??M入正式的???
我播影片的方式,是?⒖?indows SDK的DirectShow/VMR9/VMR9Allocator,因?槲蚁?⒂捌?ピ谝??polygon上,播放影片的程式是?]???的.
不?流程上出?了一?????,就是CreateDevice???纱?而且?纱蔚??刀际遣煌??
第一次是??纬霈F
D3DPRESENT_PARAMETERS d3dpp;
d3dpp.BackBufferWidth = width;
d3dpp.BackBufferHeight = height;
d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8;
d3dpp.BackBufferCount = 1;
d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;
d3dpp.MultiSampleQuality = 0;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.hDeviceWindow = hwnd;
d3dpp.Windowed = windowed;
d3dpp.EnableAutoDepthStencil = true;
d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8;
d3dpp.Flags = 0;
d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
// Step 4: Create the device.
hr = d3d9->CreateDevice(
D3DADAPTER_DEFAULT, // primary adapter
deviceType, // device type
hwnd, // window associated with device
vp, // vertex processing
&d3dpp, // present parameters
device); // return created device
第二次是要播放影片的?r候
HRESULT hr;
m_D3DDev = NULL;
D3DDISPLAYMODE dm;
hr = m_D3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &dm);
D3DPRESENT_PARAMETERS pp;
ZeroMemory(&pp, sizeof(pp));
pp.Windowed = TRUE;
pp.hDeviceWindow = m_window;
pp.SwapEffect = D3DSWAPEFFECT_COPY;
pp.BackBufferFormat = dm.Format;
//pp.Windowed=bWindow;//add
FAIL_RET( m_D3D->CreateDevice( D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
m_window,
D3DCREATE_SOFTWARE_VERTEXPROCESSING|
D3DCREATE_MULTITHREADED,
&pp,
&m_D3DDev) );
?窗版的都很正常,全?幕版的?,影片有?r??ゲ怀??有?r又正常.
我以?槿??幕?r,第二次CreateDevice的??档???(pp.Windowed = TRUE;),可是我??RUE改成FALSE,
反而?成?]?面.
我的???是:
(1)一???窗,如果CreateDevice?纱蔚脑?,如何?Q定要用哪??Device去render?
(2)我的??蛄鞒?是否先建立一??Device???吾?使用者按下按?後,?上?放.再建立一??Device?聿ビ捌?播完影片後,再?放.再建立一??Device?正式的??蚴褂???方式是否是正?的,或是有其他的作法? |
|