【发布时间】:2016-09-09 15:20:44
【问题描述】:
我正在尝试将纹理连接/添加到更大的纹理中,但无法保留更大纹理的结果。
我有一个着色器,它接受一些变量,例如较小纹理在较大纹理中的位置、较小纹理本身,当然还有较大纹理。
基本上,我的着色器工作正常(我认为),结果我在正确的位置看到较大的纹理中较小的纹理。但是我更大的纹理永远不会被保存,所以所有的先行通道都被忽略了。
如何保存结果以将其再次发送到着色器以将所有小纹理连接到其中?
我试试这个:Graphics.Blit(_RTConcat, _RTConcat, _concat);
RTConcat 是我更大的纹理,它是RenderTexture,我尝试在编辑器或脚本中创建它,但结果相同,_concat 是使用着色器的材质。
PS:我用的是unity 4.5.3,无法升级,是专业版。
编辑/更新:
我“成功”地做出了我想要的东西,但我不明白它为什么会起作用。
在我的主脚本中,我初始化了一个生成的 renderTexture 并将其设置为一个垫子,然后将其应用到一个平面上
_radarVision = new RenderTexture(_radarTextureWidth, _renderHeight, 24);
_renderHeight, 24);
_radarScreen.SetTexture("_MainTex", _radarVision);
_radarVision和_radarScreen在我的脚本中再也不会被编辑了。
Graphics.Blit 现在在一个新脚本中,附加在相机上创建仅用于运行单个脚本:
`void OnRenderImage(RenderTexture 源,RenderTexture 目标) {
Graphics.Blit(save, save, _concat);
rttmp = RenderTexture.GetTemporary(camera.targetTexture.width, camera.targetTexture.height);
save = rttmp;
camera.targetTexture = save;
RenderTexture.ReleaseTemporary(rttmp);
}`
没有别的东西,它让我的东西正常工作,但我仍然感到困惑,因为它不应该工作......不是吗?
【问题讨论】:
标签: unity3d textures concatenation shader