×

cocos2dx文件更名

cocos2dx文件更名(cocos2dx文档)

admin admin 发表于2023-03-31 10:25:07 浏览55 评论0

抢沙发发表评论

本文目录一览:

cocos2dx下完后怎么运行

一. 启动终端(点击Finder-前往-实用工具-终端);

二.将你下载的zip包解压,mac下直接双击,放到某一文件夹下;

三.在终端上进入刚解压的文件夹,cd 到目录cocos2d-x-3.2, 然后输入如下命令运行:./setup.py;

四.输入 source /Users/HQ(你的用户名)/.bash_profile 这是用来刷新配置文件的;

五.cocos new MyProject -p com.YouCompany -l cpp -d Project/Games

注: MyProject项目名 可任意命名、com.YouCompany包名 可任意命名、Project/Games 保存文件夹路径 可任意写

运行后就创建新项目了,到xcode中打开

cocos2dx中怎样把texture嫖猵vr或者pvr

pvr格式的数据在IOS上直接交给显卡渲染的,而cocos2dx 中的texture是直接交给显卡渲染的,所以理论上将pvr格式的数据可以不进行任何数据的转换就可以生成一张texture,事实上确实是这样的。-cocos2dx文件更名

一, 保存为pvr格式

要保存pvr文件,我们首先分析cocos2dx引擎中是怎样解析pvr文件的。可以看到cocos2dx库中的CCTexturePVR类提供了两个方法来解析pvr格式图片分别是unpackPVRv2Data、unpackPVRv3Data,两个方法分别解析的是PVR的v2和v3版本。本文只分析v2版本:-cocos2dx文件更名

bool CCTexturePVR::unpackPVRv2Data(unsigned char* data, unsigned int len)//data数据是直接从文件里读出来没有做任何处理的

