




已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
深入分析Cocos2d-x 2.0中的“纹理”另:本章所用Cocos2d-x版本为:cocos2d-2.0-x-2.0.2 Aug 30 2012/download 大家好,最近工作实在是太忙了,公司项目这个月要进行对外测试,大伙都是忙的昏天黑地的,每天很少有时间写新博文,但每天看到博文的回复和排名,心中很是感谢,正是因为各位的支持才能让我保持旺盛的战斗力。当然,在此还要感谢一下亲爱的老婆大人对我的支持,小乖每天闹困时主动的哄小乖安睡,否则咱咋能有时间写这些文字,小乖一岁半了,长得非常可爱,虽然在京仍然漂着,仍然买不起房,仍然只是一个程序员,但是我知道我已经得到了人生中最幸福的东西。 好了,感叹之后,今天我们来学习Cocos2d-x中的“纹理”。之前有几篇文章都是谈及图片方面的,也是我刻意的安排:(1)。如何利用Cocos2d-x开发一款游戏?(2)。游戏开发之图片元素。(3)。Cocos2d-x中图字原理之深入分析。(4)。红孩儿纹理打包器。(5)。CCImage深入分析。(6)。词典类CCDictionary深入分析。 在第一篇里我首先提到了“图元素的管理工具”。这是为什么呢?因为2D游戏画面是由图片构成的。了解好图片从美术绘制到加载到游戏以及使用和释放的整个过程是非常重要的,他关系着游戏的运行效率,内存占用等重要关键问题。有一个好的方案指导工作流程对于项目的成功是一项重要的保证。所以,请各位好好管理你们的图片资源。在第2篇里对于图片拼合的用途和意义做了启蒙。第3篇里我们深入了解了写汉字时Cocos2d-x是怎么使用图片来进行绘制的,它里面CCTextureAtlas和CCSpriteBatchNode 两个类告诉我们图片拼合原理与实现。而第4篇介绍了我开发的一款图片拼合工具。随后我会更新为最新版提供给大家使用。新增了PLIST方式导出和自动进行边缘空白裁剪的功能,免费而更强大!欢迎大家到下载。而后面两篇,其实是为了引出今天的文章而做的铺垫。 本博为什么要花这么多时间在纹理上呢?因为本博一次再一次的看到很多的Cocos2d开发者在说:“为什么我的游戏占内存这么大?”。“为什么我的游戏跑起来效率这么低?”。其实这里面最根本的问题是你思想上没有对资源进行优化的一种流程在里面。在进行游戏开发的过程中,你被美术牵着鼻子跑,你没有自然而然的想到该怎么进行图片的格式,尺寸,拼合,复用方式,以及绘制时的方式。这些因素对游戏产生的具体影响在你的脑子里还没有留下完整的概念。所以,我希望经过对于这些源码的分析,让大家去了解这些因素,从而学会思考如何优化自已的游戏。好了,大家先将今天关于纹理代码的分析博文学习完,下一篇我讲对于这些优化因素做一个具体的讲解。 当一张图片被加载到内存后,它是以纹理的形式存在的。纹理是什么东西呢?纹理就是一块内存,这块内存中存放的是按照指定的像素格式填充的图片像素信息。它被最终作为三角面着色所依据的数据源。 我们来看一下cocos2d-x中的libcocos2d库,其下有许多目录,找到textures展开,可以看到有CCTexture2D,CCTextureAtlas,CCTextureCache,CCTexturePVR四个类。这四个类的功能分别是:CCTexture2D: 纹理,即图片加载入内存后供CPU和GPU操作的贴图对象。 CCTexturePVR:处理PVR文件生成纹理的类,提示:大家可以用它解析愤怒的小鸟中的图片。CCTextureCache:纹理管理器,负责加载图片并对生成的纹理进行管理。通过“字典”来进行快速的查询。 CCTextureAtlas:纹理块管理器,如果图片是由多个小图块组成的,则纹理块管理器用来存储这些小图块的相关信息,以方便绘制相应图块。 为了让大家更好的学习纹理,在讲解纹理的代码之前我已经先给大家分析了本章用到的两个功能类:CCImage和CCDictionary。这两个类分别在纹理模块中担任加载图片和管理纹理指针的作用。希望大家先顶一下这两篇贴子之后再开始下面的代码学习,你一定会感到非常容易。一CCTexture2D:好,咱们现在开始看CCTexture2D:cppview plaincopy1. #ifndef_CCTEXTURE2D_H_2. #define_CCTEXTURE2D_H_3. 4. #include5. #includecocoa/CCObject.h6. #includecocoa/CCGeometry.h7. #includeccTypes.h8. 9. /Cocos2d命名空间10. NS_CC_BEGIN11. /需要用到CCImage,这里声明一下。12. classCCImage;13. 14. /纹理格式:即每个纹理中的像素单位分别是怎么为颜色值进行实际内存分配的。这个非常重要,我们在进行游戏开发的过程中,会常常与各种图片类型打交通。每种图片往往也有各自的像素格式。但当它们一旦加载到游戏中后,就会根据我们的要求变成以下某种类型的纹理。不同的纹理格式所占据的内存大小可能不同,我们要根据实际情况和需求来选择相应的纹理格式。比如我们用RGBA8888纹理格式来创建纹理,它占据的内存容量很大,如果我们要显示的纹理中没有ALPHA值,那就不应该使用带ALPHA通道的纹理格式。我们就可以改成RGB565像素格式。15. 16. typedefenum17. 18. /32位真彩色,最真但最耗内存19. kCCTexture2DPixelFormat_RGBA8888,20. /24位真彩色,去掉了ALPHA通道21. kCCTexture2DPixelFormat_RGB888,22. /16位色,将RGB压缩在一个字中。绿色多了1位,因为人眼对绿色更敏感。23. kCCTexture2DPixelFormat_RGB565,24. /8位色,只存ALPHA值,做遮罩图用25. kCCTexture2DPixelFormat_A8,26. /8位色,只存灰度或者强度值,做灰度图用27. kCCTexture2DPixelFormat_I8,28. /16位色,只存ALPHA值与强度值,双功能29. kCCTexture2DPixelFormat_AI88,30. /16位色,RGBA四通道各占4位。31. kCCTexture2DPixelFormat_RGBA4444,32. /16位色,RGB三通道各占5位,多1位留做ALPHA镂空使用33. kCCTexture2DPixelFormat_RGB5A1,34. /PVR的PVRTC4压缩格式35. kCCTexture2DPixelFormat_PVRTC4,36. /PVRTC的PVRTC2压缩格式37. kCCTexture2DPixelFormat_PVRTC2,38. 39. /默认格式RGBA888840. kCCTexture2DPixelFormat_Default=kCCTexture2DPixelFormat_RGBA8888,41. 42. /为了兼容性而保留的枚举值43. kTexture2DPixelFormat_RGBA8888=kCCTexture2DPixelFormat_RGBA8888,44. kTexture2DPixelFormat_RGB888=kCCTexture2DPixelFormat_RGB888,45. kTexture2DPixelFormat_RGB565=kCCTexture2DPixelFormat_RGB565,46. kTexture2DPixelFormat_A8=kCCTexture2DPixelFormat_A8,47. kTexture2DPixelFormat_RGBA4444=kCCTexture2DPixelFormat_RGBA4444,48. kTexture2DPixelFormat_RGB5A1=kCCTexture2DPixelFormat_RGB5A1,49. kTexture2DPixelFormat_Default=kCCTexture2DPixelFormat_Default50. 51. CCTexture2DPixelFormat;52. 53. /需要使用Shader代码片段,这里声明一下54. classCCGLProgram;55. 56. /定义了纹理的一些参数57. typedefstruct_ccTexParams58. GLuintminFilter;/纹理过滤器:缩小过滤器59. GLuintmagFilter;/纹理过滤器:放大过滤器60. GLuintwrapS;/横向纹理寻址模式61. GLuintwrapT;/纵向纹理寻址模式62. ccTexParams;63. 64. 65. /CCTexture2D类可以方便的从图片,文本或raw数据文件中创建OpenGL所用贴图,创建的贴图会自动转为2的幂次方大小,所以要注意对于贴图坐标的影响。66. 67. classCC_DLLCCTexture2D:publicCCObject68. 69. public:70. /构造71. CCTexture2D();72. /析构73. virtualCCTexture2D();74. /取得纹理的描述75. constchar*description(void);76. 77. /释放数据78. voidreleaseData(void*data);79. /保存数据80. void*keepData(void*data,unsignedintlength);81. 82. /由数据指针和指定的像素格式,图片宽高,来生成OpenGL贴图。83. boolinitWithData(constvoid*data,CCTexture2DPixelFormatpixelFormat,unsignedintpixelsWide,unsignedintpixelsHigh,constCCSize&contentSize);84. 85. /在指定的位置绘制贴图86. voiddrawAtPoint(constCCPoint&point);87. /纹制贴图上的一个图像块88. voiddrawInRect(constCCRect&rect);89. 90. /由CCImage指针生成OpenGL贴图91. boolinitWithImage(CCImage*uiImage);92. 93. /由一个字符串生成OpenGL贴图。94. boolinitWithString(constchar*text,constCCSize&dimensions,CCTextAlignmenthAlignment,CCVerticalTextAlignmentvAlignment,constchar*fontName,floatfontSize);95. /由一个字符串和指定的字体与大小生成OpenGL贴图96. boolinitWithString(constchar*text,constchar*fontName,floatfontSize);97. 98. /如果支持PVR的压缩格式99. #ifdefCC_SUPPORT_PVRTC100. /由一个PVR压缩格式的数据生成OpenGL贴图101. boolinitWithPVRTCData(constvoid*data,intlevel,intbpp,boolhasAlpha,intlength,CCTexture2DPixelFormatpixelFormat);102. #endif/CC_SUPPORT_PVRTC103. 104. /从普通PVR文件生成OpenGL贴图105. boolinitWithPVRFile(constchar*file);106. 107. /设置贴图参数108. voidsetTexParameters(ccTexParams*texParams);109. 110. /设置为抗锯齿的贴图过滤方式(线性过滤)111. voidsetAntiAliasTexParameters();112. 113. /设置为非抗锯齿的贴图过滤方式(最近点采样)114. voidsetAliasTexParameters();115. 116. 117. /生成多级贴图:由图片数据生成一系列尺寸为2的幂次方直至当前贴图大小的贴图。系统会根据距离自动选择纹理图片。可以解决大图片显示在小空间时的闪烁问题。118. voidgenerateMipmap();119. 120. /取得像素格式名称121. constchar*stringForFormat();122. 123. /返回当前贴图色深,即每个像素占多少位124. unsignedintbitsPerPixelForFormat();125. 126. /通过参数贴图格式返回纹理色深127. unsignedintbitsPerPixelForFormat(CCTexture2DPixelFormatformat);128. 129. 130. /静态函数,用于设置默认带ALPHA通道的贴图像素格式。则图片创建为贴图时,如果有ALPHA通道,则生成此默认贴图像素格式。131. staticvoidsetDefaultAlphaPixelFormat(CCTexture2DPixelFormatformat);132. 133. /静态函数,取得默认带ALPHA通道的贴图像素格式。134. staticCCTexture2DPixelFormatdefaultAlphaPixelFormat();135. 136. /静态函数,设置载入PVR时是否开启ALPHA渐变,默认不开启,则ALPHA值只有是与否,无渐变。137. staticvoidPVRImagesHavePremultipliedAlpha(boolhaveAlphaPremultiplied);138. 139. /取得图片大小(以像素为单位)140. constCCSize&getContentSizeInPixels();141. /是否有ALPHA渐变值142. boolhasPremultipliedAlpha();143. /是否有多级贴图144. boolhasMipmaps();145. private:146. /加载一个带ALPHA渐变的图片生成OpenGL贴图147. boolinitPremultipliedATextureWithImage(CCImage*image,unsignedintpixelsWide,unsignedintpixelsHigh);148. 149. /ALPHA渐变开关150. boolm_bPVRHaveAlphaPremultiplied;151. 152. /贴图格式变量及get接口153. CC_PROPERTY_READONLY(CCTexture2DPixelFormat,m_ePixelFormat,PixelFormat)154. /贴图宽度及get接口155. CC_PROPERTY_READONLY(unsignedint,m_uPixelsWide,PixelsWide)156. /贴图高度及get接口157. CC_PROPERTY_READONLY(unsignedint,m_uPixelsHigh,PixelsHigh)158. 159. /OpenGL贴图索引及get接口160. CC_PROPERTY_READONLY(GLuint,m_uName,Name)161. 162. /横向贴图坐标终点。因为图片如果不是2的幂次方,图片大小会小于贴图的大小,贴图一定是2的幂次方嘛,这时候横向的贴图坐标终点不是1.0。163. CC_PROPERTY(GLfloat,m_fMaxS,MaxS)164. /纵向贴图坐标终点。165. CC_PROPERTY(GLfloat,m_fMaxT,MaxT)166. /图片大小及get接口167. CC_PROPERTY_READONLY(CCSize,m_tContentSize,ContentSize)168. 169. /ALPHA渐变开关170. boolm_bHasPremultipliedAlpha;171. /多级纹理开关172. boolm_bHasMipmaps;173. 174. /Shader代码片段指针175. CC_PROPERTY(CCGLProgram*,m_pShaderProgram,ShaderProgram);176. ;177. 178. NS_CC_END179. 180. #endif/_CCTEXTURE2D_H_再来看CCTexture2D.cpp:cppview plaincopy1. #includeCCTexture2D.h2. #includeccConfig.h3. #includeccMacros.h4. #includeCCConfiguration.h5. #includeplatform/platform.h6. #includeplatform/CCImage.h7. #includeCCGL.h8. #includesupport/ccUtils.h9. #includeplatform/CCPlatformMacros.h10. #includetextures/CCTexturePVR.h11. #includeCCDirector.h12. #includeshaders/CCGLProgram.h13. #includeshaders/ccGLStateCache.h14. #includeshaders/CCShaderCache.h15. /这里定义是否使用可变纹理16. #ifCC_ENABLE_CACHE_TEXTURE_DATA17. #includeCCTextureCache.h18. #endif19. /Cocos2d-x命名空间20. NS_CC_BEGIN21. 22. 23. /静态全局的默认贴图像素格式。缺省为kCCTexture2DPixelFormat_Default,即RGBA8888。24. staticCCTexture2DPixelFormatg_defaultAlphaPixelFormat=kCCTexture2DPixelFormat_Default;25. 26. /静态全局的PVR是否有ALPHA渐变的开关变量,默认为否。27. staticboolPVRHaveAlphaPremultiplied_=false;28. 29. /构造函数。30. CCTexture2D:CCTexture2D()31. :m_uPixelsWide(0)32. ,m_uPixelsHigh(0)33. ,m_uName(0)34. ,m_fMaxS(0.0)35. ,m_fMaxT(0.0)36. ,m_bHasPremultipliedAlpha(false)37. ,m_bHasMipmaps(false)38. ,m_bPVRHaveAlphaPremultiplied(true)39. ,m_pShaderProgram(NULL)40. 41. 42. /析构43. CCTexture2D:CCTexture2D()44. 45. /如果使用可变纹理,删除此可变纹理中的数据。46. #ifCC_ENABLE_CACHE_TEXTURE_DATA47. VolatileTexture:removeTexture(this);48. #endif49. /打印日志。50. CCLOGINFO(cocos2d:deallocingCCTexture2D%u.,m_uName);51. /释放所用到的Shader代码片段52. CC_SAFE_RELEASE(m_pShaderProgram);53. /释放OpenGL所用到的贴图。54. if(m_uName)55. 56. ccGLDeleteTexture(m_uName);57. 58. 59. /取得当前纹理的贴图像素格式。60. CCTexture2DPixelFormatCCTexture2D:getPixelFormat()61. 62. returnm_ePixelFormat;63. 64. /取得贴图宽度。65. unsignedintCCTexture2D:getPixelsWide()66. 67. returnm_uPixelsWide;68. 69. /取得贴图高度。70. unsignedintCCTexture2D:getPixelsHigh()71. 72. returnm_uPixelsHigh;73. 74. /取得贴图索引。75. GLuintCCTexture2D:getName()76. 77. returnm_uName;78. 79. /取得图片大小(以点为单位)80. CCSizeCCTexture2D:getContentSize()81. 82. /CC_CONTENT_SCALE_FACTOR宏返回的是在不同屏幕下的点与像素的比率。Mac电脑上返回1.而使用Retina显示屏的iphone上返回2。83. CCSizeret;84. ret.width=m_tContentSize.width/CC_CONTENT_SCALE_FACTOR();85. ret.height=m_tContentSize.height/CC_CONTENT_SCALE_FACTOR();86. 87. returnret;88. 89. /取得图片大小(以像素为单位)90. constCCSize&CCTexture2D:getContentSizeInPixels()91. 92. returnm_tContentSize;93. 94. /取得横向的贴图坐标终点95. GLfloatCCTexture2D:getMaxS()96. 97. returnm_fMaxS;98. 99. /设置横向的贴图坐标终点100. voidCCTexture2D:setMaxS(GLfloatmaxS)101. 102. m_fMaxS=maxS;103. 104. /取得纵向的贴图坐标终点105. GLfloatCCTexture2D:getMaxT()106. 107. returnm_fMaxT;108. 109. /设置纵向的贴图坐标终点110. voidCCTexture2D:setMaxT(GLfloatmaxT)111. 112. m_fMaxT=maxT;113. 114. /所用到的Shader代码片段。115. CCGLProgram*CCTexture2D:getShaderProgram(void)116. 117. returnm_pShaderProgram;118. 119. /设置用到的Shader代码片段。120. voidCCTexture2D:setShaderProgram(CCGLProgram*pShaderProgram)121. 122. CC_SAFE_RETAIN(pShaderProgram);123. CC_SAFE_RELEASE(m_pShaderProgram);124. m_pShaderProgram=pShaderProgram;125. 126. /释放数据127. voidCCTexture2D:releaseData(void*data)128. 129. free(data);130. 131. /保存数据132. void*CCTexture2D:keepData(void*data,unsignedintlength)133. 134. /这里只是使用CC_UNUSED_PARAM宏用一下length,没什么实际功能。作者给出这个函数是预备未来供子类重载。135. CC_UNUSED_PARAM(length);136. returndata;137. 138. /是否有ALPHA渐变的通道数据。139. boolCCTexture2D:hasPremultipliedAlpha()140. 141. returnm_bHasPremultipliedAlpha;142. 143. /由数据指针创建指定大小和格式的贴图。取得创建成功后图片在贴图中的实际区域。144. boolCCTexture2D:initWithData(constvoid*data,CCTexture2DPixelFormatpixelFormat,unsignedintpixelsWide,unsignedintpixelsHigh,constCCSize&contentSize)145. 146. /如果是RGBA8888格式或者大小正好就是2的幂次方。像素数据按四字节(DWORD)对齐。否则按1字节(BYTE)进行对齐。147. if(pixelFormat=kCCTexture2DPixelFormat_RGBA8888|(ccNextPOT(pixelsWide)=pixelsWide&ccNextPOT(pixelsHigh)=pixelsHigh)148. 149. glPixelStorei(GL_UNPACK_ALIGNMENT,4);150. 151. else152. 153. glPixelStorei(GL_UNPACK_ALIGNMENT,1);154. 155. /产生一个OpenGL的贴图索引。156. glGenTextures(1,&m_uName);157. /将此贴图绑定为GL_TEXTURE_2D纹理。158. ccGLBindTexture2D(m_uName);159. /设置OpenGL中的贴图的过滤参数。160. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);161. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);162. /设置贴图的横向纹理寻址模式为边缘截取模式。总是忽略边界。163. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);164. /设置贴图的纵向纹理寻址模式为边缘截取模式。总是忽略边界。165. glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);166. 167. /这里根据不同的像素格式来生成不同的OpenGL所用的贴图。注意:传入的宽和高在成功生成贴图后会返回实际贴图的宽和高。如果图片不是2的幂次方,这个数值会改成2的幂次方。比如你传入的图片宽高是148x245,则调用完成后宽高会转成256x256。168. switch(pixelFormat)169. 170. casekCCTexture2DPixelFormat_RGBA8888:171. glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,(GLsizei)pixelsWide,(GLsizei)pixelsHigh,0,GL_RGBA,GL_UNSIGNED_BYTE,data);172. break;173. casekCCTexture2DPixelFormat_RGB888:174. glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,(GLsizei)pixelsWide,(GLsizei)pixelsHigh,0,GL_RGB,GL_UNSIGNED_BYTE,data);175. break;176. casekCCTexture2DPixelFormat_RGBA4444:177. glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,(GLsizei)pixelsWide,(GLsizei)pixelsHigh,0,GL_RGBA,GL_UNSIGNED_SHORT_4_4_4_4,data);178. break;179. casekCCTexture2DPixelFormat_RGB5A1:180. glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,(GLsizei)pixelsWide,(GLsizei)pixelsHigh,0,GL_RGBA,GL_UNSIGNED_SHORT_5_5_5_1,data);181. break;182. casekCCTexture2DPixelFormat_RGB565:183. glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,(GLsizei)pixelsWide,(GLsizei)pixelsHigh,0,GL_RGB,GL_UNSIGNED_SHORT_5_6_5,data);184. break;185. casekCCTexture2DPixelFormat_AI88:186. glTexImage2D(GL_TEXTURE_2D,0,GL_LUMINANCE_ALPHA,(GLsizei)pixelsWide,(GLsizei)pixelsHigh,0,GL_LUMINANCE_ALPHA,GL_UNSIGNED_BYTE,data);187. break;188. casekCCTexture2DPixelFormat_A8:189. glTexImage2D(GL_TEXTURE_2D,0,GL_ALPHA,(GLsizei)pixelsWide,(GLsizei)pixelsHigh,0,GL_ALPHA,GL_UNSIGNED_BYTE,data);190. break;191. casekCCTexture2DPixelFormat_I8:192. glTexImage2D(GL_TEXTURE_2D,0,GL_LUMINANCE,(GLsizei)pixelsWide,(GLsizei)pixelsHigh,0,GL_LUMINANCE,GL_UNSIGNED_BYTE,data);193. break;194. default:195. CCAssert(0,NSInternalInconsistencyException);196. 197. 198. /图片大小199. m_tContentSize=contentSize;200. /保存实际的贴图宽高201. m_uPixelsWide=pixelsWide;202. m_uPixelsHigh=pixelsHigh;203. /保存贴图的像素格式204. m_ePixelFormat=pixelFormat;205. /计算图片处于贴图中的横向和纵向的纹理坐标终点。206. m_fMaxS=contentSize.width/(float)(pixelsWide);207. m_fMaxT=contentSize.height/(float)(pixelsHigh);208. /默认不使用ALPHA渐变通道。209. m_bHasPremultipliedAlpha=false;210. /默认不使用多级纹理。211. m_bHasMipmaps=false;212. 213. /设置使用kCCShader_PositionTexture对应类型的Shader。此Shader的顶点格式由位置和纹理坐标组成。214. setShaderProgram(CCShaderCache:sharedShaderCache()-programForKey(kCCShader_PositionTexture);215. 216. returntrue;217. 218. 219. /取得纹理的描述220. constchar*CCTexture2D:description(void)221. 222. returnCCString:createWithFormat(,m_uName,m_uPixelsWide,m_uPixelsHigh,m_fMaxS,m_fMaxT)-getCString();223. 224. 225. /由CCImage对象来初始化纹理生成OpenGL贴图。226. boolCCTexture2D:initWithImage(CCImage*uiImage)227. 228. /参数有效性判断。229. if(uiImage=NULL)230. 231. CCLOG(cocos2d:CCTexture2D.CantcreateTexture.UIImageisnil);232. this-release();233. returnfalse;234. 235. /取得图片的宽高236. unsignedintimageWidth=uiImage-getWidth();237. unsignedintimageHeight=uiImage-getHeight();238. /取得引擎的配置信息239. CCConfiguration*conf=CCConfiguration:sharedConfiguration();240. /取得配置信息中指定的最大纹理大小241. unsignedmaxTextureSize=conf-getMaxTextureSize();242. /如果当前图片大于指定的最大纹理大小,提示错误警告交释放当前纹理返回NULL。243. if(imageWidthmaxTextureSize|imageHeightmaxTextureSize)244. 245. CCLOG
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 齐齐哈尔医学院《中学语文课程教学论》2023-2024学年第二学期期末试卷
- 浙江音乐学院《轻化工程仪器分析》2023-2024学年第二学期期末试卷
- 黄冈职业技术学院《统计质量控制》2023-2024学年第二学期期末试卷
- WR-27653-RC-12-生命科学试剂-MCE
- 工业园区水处理技术探讨
- 工业互联网平台建设及发展趋势
- 工业厂房建设中抗裂砂浆的选择与施工
- 工业互联网在新兴市场的应用前景
- 工业4.0背景下的智能制造技术趋势
- 小米的国际化之路品牌传播策略解析
- 2025年四川省成都市中考语文真题(解析版)
- 北京市2024年高招本科普通批录取投档线
- 2025年黑龙江、吉林、辽宁、内蒙古高考物理真题(解析版)
- 民航招飞初选试题及答案
- 2025年电子商务法律法规考试试题及答案
- 国开2025年《资源与运营管理》形考任务1-4答案
- 2025年安全生产考试题库(危险化学品安全)危险化学品安全操作规范应用试题
- T/CIQA 74-2024人工智能(AI)鉴定通用规范
- 学习解读《水利水电建设工程验收规程》SLT223-2025课件
- 餐饮服务员培训全流程解析
- 《成人高血压合并2型糖尿病和血脂异常基层防治中国专家共识(2024年版)》解读
评论
0/150
提交评论