浏览代码

[OpenGL] Fixed BGR/RGB mismatch. Fixed CPalettedBitmap issue.

Michał W. Urbańczyk 12 年之前
父节点
当前提交
672cf5bcb5
共有 2 个文件被更改,包括 3 次插入3 次删除
  1. 1 1
      client/Gfx/Images.cpp
  2. 2 2
      client/Gfx/ImgMakers.cpp

+ 1 - 1
client/Gfx/Images.cpp

@@ -307,7 +307,7 @@ CPalettedBitmap::~CPalettedBitmap()
 
 void CPalettedBitmap::textureTransfer()
 {
-	glTexImage2D(GL_TEXTURE_RECTANGLE, 0, GL_R8UI, width, height, 0, GL_RED, GL_UNSIGNED_BYTE, buffer);
+	glTexImage2D(GL_TEXTURE_RECTANGLE, 0, GL_R8UI, width, height, 0, GL_RED_INTEGER, GL_UNSIGNED_BYTE, buffer);
 	palette.loadToVideoRAM();
 }
 

+ 2 - 2
client/Gfx/ImgMakers.cpp

@@ -31,11 +31,11 @@ CImage * CImage::makeBySDL(void* data, size_t fileSize, const char* fileExt)
 		}
 		else if (ret->format->BytesPerPixel == 3)
 		{
-			img = new CBitmap32(ret->w, ret->h, (ColorRGB*)ret->pixels);
+			img = new CBitmap32(ret->w, ret->h, (ColorRGB*)ret->pixels, ret->format->Rmask == 0x00FF0000);
 		}
 		else if (ret->format->BytesPerPixel == 4)
 		{
-			img = new CBitmap32(ret->w, ret->h, (ColorRGBA*)ret->pixels);
+			img = new CBitmap32(ret->w, ret->h, (ColorRGBA*)ret->pixels, ret->format->Rmask == 0x00FF0000);
 		}
 
 		SDL_FreeSurface(ret);