2014-04-29 44 views
1

我可以理解RGBA4與UNSIGNED_SHORT_4_4_4_4,其中每個顏色分量將是4位。 但是,如果我們對具有類型無符號字節的紋理使用RGBA4內部格式,那麼解釋如何?RGBA4格式,類型GL_UNSIGNED_BYTE

我可以理解的是,在這裏每個組件都是8位,但是那麼'4'將表示RGBA4? 它會考慮每個8位/組件的前4位而忽略其他位?

+0

'UNSIGNED_BYTE'僅在傳輸像素時使用。這是爲了解釋你的'data'指針指向的圖像數據。在GL將這些數據複製成自己的內部格式之後,該類型不再具有任何意義。如果需要,您可以將浮點圖像數據複製到「GL_RGBA4」中,但GL不關心,它只是要轉換像素數據。請注意,由於您標記了此ES,因此討論會有所不同 - ES不支持不匹配的內部/像素傳輸類型(無轉換)。如果你想要一個單一的答案,我建議你堅持使用單一的API來解決你的問題。 –

+0

Andon M. Coleman @我想問這個查詢專門爲opengl es 3.0和與glTexImage *調用有關。這些規範顯示這個內部格式爲RGBA4的GL_UNSIGNED_BYTE是有效的。但是當我用RGBA8渲染GL_UNSIGNED_BYTE的圖像和RGBA4時,GL_UNSIGNED_BYTE看起來不同。因此想知道如何將這個圖像數據應用於RGBA4內部格式。 – user1896853

回答

1

internalFormatglTexImage2D的參數是紋理格式。

如果您的意思是詢問formattype參數,那不是紋理的格式,而是輸入數據的格式。 GL將通過遵循GL規範(8.4.4傳輸GL 4.3 core規範中的像素矩形)中描述的特定規則來解釋傳入數據類型。

特別地,在8.4.4.1啓封,下「特殊解釋」,則詢問被覆蓋的情況下:

如果發生不匹配時

通過任何命令處理像素的矩形產生一個錯誤INVALID_OPERATION