游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3834|回复: 10

有没有可能进程间共向显存

[复制链接]

193

主题

870

帖子

903

积分

高级会员

Rank: 4

积分
903
QQ
发表于 2007-1-11 08:52:00 | 显示全部楼层 |阅读模式
比如一个服务程序负责把3D图像渲染到某个显存区域
然后通过进程间通信 告知其他进程
其他进程把显存内容映射到 自身窗口

小弟这方面文盲 见笑 [em5]

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-1-11 17:43:00 | 显示全部楼层

Re:有没有可能进程间共向显存

进程本身就可以共享数据的。

要实现你的目的,应该采用类似双缓冲的方式,把3D图像渲染到某个内存区域
,然后几个进程共享。

操作显存会很麻烦的。

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2007-1-11 18:02:00 | 显示全部楼层

Re:有没有可能进程间共向显存

现在的DX仿佛不能直接操纵显存吧……

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2007-1-11 18:05:00 | 显示全部楼层

Re:有没有可能进程间共向显存

为什么不能是各部分分别渲染同一幅渲染出来的图片?
进程间共享那个渲染出来的图片就行了。

1

主题

8

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2007-1-11 18:41:00 | 显示全部楼层

Re: 有没有可能进程间共向显存

不知道可不可以这么理解:

服务程序负责把3D图像渲染到rendertexture,
然后通过进程间通信告知其他进程
其他进程把内容拷贝回来并渲染或绘制到自身窗口


不然就是用到dll注入方法,
并用上多swapchain。
不过d3d9以及之前的多线比较弱,
很多麻烦事情需要处理,据说dx10会好很多。


不知道自己写驱动行不行。

193

主题

870

帖子

903

积分

高级会员

Rank: 4

积分
903
QQ
 楼主| 发表于 2007-1-11 20:47:00 | 显示全部楼层

Re:有没有可能进程间共向显存

又想了一下这个问题,共享内存是行不通的。
显示硬件最终渲染结果绘制在显示存中。
因为从显存读取数据慢的要死,读取完了还要在另外进程绘制,这个效率是无法接受的。

同样道理,渲染到texture也是行不通,因为texture其实就是显存中的数据,从texture读取和从显存读取是一个道理。

这里有一个折衷的方案,没有试验过(因为试验太麻烦了)。放在这里,等有机会看能不能行得通。

通过剪贴版或者共享内存得到其他进程的窗口句柄,然后直接在其他进程的窗口中绘制图像。
虽然没有共享显存,但也算进程间渲染通信了。

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2007-1-12 16:58:00 | 显示全部楼层

Re:有没有可能进程间共向显存

楼主用A操作B就不能并发了…

193

主题

870

帖子

903

积分

高级会员

Rank: 4

积分
903
QQ
 楼主| 发表于 2007-1-12 21:59:00 | 显示全部楼层

Re: Re:有没有可能进程间共向显存

whb9633: Re:有没有可能进程间共向显存

楼主用A操作B就不能并发了…

可不可以这样理解
A与B并发。A提供所有显示服务。
进程间并发通过共享内存。

B有显示窗口,但并不操作。

A,B。。。。所有的显示窗口 都交给A操作。

换句话说 A给所有需要显示的进程提供渲染服务。
[em16]

17

主题

258

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
发表于 2007-1-14 13:23:00 | 显示全部楼层

Re:有没有可能进程间共向显存

应该没有问题,可以先把显存里面的东西拷贝到一个共享的内存里面,然后其它进程从里面读取数据,不过在写内存的时候要有信号量控制一下.

193

主题

870

帖子

903

积分

高级会员

Rank: 4

积分
903
QQ
 楼主| 发表于 2007-1-26 13:59:00 | 显示全部楼层

Re: Re:有没有可能进程间共向显存

ddrmsdos: Re:有没有可能进程间共向显存

应该没有问题,可以先把显存里面的东西拷贝到一个共享的内存里面,然后其它进程从里面读取数据,不过在写内存的时候要有信号量控制一下.

但是你忘了效率阿,怎么可能从显存中读取数据呢?
从显村中读取数据是无法接受的慢速阿
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 08:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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