使用Opengl显示windows位图

Posted on 2007-08-03 22:58  阿·凡  阅读(3855)  评论(0编辑  收藏  举报

一、基础复习

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);    

Copyright © 2024 阿·凡
Powered by .NET 9.0 on Kubernetes