我需要序列化一個任意的OpenGL紋理對象,以便能夠在稍後用相同的狀態和數據恢復它。如何在OpenGL中獲取原始(未轉換)的紋理數據?
我正在尋找一種方法來獲取紋理圖像數據。這是我迄今爲止發現的:
還有
glGetTexImage
。它允許獲取紋理圖像,但它需要一個指定的格式/類型對(像(
GL_RGB
,GL_HALF_FLOAT
)其所執行轉換。允許的格式和類型不映射1 :1至圖像格式雖然,並且將不允許獲得更多的晦澀格式,如
GL_R3_G3_B2
無需額外的轉換而且正確地確定用於基礎內部格式(如
GL_RGB
沒有尺寸)C類型涉及一些非平凡的勞動。有
ARB_internalformat_query2
允許要求GL_GET_TEXTURE_IMAGE_FORMAT
和GL_GET_TEXTURE_IMAGE_TYPE
哪些代表給定紋理glGetTexImage
的最佳選擇。不錯,但有和
glGetTexImage
相同的侷限性,並且沒有廣泛使用。精彩的
glGetCompressedTexImage
優雅地返回壓縮紋理的數據,但它既不適用於非壓縮圖像也不適用於對應的。
這些都不允許獲取或設置非壓縮紋理的原始數據。有沒有辦法?
Dankeschön!現在我知道我在處理什麼。我一直在努力把*這件東西*放在一起(https://gist.github.com/Kos/4739337),我呃期待着測試它。而且我無法找到像RGB10或RGBA2等格式的完美匹配。我希望我有'ARB_internalformat_query2'來驗證所有這些容易... – Kos 2013-02-08 14:42:24