Direct Rendering Bug

Category: 

Google Cardboard und Unity3D arbeiten im Allgemeinen sehr gut zusammen, jedoch kommt es bei manchen PCs zu einem Problem mit dem Direct Rendering. Um Image Effects zu nutzen muss man das Häkchen von Direct Render entfernen, wenn man dann jedoch versucht das Spiel im Editor zu starten, stürzt dieser ab.

Lösung

Wie sooft gibt es auch hier mehrere Ansätze um das Problem zu lösen. Man könnte natürlich in den Code des StereoControllers schauen und das Problem dort fixen wo es auftritt. Da dies jedoch ggf. etwas aufwändiger ist, schauen wir uns lieber den einfachen Weg an. Dieser besteht darin, das Häkchen von Direct Render gesetzt zu lassen und den Wert nur über den Code auf false zu setzen. Dafür erstellen wir uns ein sehr simples Script und hängen es an die Kamera, welche auch den StereoController besitzt.
using UnityEngine;
using System.Collections;

public class RenderFix : MonoBehaviour {
  void Start () {
    #if !UNITY_EDITOR
    GetComponent<StereoController>().directRender = false;
    #endif
  }
}

Bzw. falls man lieber Javascript nutzen möchte:

#pragma strict

function Start () {
  #if !UNITY_EDITOR
  GetComponent<StereoController>().directRender = false;
  #endif
}

Wenn wir nun das Spiel im Editor ausführen, macht das Script einfach nichts und Direct Render bleibt weiterhin auf true. Wenn wir das Programm jedoch außerhalb des Editors ausführen, also z.B. auf unserem Android Gerät, so wird Direct Render auf false gesetzt und unsere Image Effects funktionieren auch auf dem Smartphone.