美文网首页
Cocos2d-x之获取图像像素值

Cocos2d-x之获取图像像素值

作者: Chenzhenyong | 来源:发表于2015-10-13 00:33 被阅读0次

制作游戏时,我们最常用的图片格式是png,因为png可以有透明的背景,这样在游戏显示图片是,透明的部分不会显示,只显示我们要的那部分。但是,透明的部分依然是图片的一部分,当你制作了一个非矩形的按钮,会有相当多的透明部分点击有效,那么如何做到点击透明部分无效呢?这就是本片文章要讲的:获取图像像素值。当然不仅仅在制作非矩形按钮时有用,在游戏中的很多涉及图片处理功能的地方也大有用途。

废话不多说,直接贴源码(Cocos2d-x 3.x版本):

HelloWorldScene.h文件

HelloWorldScene.cpp文件:


在GetRGBA函数中,调用了OpenGL的接口glReadPixels,它用于读取一些像素。当前可以简单理解为“把已经绘制好的像素(它可能已经被保存到显卡的显存中)读取到内存”。

glReadPixels函数总共有七个参数。前四个参数可以得到一个矩形,该矩形所包括的像素都会被读取出来。(第一、二个参数表示了矩形的左下角横、纵坐标,坐标以窗口最左下角为零,最右上角为最大值;第三、四个参数表示了矩形的宽度和高度)

第五个参数表示读取的内容,例如:GL_RGB就会依次读取像素的红、绿、蓝三种数据,GL_RGBA则会依次读取像素的红、绿、蓝、alpha四种数据,GL_RED则只读取像素的红色数据(类似的还有GL_GREEN,GL_BLUE,以及GL_ALPHA)。如果采用的不是RGBA颜色模式,而是采用颜色索引模式,则也可以使用GL_COLOR_INDEX来读取像素的颜色索引。目前仅需要知道这些,但实际上还可以读取其它内容,例如深度缓冲区的深度数据等。

第六个参数表示读取的内容保存到内存时所使用的格式,例如:GL_UNSIGNED_BYTE会把各种数据保存为GLubyte,GL_FLOAT会把各种数据保存为GLfloat等。

第七个参数表示一个指针,像素数据被读取后,将被保存到这个指针所表示的地址。注意,需要保证该地址有足够的可以使用的空间,以容纳读取的像素数据。例如一幅大小为256*256的图象,如果读取其RGB数据,且每一数据被保存为GLubyte,总大小就是:256*256*3 = 196608字节,即192千字节。如果是读取RGBA数据,则总大小就是256*256*4 = 262144字节,即256千字节。

注意:glReadPixels实际上是从缓冲区中读取数据,如果使用了双缓冲区,则默认是从正在显示的缓冲(即前缓冲)中读取,而绘制工作是默认绘制到后缓冲区的。因此,如果需要读取已经绘制好的像素,往往需要先交换前后缓冲。

相关文章

  • Core-L01-基本图像操作

    目标 获得像素值并修改; 获得图像的属性; 设置兴趣区(ROI); 分割合并图像。 获取并修改像素值 获取图像的属...

  • Cocos2d-x之获取图像像素值

    制作游戏时,我们最常用的图片格式是png,因为png可以有透明的背景,这样在游戏显示图片是,透明的部分不会显示,只...

  • 1.6 openCV-python 图像的基础操作

    图像的基础操作 获取像素值并修改 获取图像的属性 图像的ROI() 图像通道的拆分与合并

  • 2.1 Core - 图像基本操作

    目标 访问像素值并修改它们 访问图像属性 设置图像区域(ROI) 分割和合并图像 访问和修改像素值 您可以通过像素...

  • 图像处理

    第三章 图像处理 1.点操作 输出图像的像素值仅仅由输入图像的像素值决定。 1.1 像素变换 ...

  • 概述

    课程大纲: 1、图像的基本构成2、像素读写3、图像像素值统计信息4、像素值数学运算5、图像RGB彩色空间6、色彩空...

  • python数据分析与展示:图像的手绘效果

    一:图像的相关知识了解 二:图像的数组表示 三:图像的变换 读入图像后,获取像素RGB值,修改后保存为新的文件 四...

  • 第二章 图像的点运算

    图像的点运算主要用于改变一副图像的灰度分布范围。操作对象是单个像素值,输出像素值只与输入像素值有关。 灰度直方图 ...

  • OpenCV for Python 学习笔记(一)

    1.图像分类 rgb图像、灰度图像、二值图像 2.修改像素颜色 可以对多个像素处理 image[100:150,1...

  • Android高级UI-粒子爆炸效果

    背景知识 Bitmap中有关于获取位图像素的长宽和获取每一个像素点颜色值的方法 创建一个粒子的实体类对象 自定义一...

网友评论

      本文标题:Cocos2d-x之获取图像像素值

      本文链接:https://www.haomeiwen.com/subject/hjjocttx.html