经过几天的研究加测试终于把libpng给用在了opengl中.
话说windows下读取图片有WinAPI可以用,但是这个不能跨平台,libpng当然是跨平台的首选,但是要知道它怎么用还是要研究一番,当然最终还是被我写出来了.
我把libpng的各种调用封装到了函数内,并定义了一个结构体:
typedef struct png_data_t {
unsigned int width;
unsigned int height;
char* data;
} *png_datap;
还有一些状态宏:
#define PNG_READ_SUCCESS 0
#define PNG_ERROR_NO_FILE 1
#define PNG_ERROR_NOT_PNG 2
#define PNG_ERROR_CREATE_PNG_STRUCT 3
#define PNG_ERROR_CREATE_INFO_STRUCT 4
#define PNG_ERROR_JMP 5
接口为:
int png_read(const char* filename,png_datap data);
实现:
#include <setjmp.h>
#define PNG_READ_HEADER 4
int read_chunk_callback(png_structp ptr,png_unknown_chunkp chunk)
{
return 1;
}
void read_row_callback(png_structp ptr,png_uint_32 row,int pass)
{
}
int png