2016-07-18 9 views
0

Ich mache einen 360 Media Player mit Cardboard SDK in Android (eigentlich verwende ich das neue GoogleVR SDK, aber es funktioniert ziemlich ähnlich). Um dies zu tun, ich folge this code:Stereo Rendern einer Kugel mit Karton

Alles funktioniert gut mit einem monokularen Vision und mit einem Stereo, wenn nicht verzerrt (pappeView.setDistortionCorrectionEnabled (false)). Aber wenn ich versuche, die Verzerrungskorrektur zu verwenden, zieht es das:

enter image description here

ich dies in der GVR API gefunden habe:

Wenn Verzerrungskorrektur der GL Kontext aktiviert ist, wird eingestellt werden ziehen in einen Bildpuffer durch eine Textur zum Zeitpunkt dieser Aufforderung gesichert, so dass, wenn ein Implementierer müssen den Framebuffer für einige Rendering-Stufe ändern dann muss der Implementierer setzen Sie den Framebuffer auf die über glGetIntegerv erhalten ein (GL_FRAMEBUFFER_BINDING, .. .) danach.

Aber ich bin mir nicht sicher, ob das verwandt ist.

Das ist mein onDrawEye Code:

/** 
* Draws a frame for an eye. 
* 
* @param eye The eye to render. Includes all required transformations. 
*/ 
@Override 
public void onDrawEye(Eye eye) { 


    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT); 
    Matrix.multiplyMM(mView, 0, eye.getEyeView(), 0, mCamera, 0); 
    Matrix.multiplyMM(mViewProjectionMatrix, 0, mProjectionMatrix, 0, mView, 0); 

    mSphere.draw(mViewProjectionMatrix); 

    checkGLError("onDrawEye"); 

} 

Irgendwelche Ideen wie diese zu lösen? Vielen Dank

(By the way, wenn ich stattdessen einen Würfel ziehen von einer Kugel alles gut funktioniert)

Antwort

0

Okay, fast 2 Monate später löste ich endlich mein Problem. Wenn jemand wissen möchte, wie das geht, war es kein Problem von gvr, sondern wie ich meine Szene initialisiert habe. Grundsätzlich habe ich jede Arbeit im Sphere-Konstruktor auf die Draw-Methode, aber auf die Shader-Initialisierung verschoben.