glutで画像を表示したぞ。
ppm形式(raw)の画像を用意して、それをglutで表示する。
座標とかはやってない。
高さx幅xRGBのサイズのarrayを用意して、画像を読み込み、glDrawPixelsを実行するだけ。
コンパイル方法。(オプションが多いね。)
gcc a.c -lglut -lGL
コード
#include<GL/glut.h> #include<stdio.h> #include<stdlib.h> unsigned char image[400][640][3]; int ppm_read(char *filename, unsigned char *pimage){ FILE *fp; if((fp=fopen(filename,"rb"))==NULL){ printf("ERROR:%s\n",filename); exit(-1); } fscanf(fp,"P6\n640 480\n255\n"); fread(pimage,sizeof(char),640*400*3,fp); fclose(fp); return 0; } void disp(){ glClear(GL_COLOR_BUFFER_BIT); glDrawPixels(640, 400, GL_RGB, GL_UNSIGNED_BYTE, &image[0][0][0]); glFlush(); } void resize(){ } void keyboard(unsigned char key,int x,int y){ } void mouse(int button,int state,int x,int y){ } void motion(int x,int y){ } void init(){ glClearColor(0.0, 0.0, 1.0, 1.0); ppm_read("a.ppm",&image[0][0][0]); } int main(int argc,char *argv[]){ glutInit(&argc,argv); glutCreateWindow("TITLE NAME"); glutInitDisplayMode(GLUT_RGBA); glutDisplayFunc(disp); glutKeyboardFunc(keyboard); glutReshapeFunc(resize); glutMouseFunc(mouse); glutMotionFunc(motion); init(); glutMainLoop(); return 0; }