cocos2dx android 环境报错 记录

原创 2015年07月09日 13:43:44

最近 在 给 公司 做 一些 shader 特效 的 demo,所以 移植到 android 环境下 看效果,在 移植 过程中 遇到 一些 错误,希望 作为 备忘录  以及 供其他 网友 参考。

1.cocos2d-x发生undefined reference to `XX'错误

解决方案:cocos2dx 增加 自定义类,在 android 环境 编译 ,需要 在 安卓 工程目录下的  /jni/Android.mk 里 添加 自定义类的 目录

参考网址:http://blog.csdn.net/kafeidev/article/details/9157895

还有据说 是 一劳永逸的 办法: http://blog.csdn.net/gf771115/article/details/34414449(没试过)


2.'nullptr' was not declared in this scope错误

解决方案:这是由于 ndk 不支持 c++ 11,所以 需要 将 其 改 为 Null


3.max is not declared in thisscope 

解决方案: 好像 没有 max 函数 ,#include <cmath> 然后 使用 fmax 就ok 了


4. shader 报错,在 vs 里 不报错,在 eclipse 里 编译 报错。。。

之前 错误代码:

<pre name="code" class="cpp">//varying vec4        v_fragmentColor;
varying vec2        v_texCoord;
uniform	float		u_radius;
uniform vec2 		u_touchPos;
uniform vec2		u_bgSize;
uniform sampler2D 	CC_Texture0;

int isInCircle(){
  vec2 pos = u_bgSize * v_texCoord;
  float dis = distance(pos,u_touchPos);
  if(dis >= u_radius || u_radius == 0)
	return 1;
  else
	return 0;		
}

void main()
{
    vec4 texColor   = texture2D(CC_Texture0, v_texCoord);
	int isIn 		= isInCircle();
	gl_FragColor    =  texColor * isIn;
}



主要 错误 原因 是 shader 是 强类型操作,不支持 不同类型  在一起 运算(包括 判等)

错误 主要 表现在 

1.  isIncircle 函数,返回 int 结果 却与 浮点类型的 texColor进行 操作

2.  isIncircle 函数内部,,  if(dis >= u_radius || u_radius == 0) 这一句,u_radius 是 一个 float 类型,结果 却 与  整形 值0 进行判等


下面 贴出 我修改过的代码:

//varying vec4        v_fragmentColor;
varying vec2        v_texCoord;
uniform	float		u_radius;
uniform vec2 		u_touchPos;
uniform vec2		u_bgSize;
uniform sampler2D 	CC_Texture0;

float isInCircle(){
  vec2 pos = u_bgSize * v_texCoord;
  float dis = distance(pos,u_touchPos);
  if(dis >= u_radius || u_radius == 0.0)
	return 1.0;
  else
	return 0.0;		
}

void main()
{
    vec4 texColor   = texture2D(CC_Texture0, v_texCoord);
	float isIn 		= isInCircle();
	gl_FragColor    =  texColor * isIn;
}

再次 鄙视一下 WINDOWS 平台,真 坑爹。。。。


5.cocos2dx 的 分辨率 模式 总是 让人 很蛋疼。。总会 出 各种 坐标 问题

这点 可能 是我 自己的 原因,对 cocos2dx 的 设计分辨率 了解 不清。

其实 这 跟 自己 不懂 coocs2dx 底层 原理 有 很大的 关系。

幸好 现在 公司 项目 要 用到openGl,正好 可以 恶补一下。

cocos2dx2.2.3 win下配置安卓环境

配置eclipse(此来自部分网络,自己配图并配置完成,以备电脑重装)   打开eclipse,点击window->perfernces->Android,在SDK Location中填上...
  • wtuetnsrmh
  • wtuetnsrmh
  • 2014年10月26日 00:16
  • 462

cocos2d-x2.2.3和android平台环境的搭建

最开始学习cocos2dx,大多数人可能是被复杂的环境配置过程搞死的,尤其是和Android平台搭建这一块,会把人搞疯,而且各个版本也会有不少的差异,我也是参考了很多才在自己的电脑里搭建好的,仅供参考...
  • eyu8874521
  • eyu8874521
  • 2014年04月13日 01:44
  • 11481

cocos2d-x3.4 环境配置及Android环境搭建

先下载所需要的软件:Cocos2d-x 3.4 VS2013 android-ndk-r9d(NDK) android-sdk-eclipse(SDK) apache-ant-...
  • u010075060
  • u010075060
  • 2015年03月31日 19:42
  • 1247

cocos2dx android 打包环境配置 安装包下载

安装包 所需要的安装包如下: Cocos2d-x 3.4,地址 http://cn.cocos2d-x.org/download#anchor2。其他安装包百度下载网盘链接:http://pan...
  • DAo_1990
  • DAo_1990
  • 2015年08月26日 19:46
  • 1715

cocos2dx搭建android环境记录

cocos2d-x 2.13 windows android 开发环境搭建 http://blog.justbilt.com/324/ 安装cygwin http://www.33lc.com/a...
  • zky1347888
  • zky1347888
  • 2013年10月12日 19:36
  • 1232

【Cocos2dx配置】Cocos2dx 3.14.1 配置Android环境简明教程

博主的机器是win10 64位机,为方便大家下载,这里包括cocos2dx3.14.1的所有相关文件:下载地址。配置Android环境 安装jdk,官网下载地址。配置环境变量:此电脑右键单机–>属性–...
  • hlljjy123
  • hlljjy123
  • 2017年03月16日 11:17
  • 1754

cocos2dx3.0在mac下Android的环境配置

项目进行到关键时刻,关卡大致排完,现在就来捣鼓一下cocos2dx在mac下得Android环境配置。windows下得安卓环境配置可能比较常见和熟络,mac下去打包apk可能就让人容易产生一种更难的...
  • zy19940906
  • zy19940906
  • 2014年12月23日 10:28
  • 11328

windows 搭建cocos android开发环境

Cocos2d-x 3.1.1 在Windows下搭建Android开发环境 本篇博客来给大家介绍如何在Windows下搭建Cocos2d-x Android开发环境,笔者前面写了几篇博客都...
  • braddoris
  • braddoris
  • 2014年09月29日 17:03
  • 6918

Cocos2dx发布Android包,配置开发环境(菜鸟级入门,一看就会)

1.下载adt-bundle-windows-x86_64这里边有Eclipse和Android SDK ,这个很方便,因为Eclipse里Android的 SDK路径已经给你配置好了。 PS:1...
  • LightUpHeaven
  • LightUpHeaven
  • 2015年01月08日 17:16
  • 30484

cocos2dx c++ 使用sqlite数据库

官方文档教程: 点击打开链接 环境 windows7 64, cocos2dx3.2 1.下载sqlite包 下载地址:http://www.sqlite.org/down...
  • hlmfjkqaz
  • hlmfjkqaz
  • 2015年10月28日 17:47
  • 204
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2dx android 环境报错 记录
举报原因:
原因补充:

(最多只允许输入30个字)