소스 검색

[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);