2012-06-06 16 views
5

RGB ve RGBA biçimlerinde tanımlanan ilkel 5x2 doku İşte. RGBA sürümünü yüklemeBir GL_RGB dokusunu yükledikten sonra garip renk değişimi

//      1    2    3      4    5 
unsigned char rgb[] = { 0, 0, 0,  0, 0, 0,  200, 200, 200,  0, 0, 0,  200, 200, 200, 
         0, 0, 0,  0, 0, 0,  200, 200, 200,  0, 0, 0,  200, 200, 200,  }; 
unsigned char rgba[] = { 0, 0, 0, 255, 0, 0, 0, 255, 200, 200, 200, 255, 0, 0, 0, 255, 200, 200, 200, 255, 
         0, 0, 0, 255, 0, 0, 0, 255, 200, 200, 200, 255, 0, 0, 0, 255, 200, 200, 200, 255, }; 

beklendiği gibi çalışır:

glTexImage2D(GL_TEXTURE_2D, 
      0,  // mipmap level 
      GL_RGB, // dest format 
      5,  // width 
      2,  // height 
      0,  // deprecated 
      GL_RGBA, // source format 
      GL_UNSIGNED_BYTE, 
      rgba); 

enter image description here

garip bir renk kayması RGB doku sonuçları yükleniyor:

glTexImage2D(GL_TEXTURE_2D, 
      0,  // mipmap level 
      GL_RGB, // dest format 
      5,  // width 
      2,  // height 
      0,  // deprecated 
      GL_RGB, // source format 
      GL_UNSIGNED_BYTE, 
      rgb); 

enter image description here

İlk ve ikinci ekran görüntüsü arasındaki koddaki fark, glTexImage2D için yalnızca bu iki argümandır.

Neyi yanlış yapıyorum?

Çevre

  • ATI Radeon HD5450, OpenGL 4.2
  • Windows 7, 64-Bit
  • Visual Studio 2010
+1

Paket hizalamasını ayarladınız mı? Varsayılan 4 bayttır, bu yüzden rgba dizisi Tamam olacaktır, ancak rgb dizisiyle çalışmaz. –

+0

Hayır. GlPixelStorei'ye yönelik bu argümanlar bu sorunu giderebilir mi? –

+3

[Buraya bakın] (http://www.opengl.org/wiki/Common_Mistakes#Texture_upload_and_pixel_reads) - 'glPixelStorei (GL_UNPACK_ALIGNMENT, 1)' bunu düzeltmelidir. –

cevap

10

See here - düzeltmek gerekir glPixelStorei(GL_UNPACK_ALIGNMENT, 1).

İlgili konular