- Home /
Can render to screen, but can't render to renderTexture
hi everyone, I want to render something to a renderTexture by using functions of GL class, and then use this texture for render other things. I can get the correct result in rendering to screen, but can't render to the renderTexture. How can I do it? The script attached to mainCamera as follow, which with a diffuse material and a renderTexture draged to it. (Forgive my poor English, and Thanks in advance :-) )
using UnityEngine;
using System.Collections;
public class RenderSomething2Texture : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public Material mat;
public RenderTexture _renderTexure;
public GameObject cube;
//Failed to render to textue.
void OnPreRender(){
cube.GetComponent<MeshRenderer>().material.mainTexture = _renderTexure;
RenderTexture.active = _renderTexure;
float offset = 0;
GL.PushMatrix();
GL.LoadOrtho();
//GL.LoadPixelMatrix(0, (int) RenderTextureSetting.kBumpTexSize, 0, (int) RenderTextureSetting.kBumpTexSize);
//GL.Viewport(new Rect(0, 0, (float) RenderTextureSetting.kBumpTexSize, (float) RenderTextureSetting.kBumpTexSize));
GL.Clear( false, true, Color.black );
mat.SetPass(0);
GL.Begin(GL.TRIANGLE_STRIP);
GL.TexCoord2(offset, 1.0f + offset);
GL.Vertex3(0.0f, 1.0f, 0.5f);
GL.TexCoord2(1.0f + offset, 1.0f + offset);
GL.Vertex3(1.0f, 1.0f, 0.5f);
GL.TexCoord2(offset, offset);
GL.Vertex3(0.0f, 0.0f, 0.5f);
GL.TexCoord2(1.0f + offset, offset);
GL.Vertex3(1.0f, 0.0f, 0.5f);
GL.End();
GL.PopMatrix();
RenderTexture.active = null;
}
//Render to screen is OK.
void OnPostRender(){
float offset = 0;
GL.PushMatrix();
GL.LoadOrtho();
//GL.LoadPixelMatrix(0, (int) RenderTextureSetting.kBumpTexSize, 0, (int) RenderTextureSetting.kBumpTexSize);
//GL.Viewport(new Rect(0, 0, (float) RenderTextureSetting.kBumpTexSize, (float) RenderTextureSetting.kBumpTexSize));
GL.Clear( false, true, Color.black );
mat.SetPass(0);
GL.Begin(GL.TRIANGLE_STRIP);
GL.TexCoord2(offset, 1.0f + offset);
GL.Vertex3(0.0f, 1.0f, 0.5f);
GL.TexCoord2(1.0f + offset, 1.0f + offset);
GL.Vertex3(1.0f, 1.0f, 0.5f);
GL.TexCoord2(offset, offset);
GL.Vertex3(0.0f, 0.0f, 0.5f);
GL.TexCoord2(1.0f + offset, offset);
GL.Vertex3(1.0f, 0.0f, 0.5f);
GL.End();
GL.PopMatrix();
}
}
Just to make sure, did you check if the camera set to "Not Clear" or "Depth Only" in clear flags?
also, did you try unlit material? if you render by yourself with material that needs lighting, I Remember it will have no lighting, which makes it black
Answer by Jason-King · Oct 15, 2016 at 08:35 PM
I found the reason this was occurring in my situation... my RenderTexture was created with a depth buffer. Once I disabled the depth buffer associated with the render texture the problem went away.
Your answer