2013-03-07 2 views
1

색상 당 1 바이트의 "원시"BGRA 텍스처가 포함 된 버퍼가 있습니다. 줄의 순서가 반대입니다 (텍스처가 거꾸로되어 있음).BGRA -> RGBA 및 수직 플립, OptiX

BGRA 버퍼는 모두 녹색 (0, 255, 0, 255)입니다.

RGBA로 변환하고 텍스처 선을 뒤집을 필요가 있습니다. 나는이 시도 :

// bgra is an unsigned char* 

int width = 1366; 
int height = 768;  

unsigned char* rgba = new unsigned char[width * height * 4]; 

for(int y = height - 1; y >= 0; y--) 
{ 
    for(int x = 0; x < width; x++) 
    { 
     rgba[(x * y * 4)]  = bgra[(x * y * 4) + 2]; 
     rgba[(x * y * 4) + 1] = bgra[(x * y * 4) + 1]; 
     rgba[(x * y * 4) + 2] = bgra[(x * y * 4)]; 
     rgba[(x * y * 4) + 3] = bgra[(x * y * 4) + 3]; 
    } 
} 

을하지만, 렌더링 결과는 전체 녹색 화면이 아니라이 :

내가 잘못 무슨 일을 할 수 있는가?

답변

5

잘못 인덱싱하고 있습니다.

이것은 그것을 할 방법입니다 :

rgba[(x + y * width) * 4]  = bgra[(x + y * width) * 4 + 2] 
+0

덕분에, 내 색인 벗어났다. 그러나 그것이 내 유일한 문제는 아니었다. 질문이 수정되었습니다. – EClaesson

+0

색인 생성이 문제 였고 코드의 아래쪽에서 색인이 끊어졌습니다. 감사. – EClaesson