找回密码
 立即注册
查看: 555|回复: 2

Unity的渲染相关问题?

[复制链接]
发表于 2021-3-9 17:31 | 显示全部楼层 |阅读模式
Unity的渲染相关问题?
发表于 2021-3-9 17:40 | 显示全部楼层
1 maincamera 只是一个打了 tag的camera, 可以没有 ,这样 用到camera.main的代码就会失败
例如xffect的代码

2:setTargetBuffers 将 rendertexture的buffer设置为相机的渲染对象, 因此要获取buffer数据,需要将 对应的rendertexture 设置为active, 接着调用texture2d 的readpixels可以读取 colorbuffer里面的数据 到 texture2d里面, 参考  GetPixels of RenderTexture
如果要读取 depthbuffer里面的数据 参考 Writing depth to render target
参考unity builtin shader 里面关于depthtexture 的shader以及CGInclude 里面的头文件,查看如何获得depthbuffer的数据

3:Graphics 是unity的底层API,Camera是Unity的上层API,Camera渲染的是相机自身看到的场景中的物体,而Graphics 直接操作的是 rendertexture,mesh,以及纹理texture,以及GPU生成的几何体这些对象的处理和渲染,  两个操作的对象是不同的,两个API 所处的 游戏引擎 层级也是不同的。

4: camera.render 用于手动精确控制 渲染顺序,Unity - Scripting API: Camera.Render
例如想要对游戏中玩家对象渲染两次,第一次用正常Camera 渲染玩家模型,LateUpdate 函数里面 第二次用相同位置的另外一个camera,手动调用render  再render一边模型。

例如想给主角加一个阴影,第二遍可以用replace shader渲染一下人物阴影,接着调整一下阴影的rendertexture的alpha值,接着用于地面混合一下,这样就可以制作出 动态实时 半透明阴影了。

只要disable掉 camera组件 就可以 关闭主动渲染。
发表于 2021-3-9 17:44 | 显示全部楼层
关于ReadPixels截图的问题?
我使用ReadPixels来将图片进行写入,但是当图片超出屏幕的时候,使用该方法则会报错:attempting to ReadPixels outside of RenderTexture bounds。
该如何获取比屏幕大的图片,来写入到Texture中
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-20 17:53 , Processed in 0.100007 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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