自定义绘图
引擎在CCNode中預留了自定義繪圖接口,如: 1 void CCNode::draw()
2 {
3 //CCAssert(0);
4 //可以重載此方法
5 //最好僅在這個方法中繪制自定義的內容
6 }
?
draw函數是一個每幀都會調用的函數,注釋中明確指出,通常情況下只應該在這個函數內編寫自定義繪制效果,不要再這個函數以外的任何地方繪圖。這是因為引擎在這個函數調用的上下文之間進行了繪圖環(huán)境的準備和必要的狀態(tài)設置。在其他地方添加繪制代碼可能引起不可預料的錯誤。 遮罩層 遮罩效果又稱剪刀效果,允許一切的渲染結果只在屏幕的一個指定區(qū)域顯示:開啟遮罩效果后,一切都繪制提交都是正常渲染的,但最終只有屏幕上的指定區(qū)域會被繪制。 數據交流 CCImage和CCTexture2D是引擎提供的描述紋理圖片的類,也是和顯卡進行數據交換時主要涉及的數據結構。 CCImage: CCImage在“CCImage.h”中定義,表示一張加載到內存的紋理圖片。在其內部的實現中,紋理以每個像素的顏色值保存在內存之中。CCImage通常作為文件和顯卡間數據交換的一個工具,因此主要提供了兩個方面的功能:一方面是文件的加載與保存,另一方面是內存緩沖區(qū)的讀寫。 我們可以使用CCImage輕松地讀寫圖片文件,目前,CCImage支持PNG、JPEG、和TIFF三種圖片格式。 以下幾個方法: 1 bool initWithImageFile(const char* strPath, EImageFormat imageType = kFmtPng); 2 bool initWithImageFileThreadSafe(const char* fullpath, EImageFormat imageType = kFmtPng); 3 bool saveToFile(const char* pszFilePath, bool bIsToRGB = True);?
CCImage也提供了讀寫內存的接口。getData和getDataLen這兩個方法提供了后去當前紋理的緩沖區(qū)的功能,而initWithImageData方法提供了使用像素數據初始化圖片的功能。 如下: 1 unsigned char* getData(); 2 int getDataLen(); 3 bool initWithImageData(void* pData, int nDataLen, EImageFormat eFmt = kFmtUnKnown, int nWidth = 0, int nHeight = 0, int nBitsPerComponent = 8); 4?
CCTexture2D: 它描述了一張紋理,知道如何將自己繪制到屏幕上。通過該類還可以設置紋理過濾、抗鋸齒等參數。還提供一個接口,將字符串創(chuàng)建成紋理。 值得注意的是:該類所包含的紋理大小必須是2的冪次,因此紋理的大小不一定就等于圖片大小;另外,有別于CCImage,這是一張存在于顯存中的紋理,實際上并不一定存在于內存中。 截屏功能: 首先,我們使用OpenGL的一個底層函數glReadPixels實現截圖: void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);?
//這個函數講當前屏幕的像素讀取到一個內存塊pixels中,且pixels指針指向的內存必須足夠大。?
轉載于:https://www.cnblogs.com/Blogs-young-chan/p/5250391.html
總結
- 上一篇: 全国软考数据库系统工程师教程(第2版)目
- 下一篇: ./ 表示当前路径 ../ 表示上一级