libpng的png图片读取 不能读取png图片 nib
#pragma comment(lib, "glew32.lib")
int window_width=600;int window_height=600;
int pic_width;int pic_height;int size;
GLuint texName;unsigned char *content;
void init(){ glewInit();
glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glGenTextures(1,&texName); glBindTexture(GL_TEXTURE_2D, texName);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, pic_width, pic_height, 0,GL_RGBA, GL_UNSIGNED_BYTE, content);}
void display_func(){ glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0, 1.0f,0.0, 1.0f);
glViewport(0, 0,window_width, window_height); glClearColor(1.0f, 1.0f,1.0f, 1.0); glClear(GL_COLOR_BUFFER_BIT);
glEnable(GL_TEXTURE_2D); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glBindTexture(GL_TEXTURE_2D, texName);
glBegin(GL_QUADS); glTexCoord2f(0.0f, 1.0f); glVertex2f(0.0f,0.0f); glTexCoord2f(1.0f, 1.0f); glVertex2f(1.0f,0.0f); glTexCoord2f(1.0f, 0.0f); glVertex2f(1.0f,1.0f); glTexCoord2f(0.0f, 0.0f); glVertex2f(0.0f,1.0f); glEnd(); glutSwapBuffers();}
void reshape_func(int width, int height){ window_width=width; window_height=height; glutReshapeWindow(window_width, window_height);}
int main(int argc, char **argv){ FILE* file =fopen("wiki.png", "rb"); png_structp png_ptr =png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0); png_infop info_ptr =png_create_info_struct(png_ptr); setjmp(png_jmpbuf(png_ptr)); png_init_io(png_ptr,file); png_read_png(png_ptr,info_ptr, PNG_TRANSFORM_EXPAND, 0);
pic_width =png_get_image_width(png_ptr, info_ptr); pic_height =png_get_image_height(png_ptr, info_ptr); int color_type =png_get_color_type(png_ptr, info_ptr);
size = pic_height *pic_width * 4; int pos = 0; content=(unsigned char*)malloc(sizeof(unsigned char)*size);
png_bytep* row_pointers= png_get_rows(png_ptr, info_ptr);
for(int i=0; i { for(int j=0; j { content[i*pic_width*4+j*4+0]=row_pointers[i][j*4+0]; content[i*pic_width*4+j*4+1]=row_pointers[i][j*4+1]; content[i*pic_width*4+j*4+2]=row_pointers[i][j*4+2]; content[i*pic_width*4+j*4+3]=row_pointers[i][j*4+3]; } }
png_destroy_read_struct(&png_ptr,&info_ptr, 0); fclose(file);
window_width=pic_width; window_height=pic_height;
glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); glutInitWindowSize(window_width, window_height); glutCreateWindow("Picture");
init();
glutDisplayFunc(display_func); glutReshapeFunc(reshape_func);
glutMainLoop();
free(content);
return 0;}
显示结果
更多阅读
如何解决电脑可以拨号上网路由器不能上网的问题 win10拨号不能上网
如何解决电脑可以拨号上网路由器不能上网的问题——简介一直用的电脑有线光纤拨号上网。电脑上网一直没有问题。突然为了手机能够有wifi,特地买了个路由器创建无线局域网。但是麻烦来了,电脑宽带连接没有问题畅通的上网,路由设置完全没
张洁的《爱是不能忘记的》全文 爱是不能忘记的赏析
我和我们这个共和国同年。卅岁,对于一个共和国来说,那是太年轻了。而对一个姑娘来说,却有嫁不出去的危险。 不过,眼下我倒有一个正儿八经的求婚者。看见过希腊伟大的雕塑家米伦所创造的“掷铁饼者”那座雕塑么?乔林的身躯几乎就是那尊
excel不能自动求和的方法 excel中不能自动求和
2011-10-07 13:49:54 来源:IT部落窝 浏览:3702次内容提要:本文汇总了excel不能自动求和的6大原因,并同时针对不同原因给出不同的解决方法来处理excel不能自动求和。-excel不能自动求和的原因,归结一下,有下面几个,并同时给出相应的
牛肉不能和什么一起吃 吃牛肉的禁忌 土豆牛肉不能一起吃
牛肉不能和什么一起吃 吃牛肉的禁忌食品中国>> 主页 > 食品科普 > 健康频道时间:2013-11-01 05:55 来源:四季养生网 责编:食品中国导语:吃牛肉的禁忌。牛肉
libpng的png图片读取 不能读取png图片 nib
该程序只支持RGBA方案的PNG图片不支持PNG其他方案特性#include <stdio.h>#include <stdlib.h>#include <GLglew.h>#include <GLglut.h>#include "png.h"#pragma comment(lib, "glew32.lib")int window_width=600;int