OpenGL学习笔记(14)像素操作
来源:互联网 发布:大数据介绍 编辑:程序博客网 时间:2024/05/21 10:24
参考http://www.cnblogs.com/yutianfcl/articles/842414.html
图像与位图不同的是,图像的每个存储可以存储RGBA颜色
绘制像素
绘制一个矩形像素数据
void glDrawPixels(GLsizei width, GLsizei height, GLenum format,
GLenum type, const GLvoid *pixels);
如下示例
/* Create checkerboard image */#define checkImageWidth 64#define checkImageHeight 64GLubyte checkImage[checkImageHeight][checkImageWidth][3];static GLdouble zoomFactor = 1.0;static GLint height;void makeCheckImage(void){ int i, j, c; for (i = 0; i < checkImageHeight; i++) { for (j = 0; j < checkImageWidth; j++) { c = ((((i&0x8)==0)^((j&0x8))==0))*255; checkImage[i][j][0] = (GLubyte) c; checkImage[i][j][1] = (GLubyte) c; checkImage[i][j][2] = (GLubyte) c; } }}void init(void){ glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel(GL_FLAT); makeCheckImage(); glPixelStorei(GL_UNPACK_ALIGNMENT, 1);}void display(void){ glClear(GL_COLOR_BUFFER_BIT); glRasterPos2i(0, 0); glDrawPixels(checkImageWidth, checkImageHeight, GL_RGB, GL_UNSIGNED_BYTE, checkImage); glFlush();}
首先makeCheckImage函数创建了一个64x64的一个RGB颜色数组,非黑即白
format与type参数要记得与数组相对应,否则可能会绘制出失帧的图片,效果如下
缩放图片
使用glPixelZoom函数可以对图片进行缩放,比如放大3倍glPixelZoom (3, 3);效果如下
复制图片
通过glCopyPixels函数进行复制图片,如下代码
glRasterPos2i(0, 0);glDrawPixels(checkImageWidth, checkImageHeight, GL_RGB, GL_UNSIGNED_BYTE, checkImage);glRasterPos2i (100, 100);glCopyPixels (0, 0, checkImageWidth, checkImageHeight, GL_COLOR);
将新图像重新定位到100,100然后复制0,0坐标指定高度宽度的矩形
效果如下
其行为类似于先glReadPixels然后glDrawPixels
读取图像数据
可以使用glReadPixels函数读取指定位置的图像数据,如下代码
glRasterPos2i(100, 100);glReadPixels (0, 0, 32, 32, GL_RGB, GL_UNSIGNED_BYTE,checkImage1);glDrawPixels(32, 32, GL_RGB, GL_UNSIGNED_BYTE, checkImage1);
效果
0 0
- OpenGL学习笔记(14)像素操作
- OpenGL学习笔记(14)像素操作
- OpenGL学习笔记:像素
- OpenGL入门学习[十]OpenGL的像素操作、BMP文件
- OpenGL中的像素操作
- OpenGL像素操作
- OpenGL: 图像像素操作
- OpenGL像素操作
- opengl像素操作
- OpenGL超级宝典笔记——操作像素
- Android学习笔记进阶14之像素操作
- android学习笔记之图像像素操作
- 【OpenCV学习笔记】一.操作像素
- Opencv学习笔记之二:操作像素
- 【OpenCV学习笔记 005】 操作像素
- 【OpenCV学习笔记】三、操作像素
- OpenCV学习笔记二:操作像素
- opencv学习笔记 二 操作像素
- OpenGL学习笔记(9)颜色混合
- OpenGL学习笔记(10)抗锯齿
- Surface,SurfaceView,SurfaceHolder及SurfaceHolder.Callback的关系
- OpenGL学习笔记(12)基本光照
- OpenGL学习笔记(13)位图与文字
- OpenGL学习笔记(14)像素操作
- OpenGL读取3DS文件示例(C++语言编写
- 制作一个基于MFC对话框的OpenGL类
- 制作一个基于MFC对话框的OpenGL类
- Mysql千万级别数据优化方案
- MFC对话框的OpenGL类实例之二
- 基于MFC对话框的OpenGL三维图形开发
- GLUT 工具箱函数
- C#Winform设置时不调用