2012-06-06 13 views
5

यहां एक आदिम 5x2 बनावट है, जिसे आरजीबी और आरजीबीए स्वरूपों में परिभाषित किया गया है।एक GL_RGB बनावट लोड करने के बाद अजीब रंग शिफ्ट

//      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, }; 

RGBA संस्करण लोड हो रहा है के रूप में उम्मीद काम करता है:

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

एक अजीब रंग पारी में आरजीबी बनावट परिणाम लोड हो:

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

पहले और दूसरे स्क्रीनशॉट के बीच कोड में अंतर glTexImage2D के लिए केवल दो तर्क हैं।

मैं क्या गलत कर रहा हूं?

पर्यावरण

  • ATI Radeon HD5450, ओपन 4.2
  • विंडोज 7, 64-बिट
  • विजुअल स्टूडियो 2010
+1

क्या आपने पैक संरेखण सेट किया था? डिफ़ॉल्ट 4 बाइट्स है, इसलिए आरजीबीए सरणी ठीक रहेगी, लेकिन यह आरजीबी सरणी के साथ काम नहीं करेगी। –

+0

नहीं। GlPixelStorei के लिए कौन से तर्क इस मुद्दे को ठीक करेंगे? –

+3

[यहां देखें] (http://www.opengl.org/wiki/Common_Mistakes#Texture_upload_and_pixel_reads) - 'glPixelStorei (GL_UNPACK_ALIGNMENT, 1)' इसे ठीक करना चाहिए। –

उत्तर

10

See here - glPixelStorei(GL_UNPACK_ALIGNMENT, 1) इसे ठीक करना चाहिए।