2014-11-03 5 views
0

OpenGL에서 버퍼를 검색 한 후 이미지를 수직으로 뒤집으려고합니다. 나는 절반 높이를 반복하고 같은를 얻을 수 있습니다 알고이미지를 수직으로 뒤집기

const int width = 100; 
const int height = width; 
const int components = 3; 
unsigned char pixels[width * height * components]; 
glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, pixels); 
unsigned char flipPixels[width * height * components]; 
for (int i = 0; i < width; ++i) { 
    for (int j = 0; j < height; ++j) { 
     for (int k = 0; k < components; ++k) { 
      flipPixels[i + j * width + k] = pixels[(height) * (width) - ((j+1) * width) + i + k]; 
     } 
    } 
} 

, 그러나 나는 이미지의 전체 높이를 통과하여 구현하려는에는 다음과 같은 코드를 사용하여 잘못된 이미지를 출력 할 것으로 보인다. 나는 코드에 무엇이 잘못되었는지 알아낼 수 없다. 어떤 도움을 주시면 감사하겠습니다.

답변

1

이미지가 저장되는 방법은 확실하지 않지만 색인 ik에 의심스러운 동일한 보폭이 주어집니다. 어쩌면 i * componentsj * width * components을 원할 것입니다. 그 후 수직으로 반전하려면 j(height - j - 1)으로 변경해야합니다.

flipPixels[(i + j * width) * components + k] = pixels[(i + (height - 1 - j) * width) * components + k]; 
+0

그게 전부 였어! 구성 요소를 고려하는 것을 잊어 버렸습니다. 이것은 나를 몇 시간 동안 곤란하게했다. 고마워. –

관련 문제