2017-05-14 130 views
0

我在Android上使用OpenGL ES 3,並試圖加載sRGB紋理併爲其生成mipmap。我使用GL_SRGB8作爲內部格式,使用glGenerateMipmap(GL_TEXTURE_2D)生成mipmap,並使用GL_LINEAR_MIPMAP_LINEAR。當我嘗試使用它時,它會畫出黑色的紋理。在OpenGL ES 3中使用GL_SRGB8的glGenerateMipmap導致黑色紋理

如果我使用GL_RGB8代替它,它可以工作。如果我不嘗試使用mipmap,GL_SRGB8的作品。我也在桌面OpenGL上運行相同的代碼,它也可以。有沒有辦法讓這個在OpenGL ES中工作?

回答

0

在GPU上生成mipmap需要顏色格式既可過濾(創建縮減樣本)又可呈現(寫入輸出圖像)。 sRGB不能保證是規範中的可渲染格式(GLES 3.2規範中的表8.10)。

您必須在CPU上生成mipmap並手動上載它們。