#include<gl/glut.h>
#define FileName "bliss.bmp"
static GLint imagewidth;
static GLint imageheight;
static GLint pixellength;
static GLubyte* pixeldata;
#include<stdio.h>
#include<stdlib.h>
void display(void)
{
//glClear(GL_COLOR_BUFFER_BIT);
//繪制像素
glDrawPixels(imagewidth,imageheight,GL_BGR_EXT,GL_UNSIGNED_BYTE,pixeldata);
//---------------------------------
glFlush();
glutSwapBuffers();
}
int main(int argc,char* argv[])
{
//打開文件
FILE* pfile=fopen("bliss.bmp","rb");
if(pfile == 0) exit(0);
//讀取圖像大小
fseek(pfile,0x0012,SEEK_SET);
fread(&imagewidth,sizeof(imagewidth),1,pfile);
fread(&imageheight,sizeof(imageheight),1,pfile);
//計算像素數據長度
pixellength=imagewidth*3;
while(pixellength%4 != 0)pixellength++;
pixellength *= imageheight;
//讀取像素數據
pixeldata = (GLubyte*)malloc(pixellength);
if(pixeldata == 0) exit(0);
fseek(pfile,54,SEEK_SET);
fread(pixeldata,pixellength,1,pfile);
//關閉文件
fclose(pfile);
//初始化glut運行
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(imagewidth,imageheight);
glutCreateWindow(FileName);
glutDisplayFunc(&display);
glutMainLoop();
//-------------------------------------
free(pixeldata);
return 0;
}
原文鏈接:opengl入門例題(讀取bmp圖片,並顯示)
鏈接2:opengl下png圖片的加載與顯示
鏈接3:OpenGL加載與顯示Targa位圖文件