参考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 64
GLubyte 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);

效果

转载于:https://www.cnblogs.com/Clingingboy/archive/2010/10/28/1863575.html

OpenGL学习笔记(14)像素操作相关推荐

  1. Canvas学习笔记及像素操作——实现马赛克

    绘制文本 window.onload = function () {//获取画布var canvas = document.querySelector('#test')//检查支持性if (canva ...

  2. Oracle 学习笔记 14 -- 集合操作和高级子查询

    Oracel提供了三种类型的集合操作:各自是并(UNION) .交(INTERSECT). 差(MINUS) UNION :将多个操作的结果合并到一个查询结果中,返回查询结果的并集,自己主动去掉反复的 ...

  3. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记--使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

  4. OpenCV 学习笔记-day13 像素值统计 统计计算最大最小值,平均值和标准差 (minMaxLoc()和meanStdDev()函数的使用)

    OpenCV 学习笔记 day13 像素值统计 函数 minMaxLoc(); 最大值最小值统计 meanStdDev();平均值和标准方差统计 代码 day13 像素值统计 函数 minMaxLoc ...

  5. OPENGL学习笔记之八

    OPENGL学习笔记之八 2017/11/15 阅读材料来自learnopengl.com以及learnopengl-cn.github.io 我们通常会自己设定一个坐标的范围,之后再在顶点着色器中将 ...

  6. OpenGL 学习笔记 II:初始化 API,第一个黑窗,游戏循环和帧率,OpenGL 默认垂直同步,glfw 帧率

    前情提要: 上一篇: OpenGL 学习笔记 I:OpenGL glew glad glfw glut 的关系,OpenGL 状态机,现代操作系统的窗口管理器,OpenGL 窗口和上下文 OpenGL ...

  7. 【转】 C#学习笔记14——Trace、Debug和TraceSource的使用以及日志设计

    [转] C#学习笔记14--Trace.Debug和TraceSource的使用以及日志设计 Trace.Debug和TraceSource的使用以及日志设计   .NET Framework 命名空 ...

  8. OpenGL学习笔记:矩阵变换

    文章目录 缩放 glm矩阵表示 glm缩放矩阵实现 位移 齐次坐标 glm位移矩阵实现 旋转 沿x轴旋转 沿y轴旋转 沿z轴旋转 沿任意轴旋转 glm旋转矩阵实现 矩阵的组合 glm矩阵组合使用 接上 ...

  9. 【OpenGL学习笔记⑧】——键盘控制正方体+光源【冯氏光照模型 光照原理 环境光照+漫反射光照+镜面光照】

    ✅ 重点参考了 LearnOpenGL CN 的内容,但大部分知识内容,小编已作改写,以方便读者理解. 文章目录 零. 成果预览图 一. 光照原理与投光物的配置 1.1 光照原理 1.2 投光物 二. ...

  10. 【OpenGL学习笔记⑥】——3D变换【旋转的正方体 实现地月系统 旋转+平移+缩放】

    ✈️ 文章目录 零. 成果预览图 一.3D立方体的顶点数组 二.纹理旋转 三.纹理缩放 四.画n个3D图形 五.轨道的数学公式 六.深度缓冲(Z 缓冲) 七.完整代码 八.参考附录: 神器的正方体 ☁ ...

最新文章

  1. IBM 消费者洞察报告,揭示 5G 娱乐时代的三大关键趋势
  2. 海量数据处理利器greenplum——初识
  3. 《C++ Primer第五版》第一章-------IO机制和注释缩进
  4. 使用word2vec训练中文词向量
  5. mysql动态top_MySQL 之 MyTop实时监控MySQL
  6. 推荐一个JavaScript触发器插件,可通过指定频次、指定时间内触发指定的处理函数...
  7. String类型相关的题
  8. Git error : bad signature 0x00000000 fatal: index file corrupt
  9. todolist从无到有
  10. 2001年图灵奖--奥尔-约翰·戴尔和克里斯登·奈加特简介
  11. 港交所2012交易日列表
  12. 电路中的电流采样IC选型
  13. Unity3d Camera FOV
  14. 几种常见存储备份系统
  15. 联想LJ2000打印机Mac OS/Linux驱动程序
  16. Stack Overflow 的 HTTPS 化:漫漫长路的终点
  17. 两级式光伏并网逆变器,DCDC环节采用boost电路,通过增量电导法实现光伏最大功率跟踪MPPT
  18. Qt调色板:QPalette说明和示例
  19. jsx中文是什么牌子口红_娇尚秀JSX方管口红怎么样 – 爱分享
  20. Python零基础速成班-第5讲-Python函数,Function和Lambda基础

热门文章

  1. Web API 路由 [二] Attribute Routing
  2. Hessian学习(springboot环境)
  3. Android利用canvas画画板
  4. visual studio 2008试用版的评估期29天后结束 解决办法
  5. §3—1 复式记账法 [第三章 复式记账 ]
  6. 2019年3月1日-日记
  7. CLR via C#学习笔记-第十章-无参属性
  8. PYTHON运维开发面试题整理
  9. haoi2018奇怪的背包题解
  10. WCF引用方式之IIS方式寄宿服务