2016-08-07 55 views
1

我想在OSX 10.11.5上用OpenGL 3.2 SDL上下文創建一個GL_DEPTH_STENCIL_ATTACHMENT TEXTURE的幀緩衝區。看來,下面這行創建OpenGL的錯誤1280:OSX OpenGL深度模具組合

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D, depthTexture, 0); 

該紋理所產生如下:

glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH32F_STENCIL8, width, height, 0, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, 0); 

我知道這是一個OSX的問題,因爲使用此代碼在我的舊拱橋很好地工作Linux電腦。我讀過官方的tutorial,沒有提到深度和模板紋理附件。那麼這個功能只是不被支持,或者我做錯了嗎?如果這個功能不被支持,那麼我應該怎麼做呢?創建2個單獨的深度和模板紋理?

回答

2

從來沒有對此感到抱歉,但事實證明我調試錯了。 OSX確實支持模板/深度混合,即使Apple的文檔沒有太多的信息。我的錯誤實際上來自下一行,其結果如下:

glDrawBuffers(textureCount, allColorBuffers); 

因爲texCount包括深度紋理用我所有的顏色緩衝沿着錯了。所以將textureCount更改爲textureCount-1完全解決了這個問題。

+0

好奇,你使用xcode來建立你的opengl軟件嗎? –

+0

@BjornTipling喲哈哈 – Jas