2017-02-16 3 views
0

Ich habe eine iOS-App, die GLKViewController verwendet und Ich habe das Puffer wie folgt angezeigt:GLKView mit glDrawElements Ergebnisse des Stencilbuffer in schwarzer Bildschirm

innen @interface RootViewController : GLKViewController<UIKeyInput>

- viewDidLoad { 
    [super viewDidLoad]; 

    _context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; 

    GLKView* view = (GLKView*)self.view; 
    view.context = _context; 
    view.drawableColorFormat = GLKViewDrawableColorFormatRGBA8888; 
    view.drawableDepthFormat = GLKViewDrawableDepthFormat24; 
    view.drawableStencilFormat = GLKViewDrawableStencilFormat8; 
    view.drawableMultisample = GLKViewDrawableMultisampleNone; 
    self.preferredFramesPerSecond = 60; 

    [EAGLContext setCurrentContext:_context]; 
} 

Allerdings, wenn ich Unentschieden nennen später:

glDrawElements(getGlPrimitiveType(ePrimType), numIndis, GL_UNSIGNED_SHORT, startIndis);

Es in schwarzen Bildschirm führt und auf Capture GPU Frame, zeigt dieser Fehler auf:

Your app rendered with STENCIL_TEST enabled into a framebuffer without an attached stencil buffer.

Gibt es etwas, was ich verpasst?

Ich erinnerte mich an, bevor wegen dem gleichen Problem Tests Tiefe, und ich fix mit dem view.drawableDepthFormat = GLKViewDrawableDepthFormat24; auf viewDidLoad Ich bin nicht sicher über Stencil Testing, Apples Dokumentation ist entweder sehr gering oder sehr allgemein mit Theorien der ganzen (dh: ziemlich viel nutzlos).

Antwort

0

ich den Schuldigen gefunden,

ich das Original FBO-ID bereits Setup von GLKView verloren haben, wenn ich zu Textur tun Render:

uint m_nFboId; 
glGenFramebuffers(1, &m_nFboId); 
glBindFramebuffer(GL_FRAMEBUFFER, m_nFboId); 

dann, wenn ich versuche, die zurückzusetzen Original FBO-ID:

GLint defaultFBO; 
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &defaultFBO); 

hier ist die defaultFBO der Wert m_nFboId bevor erzeugt .. So ist die Lösung ist es, entweder es vor der Operation zu sichern, oder rufen sie zurück [GLKView bindDrawable];

Verwandte Themen