2010-08-09 103 views
3

我有一個iPhone OpenGL-ES 1.1項目,呈現簡單的3D模型。如果我沒有附加深度緩衝區,則所有東西都可以正確渲染(除非沒有深度認識)。但是,當我附加深度緩衝區時,所有呈現的都是洋紅色屏幕。清晰的顏色未設置爲洋紅色。它是藍色的。任何人都知道這裏發生了什麼。這是我的設置代碼=>OpenGL-ES 1.1 iPhone - 深度緩衝區導致洋紅色屏幕

glGenFramebuffersOES(1, &framebuffer); 
    glBindFramebufferOES(GL_FRAMEBUFFER_OES, framebuffer); 

    glGenRenderbuffersOES(1, &colorRenderbuffer); 
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorRenderbuffer); 
    glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_RGBA8_OES, screenWidth, screenHeight); 
    glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, colorRenderbuffer); 

    glGenRenderbuffersOES(1, &depthRenderbuffer); 
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer); 
    glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, screenWidth, screenHeight); 
    glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer); 

這給出洋紅色屏幕。註釋掉最後4行會導致它渲染對象。

回答

2

可能你的screenWidth/screenHeight沒有初始化呢?

檢查下列問題是否解決了您的問題: glRenderbufferStorageOES(GL_RENDERBUFFER_OES,GL_DEPTH_COMPONENT16_OES,320,480);

+0

這不完全是。它們已初始化,但它們與我繪製的UIView的維度不匹配。謝謝,這讓我看到了正確的地方 – 2010-08-11 15:14:49