0xAA55 发表于 2015-7-23 06:07:14

【然并卵】没有窗口的立方体



这也就是直接在屏幕上画一个旋转的立方体而已……至于说它的作用嘛,三个字:然并卵。
原理是使用DX的Dev->CreateOffscreenPlainSurface创建一个内存Surface,然后在每一帧的渲染中使用GetRenderTargetData将后台缓冲区中的数据移动到这个内存Surface里,最后使用内存Surface的GetDC取得HDC,并用这个HDC来更新分层窗体。
借助这个可以实现流畅、快速的DX截图、录屏、分层窗体渲染、界面渲染等各种特效,可以摆脱GDI+了。但用这种方式渲染界面的话对GPU、DX具有一定依赖性,不适用于服务器程序。
下载:**** Hidden Message *****

不过……是不是觉得这个立方体有点小呢?没错。你可以把它弄大一点(改const DWORD g_WndWidth和g_WndHeight,在Entry.c的开头)。它就会变得更大一些了。

0xAA55 发表于 2015-7-23 06:16:58

不过正因为这样,你可以把它改成一个3D的小电子宠物,而且不用担心性能问题!(性能是个大问题!!你随便怎么画都很快,因为窗口就这么大。但是像素需要通过DMA从显存传到系统内存来供GDI使用,这简直慢成狗!)

Cheehwa 发表于 2015-7-23 08:38:37

感谢楼主分享,顶贴支持~

CCInt3 发表于 2015-7-23 23:24:05

哈哈,尝试果然成功了,我玩玩看

卡卡 发表于 2015-7-24 01:58:54

0xAA55 发表于 2015-7-24 03:26:55

CCInt3 发表于 2015-7-23 23:24
哈哈,尝试果然成功了,我玩玩看

你的那个工程,也可以用这种方法,直接把信息用GDI打印到目标上,完全不必把信息变成纹理塞进去,还能很好地解决效率问题!

cyycoish 发表于 2015-7-24 17:33:07

并不然并卵呢,你可以做一个无窗体的3D魔方

0xAA55 发表于 2015-7-24 18:57:02

cyycoish 发表于 2015-7-24 17:33
并不然并卵呢,你可以做一个无窗体的3D魔方

这东西就是然并卵。

cyycoish 发表于 2015-7-24 21:59:28

0xAA55 发表于 2015-7-24 18:57
这东西就是然并卵,它严重占用DMA。

有没有其他的方式实现类似“桌面宠物”而又比较Light呢?

0xAA55 发表于 2015-7-25 07:10:23

cyycoish 发表于 2015-7-24 21:59
有没有其他的方式实现类似“桌面宠物”而又比较Light呢?

GDI、GDI+、透明分层窗口+glew

wonderzdh 发表于 2015-9-23 17:50:45

下载看卡~~

asd 发表于 2015-9-24 22:19:03

然并卵啊.............

我是无为 发表于 2015-10-9 18:58:33

看看                               。

mzflz 发表于 2015-11-14 13:05:42

看一下。。。。

0x01810 发表于 2015-11-15 09:53:46

前排学习

0x01810 发表于 2015-11-15 09:55:05

单核直接满载...

besteast 发表于 2015-11-25 16:52:45

然并卵 ;P;P;P;P;P;P;P

0xAA66 发表于 2016-1-23 12:51:47

支持一个。。。。

verifier 发表于 2016-2-2 14:57:51

个人感觉挺牛逼呢。。

0xAA55 发表于 2016-5-16 08:29:53

帖子已更新。感谢大家的关注。
更新后已经解决了卡顿的问题——其实之前是每次都让CPU等GPU把渲染流程做完再把数据传回RAM,这个过程很慢所以会卡。
用了新的方法以后它就很流畅了。原理其实是让GPU把之前渲染好的现成的数据传回RAM,这样就不用等待渲染队列了。
页: [1] 2
查看完整版本: 【然并卵】没有窗口的立方体