包含标签 opengl 的文章

在手机游戏开发中如何选择图像素材格式?

在手机游戏开发中如何选择图像素材格式?

How to choose the picture texture format in the game develop?

2014-08-01更新:增加ETC1格式


这是我在知乎上的一个回答,这里是原文

回答的前提是:使用OpenGL来渲染。

分几个点来回答。

1. RGBA4444真的比RGBA8888占用的RAM要少

其实这里说的RAM,是指的显存而非内存。OpenGL支持以这几种形式来使用纹理资源(via http://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexImage2D.xml):

  • GL_UNSIGNED_BYTE(RGBA8888或RGBA888)
  • GL_UNSIGNED_SHORT_5_6_5
  • GL_UNSIGNED_SHORT_4_4_4_4
  • GL_UNSIGNED_SHORT_5_5_5_1

在程序将图片载入系统内存后,会根据你选择的形式(RGBA8888/RGB565 etc.)对其做一些处理(怎么处理后面说),然后就将这些纹理上传到显卡的显存,之后会把这些图片占用的内存删除掉。

……

阅读全文

在cocos2d-x中实现橡皮擦功能

在cocos2d-x中实现橡皮擦功能

How to make an eraser in cocos2d-x?

cocos2d-x 是使用 OpenGL ES 来渲染的,实现橡皮擦,需要一点点 OpenGL 知识。

/* 下面是可以跳过不看的废话。

是的,不需要 OpenGL ,我们也能使用 cocos2d-x 制作出游戏。至少我接触过的几个团队都是这么干的,有的团队中甚至无人了解 C++。

但是,在我学习 cocos2d-x 的这几个月里,我发现不学习 OpenGL ES 对我来说是无法想象的。在看源码的时候,你不能碰到 OpenGL 就无视它们,对程序员来说这是罪过。

这不难,Trust me.

废话结束 */

依赖

本文基于 cocos2d-x 2.2.2

效果截图

eraser

原理

先将要被擦除的像素渲染到 FrameBuffer 中,然后使用 Alpha 为 0 的像素块与已有像素做混合,将已有的像素替换成 Alpha 为 0 的像素即可完成擦除。

……

阅读全文

在 cocos2d-x 中使用多组shader实现多重滤镜

在 cocos2d-x 中使用多组shader实现多重滤镜

2015-05-06 更新:加入 cocos2d-x-filters 项目介绍,已支持 cocos2d-x 3.x。

本文基于 cocos2d-x v2.2。

在 cocos2d-x 中使用 shader 实现了滤镜之后,我发现实现多重滤镜是个问题。

多重滤镜是什么

举例说,我希望先对一个纹理执行一次 blur 滤镜,然后再执行一次 glow 滤镜。这样纹理既有模糊效果也有发光效果。

Fireworks 和 Flash 中的滤镜,都允许这样进行叠加。在Actionscript 3中,Sprite 的 filters 属性本来就是一个滤镜数组。这说明至少在API的设计上,Actionscript 3 鼓励多重滤镜的使用。

多重滤镜的问题

而在 cocos2d-x 中,则不是这样。

cocos2d-x 中的 shader 支持位于几个类中,它们是:

……

阅读全文

最近文章

分类

标签

3d aac actionscript adobe adobebug adsl air amd android ane ant antivirus apache api arch as2 as3 asdoc asp aspnet authorware bash bbpress benq bitandbyte bitmapdata bluetooth book box2d browser byewindows c camera capture centos character-set chinajoy choice chongrenxindu chrome class cms cocos2d-x codec collection color component conference cookbook coolplayer cpp css cygwin datagrid debug degrafa design-pattern develop devops director display-objects docker dragonbones ds eclipse editgrid egret embed emotion encrypt engine english eval excel exif fcs ffmpeg film filter firebase firefox flash flash-remoting flashbuilder flashdevelop flashplayer flask flex flexbuilder flv fms font framework freeware fromto fte ftp fxg game gamenote gcc general generator gin git gmail godaddy golang google gprs graphic graphviz gtd gui h264 hardware hexo host house howto hp html html5 http hugo i18n ie image ime ios iot jacky-cheung java javascript job joomla journey jquery json layout lecture library life lighttpd linux lisp list live loader lua mac macos mambo management markup master math mencoder mingw mjp mobile mobile-game-framework module monitor mvc mxmlc mysql ndk netconnection netstream network nginx node nodejs note objective-c office okr opengl openresty opensource ops osmf osx pay pda performance photoshop php physics player plist plugin portable posix ppc protocol proxy python qiqi qt quick2cocoslua reading readingnote reflection regexp ria robotlegs router rtmp ruby sagibookclub sagiteam sandbox sdk server sharedobject shell signals simulator skeletalanimation skin sleepmode smartphone socket software spark spreadsheet spritesheet sql sqlalchemy ssh staticize study svn swfobject terminal testing thread tipsandtricks tlf trace training translate translation tween typescript ubuntu ugly ui unity usingrobotlegs2 utf-8 uwsgi validator vcard vector video vim virtualization vr web weboffice websocket weekread wifi windows wine word wordpress wuhan xbeta xiaomi xinnet xml youshootfirst zhihu

其它