12

glTexSubImage2D を呼び出しています。ピクセル形式がGL_RGBAの場合、ピクセル タイプGL_UNSIGNED_BYTEとはGL_UNSIGNED_INT_8_8_8_8完全に同等ですか?

また、これら2つのペアは同等ですか?

  • Format = GL_RGBA, Type = GL_UNSIGNED_INT_8_8_8_8
  • Format = GL_BGRA, Type = GL_UNSIGNED_INT_8_8_8_8_REV

OpenGL の仕様と GL_EXT_packed_pixels の仕様を読んでみましたが、正直、頭も尻尾もわかりません。

4

2 に答える 2

26

答えは No と No です。コンピュータのバイト オーダーについて考える必要があります。GL_RGBAとがある場合GL_UNSIGNED_INT_8_8_8_8、それはピクセルが 32 ビット整数で格納され、色がそのような整数の論理順序 RGBA にあることを意味します。たとえば、赤は上位バイトにあり、アルファは下位バイトにあります。バイト。しかし、マシンが (Intel CPU のように) リトルエンディアンの場合、メモリ内の実際の順序は ABGR になります。一方、GL_RGBAwithGL_UNSIGNED_BYTEは、コンピューターがリトルエンディアンかビッグエンディアンかに関係なく、バイトを RGBA 順で格納します。

GL_BGRAwithGL_UNSIGNED_INT_8_8_8_8_REVは色を論理順序 ARGB の整数に格納しますが、リトル エンディアン マシンではメモリ内の BGRA 順序を取得します。

于 2011-10-16T18:33:40.923 に答える