Unity-randertexture
用途:
在當(dāng)前畫(huà)面基礎(chǔ)上再次渲染
什么是RenderTexture?
RenderTexture是unity定義的一種特殊的Texture類型,它連接著一個(gè)FrameBufferObject的存在于GPU端的Texture(Server-Side Texture)從上面對(duì)RenderTexture的解釋我們了解到要先知道Texture和FrameBufferObject是什么
什么是Texture?
中文翻譯叫紋理,先說(shuō)一下一個(gè)紋理是如何被渲染到屏幕上的 ,起初紋理存在硬盤(pán)(RAM)里,它被cpu解壓縮,如果想要顯示它,那么數(shù)據(jù)將會(huì)被發(fā)送給(上傳到,cpu和gpu之間的通信可以理解成client和server之間的通信)GPU,gpu將它放在顯存(VARM)中,顯存中有一塊內(nèi)存區(qū)域叫做RenderBuffer(渲染緩存),RenderBuffer只是數(shù)據(jù)緩存,它還不能用作Texture渲染,盡管它現(xiàn)在已經(jīng)是一個(gè)texture了,在這里 texture等待著被渲染,當(dāng)要渲染這個(gè)Texture時(shí),會(huì)生成一FrameBuffer(幀緩存),當(dāng)這個(gè)幀緩存被添加到默認(rèn)的幀緩存物體上(FrameBufferObject)時(shí),它就會(huì)被繪制到屏幕上.FrameBuffer指向的是顯存中RenderBuffer的地址,簡(jiǎn)單的說(shuō),RenderBuffer需要附加在FrameBuffer上,它才能是五顏六色的圖片,否則它只是顯存上的一堆數(shù)據(jù),關(guān)于RenderBuffer和FrameBuffer可以看這些文章:
Linux OpenGL 實(shí)踐篇-10-framebuffer - 北冥有魚(yú)其名為鯤 - 博客園
https://www.cnblogs.com/xin-lover/p/8977307.html
OpenGL ES學(xué)習(xí)之路(3.1) 著色器渲染過(guò)程、渲染方式、FrameBuffer與RenderBuffer - 簡(jiǎn)書(shū)
https://www.jianshu.com/p/dbba97339e75?tdsourcetag=s_pctim_aiomsg
什么是FrameBufferObject?
? ? ? ? 可以理解FrameBufferObject是一個(gè)集合,集合了FrameBuffer,通過(guò)快速刷新Framebuffer實(shí)現(xiàn)動(dòng)態(tài)效果,最典型的FBO就是Unity的Main Camera,它是默認(rèn)的FBO,是gpu里渲染結(jié)果的目的地.但是現(xiàn)代gpu通??梢詣?chuàng)建很多其他的FBO(Unity中可以創(chuàng)建多個(gè)Camera),這些FBO不連接窗口區(qū)域,這種我們創(chuàng)建的FBO的存在目的就是允許我們將渲染結(jié)果保存在gpu的一塊存儲(chǔ)區(qū)域,待之后使用,這種用法叫做離屏渲染,這是一個(gè)非常有用的東西。Camera 輸出的FBO,可以嵌在另一個(gè)FBO中,Unity中使用RenderTexture來(lái)接收FBO(可視化FBO),game窗口就是一個(gè)RenderTexture,當(dāng)Camera的RenderTarget設(shè)置為null時(shí)表示輸出到game窗口(沒(méi)有攝像機(jī)的RenderTaget為null會(huì)顯示沒(méi)有攝像機(jī)進(jìn)行渲染),設(shè)置不為null表示輸出到某個(gè)RT.
OK 理解了上面的原理咱們來(lái)制作一下
首先創(chuàng)建資源 randertexture

在新的場(chǎng)景中創(chuàng)建一個(gè)camera;
把要渲染物體單獨(dú)創(chuàng)建一個(gè)layer;
這里已effect為例

camera的渲染圖層改為effect,Background Type 改為solid color,底色改為黑色,一般半透明為0.

創(chuàng)建UI層canvas,并創(chuàng)建image,然后把前面創(chuàng)建的randertexture拖入texture中

如果對(duì)渲染疊加有要求可以新建材質(zhì)球,effectrender,來(lái)控制他的渲染疊加方式。
運(yùn)行unity就會(huì)看到你要單獨(dú)渲染的物體已經(jīng)出現(xiàn)在畫(huà)面中。