游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4558|回复: 8

请问如何在mfc多视图情况下,显示DX的图形呢?

[复制链接]

24

主题

77

帖子

97

积分

注册会员

Rank: 2

积分
97
发表于 2004-8-11 17:53:00 | 显示全部楼层 |阅读模式
是这样的

我把一个mfc的单文档的视图进行了切分,现在有两个视类。

我在其中的一个视的环境中创建了dx设备。

那么我如何在另一个视中显示dx中的图形呢?

我试着传递了m_pd3dDevice到另一个视,然后进行绘制,但是结果却是绘制在第一个视的范围内!

有什么解决的办法呢?

谢谢!

28

主题

433

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
发表于 2004-8-11 19:57:00 | 显示全部楼层

Re:请问如何在mfc多视图情况下,显示DX的图形呢?

再创建 DX 设备~

28

主题

433

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
发表于 2004-8-11 19:59:00 | 显示全部楼层

Re:请问如何在mfc多视图情况下,显示DX的图形呢?

DX 窗体相关~

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20547
发表于 2004-8-11 21:59:00 | 显示全部楼层

Re:请问如何在mfc多视图情况下,显示DX的图形呢?

DX都是绑定窗口句柄,你可以在另外的视图中也创建个设备。

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-8-11 22:43:00 | 显示全部楼层

Re:请问如何在mfc多视图情况下,显示DX的图形呢?

没用过mfc多视图+DX,不过,我想应该是AddSwapChain吧。原来做过多窗口显示就是用这个办法。再创建设备效率会比较低。

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20547
发表于 2004-8-12 01:29:00 | 显示全部楼层

Re:请问如何在mfc多视图情况下,显示DX的图形呢?

我到是用过MFC Dialog下同时创建两个DDraw的图形设备共同显示,因为编辑器经常会用到多窗口,应该D3D也可以多个创建,只是要注意窗口句柄和图像数据。

24

主题

77

帖子

97

积分

注册会员

Rank: 2

积分
97
 楼主| 发表于 2004-8-12 09:38:00 | 显示全部楼层

Re:请问如何在mfc多视图情况下,显示DX的图形呢?

好!我以为多个设备可能对系统不利呢!(影响多少效率呢?虽然我对效率要求不高)

看来都是这么应用的

谢谢各位了!

顺便问问AddSwapChain是什么?

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-8-12 10:15:00 | 显示全部楼层

Re:请问如何在mfc多视图情况下,显示DX的图形呢?

以下摘自dx9c sdk
In addition to the swap chain that is owned and manipulated through the IDirect3DDevice9 interface, an application can create additional swap chains in order to present multiple views from the same device. The application typically creates one swap chain per view by using the IDirect3DDevice9::CreateAdditionalSwapChain method, and associates each swap chain with a particular window. The application renders images into the back buffers of each swap chain, and then presents them individually.

以前有一个dx8开发指南,里面特意提到注意多窗口不要创建多个设备,而增加swap chain.这样才能保证效率,具体做法是这样:
每个窗口建立一个D3DPRESENT_PARAMETERS,选一个窗口建立设备(一般是最大的那个窗口,这样可以共用一个depth buffer),然后建立多个swap chain,每个swapchain对应相应窗口的D3DPRESENT_PARAMETERS,然后get back buffer,得到render target.然后渲染时先SetRenderTarget(如果需要,也SetDepthStencilSurface),然后正常渲染需要的东西,然后用IDirect3DSwapChain9:resent显示.

24

主题

77

帖子

97

积分

注册会员

Rank: 2

积分
97
 楼主| 发表于 2004-8-12 12:30:00 | 显示全部楼层

Re:请问如何在mfc多视图情况下,显示DX的图形呢?

呵呵,我也是看到过说不要使用多个设备。

找到了两篇文章,正在读。。

老外的程序真的写的好!(呵呵,可能是我太烂了。。)

有兴趣,大家也可以看看
http://www.fairyengine.com/articles/dxmultiviews.htm
http://www.mvps.org/directx/articles/rendering_to_multiple_windows.htm
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-16 13:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表