一、基础复习
OpenGL支持两种类型的位图对象,一种是单色的位图掩码,主要用来创建字符。一种是彩色位图,它可以是一个图标或一幅真彩色图像。
OpenGL所支持的图像数据格式及其含义
常量 含义
GL_COLOR_INDEX 单个颜色索引
GL_RGB 依次为rgb分量
GL_RGBA 依次为rgba分量
GL_RED 单个r分量
GL_GREEN 单个g分量
GL_BLUE 单个b分量
GL_ALPHA 单个alpha分量
GL_LUMINANCE_ALPHA 亮度及分量
GL_LUMINANCE 单个亮度分量
GL_STENCIL_INDEX 单个模板索引
GL_DEPTH_COMPONENT 单个深度分量
glReadPixels()函数读取图象
void glReadPixels(Glint x,Glint y,
GLsizei width,GLsiei height ,
GLenum format,
GLenum type,
GLvoid *pixels);
glDrawPixels()将图像显示在屏幕上
void glDrawPixels(GLsizei width,GLsizei height,
GLenum format,
GLenum type,
const GLvoid *pixels);
glCopyPixels()象素拷贝函数
void glCopyPixels(GLint x,GLint y,// 左下角点
GLsizesi width,GLsizei height,
GLenum type);
若type为GL_COLOR,则像素格式为的GL_RGB或GL_COLOR_INDEX;
若type为GL_DEPTH, 像素格式为GL_DEPTH_COMPONENT;
若type为GL_STENCIL, 像素格式为GL_STENCIL_INDEX
glRasterPos()设置当前光栅位置
void glRasterPos(GLfloat x, GLfloat y,GLfloat z);
glPixelZoom()缩放图像
void glPixelZoom(GLfloat xfactor,GLfloat yfactor)
参数xfactor,yfactor 分别表示图像沿x,y轴缩放的因子。
glBitmap()单色位图显示在屏幕上
void glBitmap(GLsizei width,GLsizei height, //参数位图的宽和高
GLfloat xorig,GLfloat yorig, //位图原点的坐标
GLfloat xmove,GlGLflaot ymove, //位图基于当前光栅位置的偏移量
const GLubyte *bitmap); //存储位图的地址。
二、显示windows位图
通过基础知识的学习知道,在屏幕上显示位图主要有两种方法:glBitmap(),glDrawPixels()前者是显示单色位图,比如字符等,如果要显示windows位图必须要用glDrawPixels。而且图象行象素必须要字节对齐,否则图象会变形。
AUX_RGBImageRec *m_bmp;
m_bmp=new AUX_RGBImageRec;
m_bmp=auxDIBImageLoadA("pic.bmp");
glDrawPixels(m_bmp->sizeX,m_bmp->sizeY,GL_RGB,GL_UNSIGNED_BYTE,m_bmp->data);