DevIL PNG格式,用于在OpenGL中显示

时间:2013-06-21 11:57:56

标签: opengl devil gldrawpixels

我在OpenGL中做了一些像素工作,并且一切顺利,直到我不得不加载PNG。我找到了一个名为'DevIL'的东西,并按照我发现的一个例子。它确实展示了一些东西,但它只是一种随机的彩虹。就我所知,我做得对;我将数据输出到文本文件以进行检查。我尝试了一些其他库,但构建它们有点超出我的能力。这是我的设置:

((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.S。我知道你应该使用纹理四边形

1 个答案:

答案 0 :(得分:1)

PNG是一种压缩格式。似乎ilGetData返回指向压缩数据的指针。要获得解码图像,请使用ilCopyPixels。