簡體   English   中英

OpenGL ES 3.0上的sRGB幀緩沖區

[英]sRGB Framebuffer on OpenGL ES 3.0

我正在使用Java進行OpenGL ES 3.0 Android項目。 我需要實現伽馬校正,並且在某處我已經讀到OpenGL ES 3.0將支持sRGB紋理。 所以我的目的是在渲染到默認幀緩沖區之前調用glEnable(GL_FRAMEBUFFER_SRGB)。

但是,當我嘗試致電

GLES30.glEnable(GLES30.GL_FRAMEBUFFER_SRGB)

事實證明,沒有GLES30.GL_FRAMEBUFFER_SRGB,但是sRGB紋理格式有一些常量,例如GLES30.GL_SRGB。

因此,我的問題是:是否可以讓OpenGL ES 3.0對我進行伽瑪校正? 如果是,怎么辦?

否則,我想我將不得不手動進行伽瑪校正。

我意識到這個問題已有2個月的歷史了,但是自從Google提出該問題以來,我想我會為將來的Google員工發布答案:)

GL_FRAMEBUFFER_SRGB似乎僅在OpenGL桌面以及通過OpenGLES 2.0的擴展中可用。 但是通過實驗(我目前正在研究該主題),我意識到在OpenGLES 3.x上,只要幀緩沖區下面的紋理具有sRGB格式,在寫入幀緩沖區時,顏色就會正確(自動)轉換為sRGB。 。 因此,在渲染為sRGB紋理時,無需使用GL_FRAMEBUFFER_SRGB來啟用sRGB轉換。

現在,如果您直接寫入后台緩沖區,則可能具有啟用sRGB寫入的選項,但是可以在應用程序端進行控制(例如,在Windows上,如果我不是通過wgl創建上下文,則可以指定該標志)錯誤)不幸的是,我無法確認這一點,因為在我正在研究的框架中,我無權訪問此部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM