自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

scott.cgi

键盘敲击,字符闪耀,迭代疯狂,编译流畅——持续迭代,无情测试——我把逻辑和诗歌灌入电光火石般奔腾流淌的指令集

  • 博客(24)
  • 收藏
  • 关注

原创 Android OpenGL ES2 一切从绘制纹理开始

android openGL ES2 一切从绘制纹理开始

2014-08-09 16:49:27 4420

原创 libgdx粒子工具使用介绍(particle editor)

最近一段时间研究了libgdx的例子编辑器,个人觉得这个编辑器还是很不错的java写的跨平台小巧灵活。仔细研究了libgdx的android代码实现,才完全搞清楚这个编辑器到底怎么用的。还是比较强大的。并且我自己重新实现了一遍。libgdx的代码写没有cocos2dx的好,libgdx的java代码写的只能说一般。这里是libgdx自己的官方说明 http://www.badlogicgames.

2014-08-09 16:41:41 2096

原创 矩形旋转碰撞,OBB方向包围盒算法实现

矩形旋转碰撞,OBB方向包围盒算法实现

2014-08-09 16:31:13 10839 3

原创 OpenGL 顶点,坐标系,纹理坐标

了解坐标系是绘制图形的基础。在使用openGL的场景中,有世界坐标,局部坐标,纹理坐标,和屏幕坐标几种。openGL 坐标系:

2014-08-09 11:12:08 12304 2

原创 C 语言复杂声明的理解

C语言常常因为声明的语法问题而受到人们的批评,特别是涉及到函数指针的语法。C语言的语法力图使声明和使用相一致。对于简单的情况,C语言的做法是很有效的,但是,如果情况比较复杂,则容易让人混淆,原因在于,C语言的声明不能从左至右阅读,而且使用了太多的圆括号.但是找到正确的规则去理解, 无论多复杂都可以搞清楚.原则如下:1. 从里到外2.按照优先级顺序,优先级顺序相同时候,从右边

2014-08-09 10:12:39 829

原创 C 语言计算精确时间

C 语言标准库包含了时间相关的API。但是所有的精确值都是秒为单位的。那如何精确到毫米或是更精准的计算时间差呢。有如下定义:#define CLOCKS_PER_SEC 1000000 extern clock_t clock(void);clock_t() 返回的是CPU的时钟数,而常量CLOCKS_PER_SEC表示一秒钟有多少个始终数。那么

2014-08-09 10:08:42 1241

原创 NDK在windows下编译libpng

首先要去下载libng的源码: http://www.libpng.org/pub/png/libpng.html 最新版本是 1.5.13, 下载后解压到目录。NDK打包需要固定的目录结构的,很简单。我的版本解压后是lpng1513,在这个目录下面建立文件夹jni,以后把其他的书有文件都剪切到jni下面。并且在jni下面创建Android.mk文件。内容如下:LOCAL_PA

2014-08-09 10:02:12 1491

原创 NDK编译cpp和c文件

NDK会自动编译LOCAL_SRC_FILES目录指定的cpp或c文件。如果是cpp会自动用c++编译器,如果是c那么自动用c编译器。mk文件有一个LOCAL_CPP_EXTENSION属性,设置的是用c++编译的文件后缀。下面是官方描述:Note that the default extension for C++ source files is '.cpp'. It isho

2014-08-09 10:01:38 4424

原创 NDK编译错误Unknown Application ABI,Unable to detect application ABI’s

出现这个错误,有2个可能:第一个就是,eclipse的NDK目录没有指向,NDK的文件夹。第二就是,NDK_MODULE_PATH目录没有正确设置。首先这是一个环境变量,NDK编译的时候去搜索这个值。* Due to GNU Make limitations, NDK_MODULE_PATH must not contain any space. The NDK wi

2014-08-09 09:46:04 1606

原创 在NDK中使用libpng读取pixel数据

libpng的详细使用方法在于它的官方文档libpng-manual.txt,下载文件夹下含有。使用openGL生成纹理的时候需要图片的像素数据。使用libpng可以帮助我们解析PNG标准格式的结构,获得pixel数据。在NDK中读取assets文件夹内容的方法在头文件#include 中定义。直接看代码:/** * Read png pixel data from file,

2014-08-08 17:27:16 2088

原创 realloc 使用和思考

realloc来自c语言的标准库,函数签名如下:extern void* realloc(void *, size_t);这个函数用于重新分配指针地址对应的内存空间。第一个参数,需要重新分配内存空间的指针。第二个,参数重新分配的内存空间大小。特别之处在于,realloc在增加内存的情况下,就是size_t大于原有指针内存空间大小,首先会试图去追加地址空间。比如:

2014-08-08 16:56:25 1162

原创 Eclipse NDK debug native code 失败的问题解决

NDK debug native code 官方说明在这里 http://tools.android.com/recent/usingthendkplugin,官方插件有一个bug没有修复。就是cpp文件可以正确的在eclipse中检索到头文件的定义,c文件就不可以正确的引用头文件。这个问题在eclipse4.2,CDT8.1中存在。以前的版本评论说eclipse3.8版本没有。还有一个bug在A

2014-08-08 16:41:21 956

原创 C 语言泛型数组实现

typedef struct { // element byte size int stride; // element number int length; // memory data void* data;} Array;data是个指针,需要malloc申请动态内存。对,这里面放的是数组的数据。好的,那么现在数据有了,那

2014-08-08 15:39:40 1716

原创 libpng读取PNG8和PNG24的区别

PNG8和PNG24最大的不同就在于透明度,PNG8只有一位存储透明度,PNG24有8位。这也就影响了PNG数据块的数据格式大小。在libpng中提供了检测设置的方法。// expand any tRNS chunk data into a full alpha channelif (png_get_valid(pngPtr, infoPtr, PNG_INFO_tRNS)) { p

2014-08-08 11:44:38 3177

原创 OpenGL 深度测试使用

第一,什么是openGL的深度 所谓深度,就是在openGL坐标系中,像素点Z坐标距离摄像机的距离。摄像机可能放在坐标系的任何位置,那么,就不能简单的说Z数值越大或越小,就是越靠近摄像机。openGL 会专门用一个缓冲区来存放这个Z坐标数值。就叫深度缓冲区。第二,深度缓冲区的作用 一般情况下,我们绘制图片,后绘制的会覆盖前面的。所以,一般我们绘制顺序是先后面在前面。

2014-08-08 11:15:07 1396

原创 C 语言中的达夫设备 Duff’s Device

在495个必须知道的C语言问题这本书中,提到了一个达夫设备另类的算法设计技巧。如下:register n = (count + 7) / 8; /* count > 0 assumed */switch (count % 8){case 0: do { *to = *from++;case 7: *to = *from++;case 6: *to = *from++;case 5:

2014-08-08 10:56:18 2716

原创 NativeActivity 使用那个 Tracer for OpenGL ES

Tracer for OpenGL ES 是 android 官方推出的openGL性能分析器。官方文档: http://developer.android.com/tools/help/gltracer.html第一,这个分析器只能在真机上运行。第二,真机必须4.1以上,即是API level 16 以上第三,ADT 需要 21 版本以上麻烦的是,这个分析器需要填写,

2014-08-08 10:36:03 1648 3

原创 NDK 获得精确时间模拟System.nanoTime()

NDK 提供了POSIX:

2014-08-08 10:03:11 3510

原创 使用VBO对glVertexAttribPointer的影响

使用VBO对glVertexAttribPointer的影响

2014-08-08 09:55:35 8278 2

原创 NDK读写assert资源文件

使用NDK访问android的文件系统,大部分方式是使用jni回调java的代码以后来操作。可是如果是使用了NativeActivity应该怎么办,按照官方的例子,是没有自己写的一行java代码的又如何去jni,如果用了jni也破坏了NativeActivity的意义。阅读NDK提供的头文件会发现头文件:

2014-08-08 09:55:28 1813

原创 OpenGL点精灵PointSprite详解: 纹理映射,旋转,缩放,移动

openGL点精灵PointSprite详解: 纹理映射,旋转,缩放,移动

2014-08-08 09:44:35 8868 3

原创 Eclipse ndk support无法正确索引c文件的解决办法

eclipse ndk 添加了native support之后,就可以在android工程中调试使用native code, 甚至可以在eclipse cdt中debug natvie code。官方的配置方法:http://tools.android.com/recent/usingthendkplugin但NDK的插件有一个bug,就是使得CDT无法识别android gcc tool

2014-08-08 09:40:43 1955

原创 贝塞尔三次方曲线优化, 24次乘法转换成6次加法

贝塞尔三次方的公式,涉及到4个点。如p1,p2,p3,p4,其中p1是起点,p4是重点, p2,和p3是控制点。公式如下:

2014-08-08 09:37:43 1909

原创 C语言,模拟命名空间的方法

C语言中没有单独的命名空间的定义. 所以, 通常会把函数,结构体的名字命名的很长, 加上前缀, 依次来防止命名冲突.  通过一些探索,我发现通过C语言现有的语法, 是可以在一定层面上来模拟命名空间定义的.一目了然看代码:

2014-08-08 09:28:32 2211

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除