{

bool success = false;

ccPVRv2TexHeader *header = NULL;

unsigned int flags, pvrTag;

unsigned int dataLength = 0, dataOffset = 0, dataSize = 0;

unsigned int blockSize = 0, widthBlocks = 0, heightBlocks = 0;

unsigned int width = 0, height = 0, bpp = 4;

unsigned char *bytes = NULL;

unsigned int formatFlags;

// 用header指向data数据的头部(PVR v2格式的头部固定是52个字节,也就是data的前52个字节的数据,data剩下的数据就是生成texture的数据了)

header = (ccPVRv2TexHeader *)data;

// 这是头部的一个标识值为 "PVR!" 占4字节

pvrTag = CC_SWAP_INT32_LITTLE_TO_HOST(header-pvrTag);

if (gPVRTexIdentifier[0] != (char)(((pvrTag 0) 0xff)) ||

gPVRTexIdentifier[1] != (char)(((pvrTag 8) 0xff)) ||

gPVRTexIdentifier[2] != (char)(((pvrTag 16) 0xff)) ||

gPVRTexIdentifier[3] != (char)(((pvrTag 24) 0xff)))

{

return false;

}

CCConfiguration *configuration = CCConfiguration::sharedConfiguration();

flags = CC_SWAP_INT32_LITTLE_TO_HOST(header-flags);

formatFlags = flags PVR_TEXTURE_FLAG_TYPE_MASK;

bool flipped = (flags kPVR2TextureFlagVerticalFlip) ? true : false;

if (flipped)

{

CCLOG("cocos2d: WARNING: Image is flipped. Regenerate it using PVRTexTool");

}

if (! configuration-supportsNPOT()

(header-width != ccNextPOT(header-width) || header-height != ccNextPOT(header-height)))

{

CCLOG("cocos2d: ERROR: Loading an NPOT texture (%dx%d) but is not supported on this device", header-width, header-height);-cocos2dx文件更名

return false;

}

unsigned int pvr2TableElements = PVR2_MAX_TABLE_ELEMENTS;

if (! CCConfiguration::sharedConfiguration()-supportsPVRTC())

{

pvr2TableElements = 9;

}

for (unsigned int i = 0; i pvr2TableElements; i++)

{

//Does image format in table fits to the one parsed from header?

if (v2_pixel_formathash[i].pixelFormat == formatFlags)

{

m_pPixelFormatInfo = v2_pixel_formathash[i].pixelFormatInfo;

//Reset num of mipmaps

m_uNumberOfMipmaps = 0;

//Get size of mipmap

m_uWidth = width = CC_SWAP_INT32_LITTLE_TO_HOST(header-width);

m_uHeight = height = CC_SWAP_INT32_LITTLE_TO_HOST(header-height);

//Do we use alpha ?

if (CC_SWAP_INT32_LITTLE_TO_HOST(header-bitmaskAlpha))

{

m_bHasAlpha = true;

}

else

{

m_bHasAlpha = false;

}

//Get ptr to where data starts..

dataLength = CC_SWAP_INT32_LITTLE_TO_HOST(header-dataLength);

//跳过头部,bytes直接指向了图片数据部分

bytes = ((unsigned char *)data) + sizeof(ccPVRv2TexHeader);

m_eFormat = m_pPixelFormatInfo-ccPixelFormat;

bpp = m_pPixelFormatInfo-bpp;

// Calculate the data size for each texture level and respect the minimum number of blocks-cocos2dx文件更名

while (dataOffset dataLength)

{

switch (formatFlags) {

case kPVR2TexturePixelFormat_PVRTC_2BPP_RGBA:

blockSize = 8 * 4; // Pixel by pixel block size for 2bpp

widthBlocks = width / 8;

heightBlocks = height / 4;

break;

case kPVR2TexturePixelFormat_PVRTC_4BPP_RGBA:

blockSize = 4 * 4; // Pixel by pixel block size for 4bpp

widthBlocks = width / 4;

heightBlocks = height / 4;

break;

case kPVR2TexturePixelFormat_BGRA_8888:

if (CCConfiguration::sharedConfiguration()-supportsBGRA8888() == false)

{

CCLOG("cocos2d: TexturePVR. BGRA8888 not supported on this device");

return false;

}

default:

blockSize = 1;

widthBlocks = width;

heightBlocks = height;

break;

}

// Clamp to minimum number of blocks

if (widthBlocks 2)

{

widthBlocks = 2;

}

if (heightBlocks 2)

{

heightBlocks = 2;

}

dataSize = widthBlocks * heightBlocks * ((blockSize * bpp) / 8);

unsigned int packetLength = (dataLength - dataOffset);

packetLength = packetLength dataSize ? dataSize : packetLength;

// bytes指向的是data,而data是直接从文件里面读出来的数据,m_asMipmaps则是用来生成texture的数据,

// 所以这里可以得出结论,pvr的图片数据到texture不需要经过任何转换,

// 也就是说pvr格式的数据可以不进行任何数据的转换就可以生成一张texture

m_asMipmaps[m_uNumberOfMipmaps].address = bytes + dataOffset;

m_asMipmaps[m_uNumberOfMipmaps].len = packetLength;

m_uNumberOfMipmaps++;

//Check that we didn"t overflow

CCAssert(m_uNumberOfMipmaps CC_PVRMIPMAP_MAX,

"TexturePVR: Maximum number of mipmaps reached. Increase the CC_PVRMIPMAP_MAX value");-cocos2dx文件更名

dataOffset += packetLength;

//Update width and height to the next lower power of two

width = MAX(width 1, 1);

height = MAX(height 1, 1);

}

//Mark pass as success

success = true;

break;

}

通过上面的分析,我们知道了要把texture保存成pvr格式的文件只需为这样texture添加一个头部即可。关于pvr头部在CCTexturePVR.cpp中我们可以看到 _PVRTexHeader 这个结构体,这个结构体就是PVR的头部格式,现在要做的工作就是分析出_PVRTexHeader的成员的含义。这个可以参考imageination关于pvr的文档,需要提醒的是要注意版本差别。-cocos2dx文件更名

求大神指导,如何在Mac上安装cocos2d—x,就是可以在Xcode中用的

之前有两节介绍了mac下配置Android NDK并搭建Cocos2dX以及如何创建Cocos2d-X-Android项目,那么可能看过这两节的童鞋就很多疑问,问的最多的就是如何让Xcode中的iOS代码与Eclipse-Android代码通用?那么今天Himi就为大家详细解决这个问题,让我们只需在Xcode中编写代码,然后编译后直接导入Android即可运行打包!-cocos2dx文件更名

废话不多说了,正题,整合步骤如下:(为了不让童鞋们混淆,许多文件的具体修改省略,Himi直接给出文件)

1. 使用终端创建一个Android-Cocos2dx项目先;具体步骤参照如下博文:

【iOS-cocos2d-X 游戏开发之四】Cocos2dX创建Android NDK新项目并编译导入Eclipse中正常运行!

2.创建好之后,然后Xcode新创建一个Cocos2dX模版的项目(已有Cocos2dX模版项目的省略此步骤)

注意:下面的讲解为了避免童鞋们的路径混淆,那么这里Himi说下自己项目的相关路径和文件名:

Himi创建的Xcode项目路径:(项目名称:OhMonsterMRiOS)

     /Users/Himi/Documents/HimiWork/OhMonsterMRiOS

  Himi创建的Android项目名称:(项目名称:OhMonsterMRAndroid)路径后面用不到;

3. 拷贝新创建的Android项目下的整个“android”文件夹,路径: OhMonsterMRAndroid/android

然后拷贝到  /Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS

上面这个路径就是你Xcode项目下与 ios、libs、Classes同一级别的地方!

注意!这里只要新创建的Android项目下名为“android”文件夹,其他的都不要!!!!

4. 打开你的“终端”,先 cd 到你Xcode的项目下刚拷贝过来的android文件夹路径,这里Himi输入的命令如下:

cd /Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/android    回车!

继续在终端输入     pico makefile   回车! 然后根据如下图进行输入:

这里要注意:

clean 要顶格不留空格!    两个 rm 语句前都是  tab 缩进!不要弄错!

输入后,control+x  保存,然后  y  ,最后回车!  OK!

不要关闭终端,继续输入   make clean   回车!  当终端输出如下提示,表示你正确配置了:

rm -rf libs/

rm -rf obj/

5.  下载如下四个 Android.mk 文件和一个Application.mk以及一个build_native.sh文件 ;

“mk.zip” 下载地址: 

下载解压后你可看到如下几个文件,( mk 表示你下载解压出的mk文件夹)

android/build_native.sh

android/jni/Android.mk

android/jni/Application.mk

android/jni/helloworld/Android.mk

Classes/Android.mk

libs/cocos2dx/Android.mk

这六个文件分别放入你Xcode项目如下路径,这里使用Himi的项目路径来说明,大家按照自己项目路径放入即可!

/Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/android/build_native.sh

/Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/android/jni/Android.mk

/Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/android/jni/Application.mk

/Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/android/jni/helloworld/Android.mk

/Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/Classes/Android.mk

/Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/libs/cocos2dx/Android.mk

这四个路径当中如提示文件已经存在,果断不用多想,直接覆盖即可!

6. OK,四个文件放置完成之后,童鞋们需要修改刚才下载中的 build_native.sh 文件,就是android/build_native.sh文件!

打开后只需要修改: NDK_ROOT 路径即可!别跟我说你的NDK_ROOT路径你不知道 =。 =不知道的童鞋请自动面壁~开玩笑拉,不知道的童鞋可以参考之前我介绍如何配置Android SDK 的博文哦~-cocos2dx文件更名

7. 最后一步了,拷贝两个文件就大功告成了!

首先到你存放Cocos2dX引擎目录路径下(如有看过之前文章,其实就是$COCOS2DX_ROOT路径),

然后找到CocosDenshion文件夹下的“android”文件夹,然后拷贝整个“android”文件夹到你Xcode项目下libs/CocosDenshion下,Himi的路径如下:

/Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/libs/CocosDenshion

最后找到存放Cocos2dX引擎目录路径下的cocos2dx下的“platform”文件夹,将整个“platform”文件夹拷贝到你Xcode项目下libs/cocos2dx 下,Himi的路径如下:-cocos2dx文件更名

/Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/libs/cocos2dx

——(此步骤为加入cocos2dx-box2d步骤,如果不使用box2d请童鞋省略此步骤)——

(此步骤为加入cocos2dx-box2d步骤,如果不使用box2d请童鞋省略此步骤)从Cocos2dX引擎目录路径下/Box2D/拷贝Android.mk到Xcode项目下/libs/Box2D/下面去。-cocos2dx文件更名

—————————————————————————————————————

8.  打开你的“终端”,先 cd 到你Xcode的项目下刚拷贝过来的android文件夹路径,这里Himi输入的命令如下:

cd /Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/android    回车!

继续输入   make clean  回车!

继续输入  ./build_native.sh  回车!

如果之前的步骤都没有出现任何问题,OK,终端会输出一大堆的信息,最后显示如下类似内容!

Install        : libcocosdenshion.so = libs/armeabi/libcocosdenshion.so

Compile++ thumb  : game_logic_static = HelloWorldScene.cpp

StaticLibrary  : libgame_logic_static.a

SharedLibrary  : libgame.so

Install        : libgame.so = libs/armeabi/libgame.so

OK,到此证明之前的配置正确完成!如果出现了 …stop类似的信息,说明其中有些地方配置出现问题!

别着急,还没结束!最后说二点:

一. 你拷贝到Xcode项目中的android相关文件等没必要导入你的Xcode中,如果导入反而让你的Xcode项目编译错误无法运行!

二. 当你以后在Xcode添加了一些类,那么你需要到  Classes/Android.mk  修改一下,将你新添加的类添加进去,如下图所示:

注意:新添加的类在其他类中“include”使用的时候一定要将文件的路径全部写完整,例如新添加有个类 StaticClassModel.cpp       StaticClassModel.h  放在dev文件夹下,那么:-cocos2dx文件更名

其他类中使用时:  #include “dev/StaticClassModel.h”

在classes文件下 Android.mk中,也一样写完整路径:dev/StaticClassModel.cpp

否则编译android时会找不到,而且提醒如下错误:

Compile++ thumb  : game_logic_static = AppDelegate.cpp

Compile++ thumb  : game_logic_static = HelloWorldScene.cpp

jni/../../Classes/HelloWorldScene.cpp:3:30: error: StaticClassModel.h: No such file or directory

jni/../../Classes/HelloWorldScene.cpp: In member function 'virtual bool HelloWorld::init()':

jni/../../Classes/HelloWorldScene.cpp:56: error: 'StaticClassModel' has not been declared

make: *** [obj/local/armeabi/objs-debug/game_logic_static/HelloWorldScene.o] Error 1

——(此步骤为加入cocos2dx-box2d步骤,如果不使用box2d请童鞋省略此步骤)——

Classes/Android.mk中找到:

LOCAL_SHARED_LIBRARIES := cocosdenshion_shared

 在下面继续添加一句:

             LOCAL_SHARED_LIBRARIES += box2d_shared

—————————————————————————————————————

对了忘记说如何导入到Eclipse中了!这里将Xcode项目导入Eclipse中很容易:

一: 第一次将Xcode中的Android项目导入到Eclipse中,要先build!

打开你的“终端”,先 cd 到你Xcode的项目下刚拷贝过来的android文件夹路径,这里Himi输入的命令如下:

cd /Users/Himi/Documents/HimiWork/OhMonsterMRiOS/OhMonsterMRiOS/android    回车!

继续输入   make clean  回车!

继续输入  ./build_native.sh  回车!

二:Eclipse直接将你Xcode下的“android”路径直接导入你Eclipse中即可!

备注:不仅仅第一次将Xcode中项目导入Eclipse中需要编译,以后只要在Xcode中有代码修改和添加都记得要build!然后eclipse  Clean下运行项目就OK拉!

下面是Himi配置之后在Xcode以及Eclipse下运行的iOS和Android截图:

你好,这个网站上边有cocos相关的公开课,免费的(edu.9miao.com),同时还有“问答社区”板块,我觉得还是不错的,推荐你看看