directshow放开场动画问题(avi)

yourfeng 2003-06-06 09:53:50
1)不能全屏,是原始大小
2)它又开了个窗口放这个avi
怎么解决?????
...全文
59 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
王嘉平 2003-06-14
  • 打赏
  • 举报
回复
可以的啊 MediaPlayer 以WS_CHILD方式作为子窗口创建在你的主窗口上,放完后Destroy掉

就像你把一个Button放在对话框上一样,不过这是应停止主窗口的刷新,以免闪烁
yourfeng 2003-06-14
  • 打赏
  • 举报
回复
那个例子也是创建了两个窗口地说,只不过主窗口隐藏了
我现在想让着一个窗口去放,放完了以后开始游戏菜单
这个能实现吗??用一个窗口
kidding 2003-06-14
  • 打赏
  • 举报
回复
DirectShow的例子程序中有相应的例子说明如何在全屏模式下播放动画
yourfeng 2003-06-12
  • 打赏
  • 举报
回复
directshow也是用avtiveMovie
看来你对ds不是很了解的说~~~~
hoho游戏引擎里面的例子和我做的一样,都是两个窗口(全屏问题两天前解决了)
王嘉平 2003-06-12
  • 打赏
  • 举报
回复
开场动画??? 晕倒 如果不处理视频数据的话,有必要用DS吗? 你创建Windows media player来放不就好了。或者用MCIWnd,都要简单,也可以全凭的
王嘉平 2003-06-12
  • 打赏
  • 举报
回复
晕 你是反了 是media player利用了 DS

而Media Player比你自己hardcode 搭建的Filter graph更为鲁棒和灵活
如果你不是要自己处理视频流的数据,何必自己搭Filter graph。

例如 你上面用的Render filter
DirectShow filter里面 自带的Render filter有两个,一个是Full Screen专用的,一个是Window方式用的。 Media Player会自动选的 像上面的代码就没有这种灵活性。
而在XP下,又多了一个Mixture render,不过你那里应该用不上. 当然MediaPlayer也是利用了DS,你完全可以做到这样的灵活性,但是这里的工作量可想而知。这就像你要写这个Pop3/smtp服务器,先去实现一个文件系统一样。

我不知道你看的什么游戏引擎的source了,如果你想参照视频播放的方法应该去看player的source。我倒是看到很多一开始雄心壮志要写游戏的人,最后游戏没弄出来,放了个游戏程序架子在网上,然后叫做游戏引擎

我无意贬低这样的人,我只是说网上的source即使是正确的也未必是适合的。其实我自己曾经也是这样的人之一,曾经想写游戏(三个人的Team work),后来没坚持下去,做别的事情去了(考研),然后就剩下了万把行的程序架子,一堆OpenGL/DS/DI/DP/Socket/Game loop的整合,不过我没有放到网上来。这些source还在我的HD的一个角落里静静地躺着.............
韩雷 2003-06-11
  • 打赏
  • 举报
回复
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{

//放片头动画
IVideoWindow *pVW = NULL;
LONG lMode;
static HWND hDrain=0;

IGraphBuilder *pGraph;
IMediaControl *pMediaControl;
IMediaEvent *pEvent;
CoInitialize(NULL);

// Create the filter graph manager and query for interfaces.
CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void **)&pGraph);
pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);
pGraph->QueryInterface(IID_IVideoWindow, (void **)&pVW);

// Build the graph. IMPORTANT: Change string to a file on your system.
pGraph->RenderFile(L"片头动画.avi", NULL);

// Run the graph.
pMediaControl->Run();

// Read current state
pVW->get_FullScreenMode(&lMode);

if (lMode == OAFALSE)
{
lMode = OATRUE;
pVW->put_FullScreenMode(lMode);
};

// Wait for completion.
long evCode;
pEvent->WaitForCompletion(INFINITE, &evCode);

// Clean up.
pMediaControl->Release();
pEvent->Release();
pGraph->Release();
CoUninitialize();
CoInitialize (NULL);
}
yourfeng 2003-06-11
  • 打赏
  • 举报
回复
nobody knows??????????????
paulluo0739 2003-06-07
  • 打赏
  • 举报
回复
对头,我也遇到这样的问题,关注

8,325

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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