VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 14457|回复: 6

讲一下SetRenderTarget吧,最近才弄懂的东西

[复制链接]
 楼主| 发表于 2011-4-2 16:06:40 | 显示全部楼层 |阅读模式
本帖最后由 frankwangli 于 2011-4-2 21:07 编辑

总的来说DX没有直接提供对贴图的编辑功能,如果我们需要多次渲染的贴图就不太好用常规方法实现,这个时候就可以用到SetRenderTarget了
首先申明2个面和一个贴图材质

Private oldSur As Direct3DSurface8 '用于底层的贴图
Private SurFaceT As Direct3DTexture8 '用于贴图的材质
Private SurFace As Direct3DSurface8 '用于关联贴图的面

'在初始化的时候执行下面的语句
Set oldSur = D3DDevice.GetRenderTarget '将oldSur设置为最初始的渲染对象,也就是底层,对其渲染就相当于对屏幕渲染了

Set SurFaceT = D3DX.CreateTexture(D3DDevice, W, H, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT) '生成一个和DX对象一样大的材质贴图
Set SurFace = SurFaceT.GetSurfaceLevel(0) '将SurFace面绑定到SurFaceT这个材质贴图上

'渲染的时候 如果对SurFace渲染的话,就相当于改变了SurFaceT这个材质对象了

'渲染的时候设置对SurFace进行渲染
D3DDevice.SetRenderTarget SurFace, Nothing, ByVal 0
'这里可以添加渲染的过程
'.......
'渲染结束
'这个时候屏幕上是不会出现任何东西的
'只有对oldSur渲染的时候才会反应到屏幕上
D3DDevice.SetRenderTarget oldSur, Nothing, ByVal 0
'这里设置对oldSur进行渲染,结果就会直接反应到屏幕上

发表于 2011-4-5 14:56:26 | 显示全部楼层
希望能多些基本东西的讲解,DX很多细节都理解的不透
回复 支持 反对

使用道具 举报

发表于 2011-7-9 00:44:51 | 显示全部楼层
回复 frankwangli 的帖子

.SetRenderTarget 函数 为什么只能在主循环中使用呢? 放在过程中就会出错
回复 支持 反对

使用道具 举报

发表于 2011-7-9 00:59:51 | 显示全部楼层
例程.rar (11.4 KB, 下载次数: 651)

点评

编译成p代码就没事了  发表于 2012-4-21 21:33
回复 支持 反对

使用道具 举报

发表于 2011-7-26 21:06:24 | 显示全部楼层
那到底为什么呢?为什么内存错误?
回复 支持 反对

使用道具 举报

发表于 2012-3-14 20:10:19 | 显示全部楼层
渲染。。。没接触还。不知道怎么回事。下载例程学习一下
回复 支持 反对

使用道具 举报

发表于 2015-2-15 01:17:42 | 显示全部楼层
本帖最后由 passok 于 2015-2-15 01:52 编辑

是啊,我也遇到这个问题了。。。

先只找到了这个方法:工程属性里面设置为编译为P-代码。。。 P-代码.jpg

或者选择“无优化”。。。 无优化.jpg
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-7-4 04:56

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表