아래 질문에 대한 답변을드립니다. 도움을 주신 gavinb에게 감사드립니다.Uint8을 부호없는 char RGB 값으로 변환하십시오.
질문 : 학습 경험을 위해 텍스처를 복제하려고합니다. 24 비트 TGA 이미지를 사용 중이며 SDL로로드하고 있습니다. 나는 OpenGL을 텍스처에이를 보낼 계획하고있어 내가 직접,면> 픽셀을 보낼 때이 작업을 수행 : 나는 내 자신의 구조
OLDstruct Colour24
{
unsigned char r;
unsigned char g;
unsigned char b;
}
unsigned char* texture = new unsigned char[width * height * 3];
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
int index = (y * width) + x;
Colour24 colour = getColourAt(x, y);
newTexture[index] = colour.r;
newTexture[index + 1] = colour.g;
newTexture[index + 2] = colour.b;
}
}
Colour24 getColour(int x, int y)
{
Uint32 pixel;
Uint8 red, green, blue;
Colour24 rgb;
pixel = getPixel(m_surface, x, y); // using the SDL get pixel function
SDL_GetRGB(pixel, m_surface->format, &red, &green, &blue);
rgb.r = red;
rgb.b = blue;
rgb.g = green;
return rgb;
}
을 만들었습니다. 하지만 직접 데이터 배열을 만들고 싶습니다. 도움이 대단히 감사합니다!
편집 : 죄송합니다. 나 자신을 충분히 설명하지 못했습니다. 24 비트 TGA 이미지가 들어있는 SDL_Surface에서 텍스처를 수동으로 다시 만들려고합니다. 그런 다음 텍스처를 생성하기 위해 OpenGL에 줄 것입니다. 내 표면 -> 픽셀로 내 OpenGL 코드를 테스트하고 잘 작동합니다. 나는 그걸 로딩하는 것을 잘못 처리 한 것뿐입니다.
?컴파일러 오류? 당신이 기대하는 것을하지 않습니까? 최소한 코드는 함수 정의의 동일한 레벨에 코드를 포함하므로 불완전합니다. – bjhend
이 텍스처를 OpenGL에로드 할 수 있지만 올바르지 않습니다. 나는 빨강, 초록 및 파랑 십자가가 부화하는 것을 많이 봅니다. – rocklobster