参考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. ACM-ICPC如何起步
  2. 用python做加法_Python不用加减乘除做加法
  3. Fiori Elements - sap.ui.core.util.XMLPreprocessor2 - insert fragment
  4. asp.net控件开发基础(20)
  5. JMS学习九 ActiveMQ的消息持久化到Mysql数据库
  6. 测试项目开源_测验您对开源的承诺
  7. 梅西精彩过人绝技,太帅了!
  8. laravel-admin 使用记录(1) - 安装
  9. dw2019连接mysql数据库_Python3连接MySQL数据库
  10. grafana默认用户名密码_Grafana安装与配置
  11. python基础-大杂烩
  12. 联想 G50-70 关闭无线功能,如何重新启动??
  13. 2019-11-29奈奎斯特和香农定理
  14. 浏览器提示网站证书过期或还未生效
  15. 2021-06-08实验室如何正确选择和确认检测方法?
  16. java背单词软件_背单词的java小软件
  17. XSS Challenges xss-quiz.int21h.jp
  18. 19年6月英语六级阅读单词
  19. 为Eclipse安装lombok插件
  20. 详解ISO 13400文档(DoIP协议)-2

热门文章

  1. BZOJ1283 序列(费用流)
  2. 对比:重建索引与更新统计
  3. 温度传感器利用寄存器计算出温度值
  4. [转]加载纹理与使用glGenTextures时应注意的一点(解决吃内存)
  5. ROS学习(六)—— 理解ROS节点
  6. Nodejs中Mongodb的基本使用
  7. 使用XLinq.XElement读取带Namespace(命名空间)的XML
  8. 操作系统学习(十三) 、中断和异常
  9. 从照片网站pexels批量爬取照片
  10. Sequence Diagram时序图 - 应该是最简洁有力的业务了