opengl实现简单的图片读取
#include<gl/glut.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include <cstdio>
static GLint ImageHeight;
static GLint ImageWidth;
static GLint PixelLength;
static GLubyte* pixelData;
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glDrawPixels(ImageWidth, ImageHeight, GL_BGR_EXT, GL_UNSIGNED_BYTE, pixelData);
glutSwapBuffers();
glFlush();
}
int main(int argc, char** argv)
{
FILE* pFile = fopen("Penguins.bmp","r+b");
if (pFile == 0) exit(0);
fseek(pFile, 0x0012, SEEK_SET);
fread(&ImageWidth,sizeof(ImageWidth)/3,3,pFile);
fseek(pFile,0x0016,SEEK_SET);
fread(&ImageHeight, sizeof(ImageHeight) / 3, 3,pFile);
PixelLength = ImageWidth * 3;
while (PixelLength % 4 != 0)
++PixelLength;
PixelLength *= ImageHeight;
PixelLength += 54;
pixelData=(GLubyte*)malloc(PixelLength);
if (pixelData == 0) exit(0);
fseek(pFile, 54, SEEK_SET);
fread(pixelData, PixelLength, 1, pFile);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE);
glutInitWindowSize(300, 300);
glutInitWindowPosition(200, 200);
glutCreateWindow("256色图片读取");
glutDisplayFunc(display);
glutMainLoop();
return 1;
}