2013-06-21 2 views
0

OpenGL에서 일부 픽셀 작업을 수행하고 있으며 PNG를로드해야만 정상적으로 작동합니다. 나는 'Devil'이라는 것을 발견하고 발견 한 예를 따랐다. 그것은 무언가를 표시하지만 무작위 무지개입니다. 나는 내가 할 수있는 한 그것을 바로하고있다. 데이터를 텍스트 파일로 출력하여 확인합니다. 다른 라이브러리를 사용해 보았습니다. 그러나 라이브러리를 구축하는 것은 저의 능력을 약간 뛰어 넘었습니다. 여기 내 설정이다 :Devil OpenGL에서 표시하기위한 PNG 형식

((In global scope)) 
unsigned char pixels[160000*3]; 
ILubyte * bytes ; 

((Main)) 
ilInit(); 

ilLoadImage("test.png") ; 

size = ilGetInteger(IL_IMAGE_SIZE_OF_DATA) ; 

bytes = ilGetData() ; 

그리고 여기 내 드로잉 루틴이다 : 나는 정렬이 잘못 알고

//Color the screen all pretty 
for(int i=0;i<160000*3;) 
{ 
    pixels[i] = a; 
    i++; 
    pixels[i] = b; 
    i++; 
    pixels[i] = c; 
    i++; 
} 

//Break the png 
for(int i = 0 ; i < size;) 
{ 
    if(bytes[i+3] != 255) 
    { i+=4; 
      continue; } 

    pixels[i] = bytes[i]; 
    i++; 
    pixels[i] = bytes[i]; 
    i++; 
    pixels[i] = bytes[i]; 
    i++; 
    i++; 
} 

glDrawPixels(
    400, 
    300, 
    GL_RGB, 
    GL_UNSIGNED_BYTE, 
    pixels 
    ); 

; 나중에 해결할 것입니다. 문제는 색상이 완전히 맞지 않다는 것입니다.

P. 당신이 텍스쳐 쿼드를 사용해야한다고 알고 있습니다.

답변

1

PNG는 압축 형식입니다. ilGetData처럼 압축 된 데이터에 대한 포인터를 반환합니다. 디코딩 된 이미지를 얻으려면 ilCopyPixels를 사용하십시오.

+0

감사합니다. 색상은 정확하지만 모든 항목이 RGBA인지 확인 했더라도 알파를 제대로 표시하지 못하는 것 같습니다. 또한 for 루프로 표시 할 수 있도록 데이터를 변환하는 방법이 있습니까? – user2345349

+0

Nevermind, 일하고있어, 그냥 몇 가지 세부 사항을 간과, 고마워 :) – user2345349

관련 문제