CCEGLViewProtocol(窗口协议 各个平台会继承这个类重写一个子类来具体实现窗口创建)

窗口协议 各个平台会继承这个类重写一个子类来具体实现窗口创建


本文来自http://blog.csdn.net/runaying ,引用必须注明出处!

cocos2d-x节点(CCEGLViewProtocol.h)API

温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记

应用全屏参数,拉伸全屏,裁剪全屏,有黑色边框全屏

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. ///cocos2d-x-3.0alpha0/cocos2dx/platform  
  2. //应用全屏参数,拉伸全屏,裁剪全屏,有黑色边框全屏  
  3. #ifndef __CCEGLVIEWPROTOCOL_H__  
  4. #define __CCEGLVIEWPROTOCOL_H__  
  5.   
  6. #include "ccTypes.h"  
  7. #include "event_dispatcher/CCEventTouch.h"  
  8.   
  9. #include <vector>  
  10.   
  11. enum class ResolutionPolicy  
  12. {  
  13.     // 整个应用程序在指定区域中可见,而试图保持原始宽高比。  
  14.     // 可能会发生扭曲,应用程序可能会拉伸或压缩。  
  15.     EXACT_FIT,  
  16.     // 整个应用程序填满指定区域,不扭曲,但可能进行一些裁切,同时保持应用程序的原始宽高比。  
  17.     NO_BORDER,  
  18.     // 看到整个应用程序在指定区域不失真,同时保持应用程序的原始宽高比。双方的应用程序可能会显示边框。  
  19.     SHOW_ALL,  
  20.     // 该应用程序采用这个高度来,设计分辨率大小和修改内部画布的宽度,使其适合设备的纵横比没有会变形,但是你必须确保你的应用程序适用于不同的纵横比  
  21.     FIXED_HEIGHT,  
  22.     // 该应用程序采用这个宽度来,设计分辨率大小和修改内部画布的宽度,使其适合设备的纵横比没有会变形,但是你必须确保你的应用程序适用于不同的纵横比  
  23.     FIXED_WIDTH,  
  24.   
  25.     UNKNOWN,  
  26. };  
  27.   
  28. NS_CC_BEGIN  
  29.   
  30. class EGLTouchDelegate;  
  31.   
  32. /** 
  33.  * @addtogroup platform 
  34.  * @{ 
  35.  */  
  36.   
  37. class CC_DLL EGLViewProtocol  
  38. {  
  39. public:  
  40.     /** 
  41.      * @js ctor 
  42.      */  
  43.     EGLViewProtocol();  
  44.     /** 
  45.      * @js NA 
  46.      * @lua NA 
  47.      */  
  48.     virtual ~EGLViewProtocol();  
  49.   
  50.     /** 强制销毁EGL视图,子类必须实现此方法. */  
  51.     virtual void    end() = 0;  
  52.   
  53.     /** 获取OpenGL的渲染系统是否已准备好,子类必须实现此方法. */  
  54.     virtual bool    isOpenGLReady() = 0;  
  55.   
  56.     /**交换前后缓冲区,子类必须实现此方法. */  
  57.     virtual void    swapBuffers() = 0;  
  58.   
  59.     /** 打开或关闭输入法键盘,子类必须实现此方法. */  
  60.     virtual void    setIMEKeyboardState(bool bOpen) = 0;  
  61.   
  62.     /** 
  63.      * Polls(民意调查)的输入事件。如果平台不提供事件回调子类必须实现的方法 
  64.      */  
  65.     virtual void pollInputEvents();  
  66.   
  67.     /** 
  68.      * 获取EGL视图帧大小。 
  69.      * 在一般情况下,它返回的屏幕尺寸因为EGL的 view 是全屏的 view 
  70.      */  
  71.     virtual const Size& getFrameSize() const;  
  72.   
  73.     /** 
  74.      * 设置 EGL视图帧大小. 
  75.      */  
  76.     virtual void setFrameSize(float width, float height);  
  77.   
  78.     /** 
  79.      * 获取 openGL的视图窗口的可见区域大小. 
  80.      */  
  81.     virtual Size getVisibleSize() const;  
  82.   
  83.     /** 
  84.      * 获取 openGL的视图窗口原始可见区域大小 
  85.      */  
  86.     virtual Point getVisibleOrigin() const;  
  87.   
  88.     /** 
  89.      * 设置分辨率样式大小 
  90.      * @param width 分辨率宽度样式 
  91.      * @param height 分辨率高度样式 
  92.      * @param resolutionPolicy 你可以根据需要选择所需要的分辨率: 
  93.      *                         [1] EXACT_FIT 通过 stretch-to-fit(拉伸)来填满屏幕: 如果分辨率式样的宽度、高度和屏幕的分辨率不同,会拉长你的游戏视图来适应屏幕 
  94.      *                         [2] NO_BORDER 全屏无黑色边框:  如果分辨率式样的宽度、高度和屏幕的分辨率不同,你游戏视图的两个区域会将被削减。 
  95.      *                         [3] SHOW_ALL 带有黑色边框的全屏:  如果分辨率式样的宽度、高度和屏幕的分辨率不同,两个黑色边框将显示. 
  96.      */  
  97.     virtual void setDesignResolutionSize(float width, float height, ResolutionPolicy resolutionPolicy);  
  98.   
  99.     /** 获取分辨率式样大小. 
  100.      *  D默认分辨率大小和 'getFrameSize' 是一样的. 
  101.      */  
  102.     virtual const Size&  getDesignResolutionSize() const;  
  103.   
  104.     /** 设置触摸委托 */  
  105.     virtual void setTouchDelegate(EGLTouchDelegate * pDelegate);  
  106.   
  107.     /** 
  108.      * 使用 points 设置 OpenGL 视图窗口 
  109.      */  
  110.     virtual void setViewPortInPoints(float x , float y , float w , float h);  
  111.   
  112.     /** 
  113.      * 使用 points 设置 削减矩形. 
  114.      */  
  115.     virtual void setScissorInPoints(float x , float y , float w , float h);  
  116.   
  117.     /** 
  118.      * Get whether GL_SCISSOR_TEST is enable 
  119.      */  
  120.     virtual bool isScissorEnabled();  
  121.   
  122.     /** 
  123.      * Get 当前削减矩形 
  124.      */  
  125.     virtual Rect getScissorRect();  
  126.   
  127.     virtual void setViewName(const char* pszViewName);  
  128.   
  129.     const char* getViewName();  
  130.   
  131.     /** 触摸事件的处理,默认情况下,如果你想自定义您的处理程序,请重写这些函数 */  
  132.     virtual void handleTouchesBegin(int num, int ids[], float xs[], float ys[]);  
  133.     virtual void handleTouchesMove(int num, int ids[], float xs[], float ys[]);  
  134.     virtual void handleTouchesEnd(int num, int ids[], float xs[], float ys[]);  
  135.     virtual void handleTouchesCancel(int num, int ids[], float xs[], float ys[]);  
  136.   
  137.     /** 
  138.      * Get  OpenGL 视图窗口. 
  139.      */  
  140.     const Rect& getViewPortRect() const;  
  141.   
  142.     /** 
  143.      * Get 水平方向的比例因子 
  144.      */  
  145.     float getScaleX() const;  
  146.   
  147.     /** 
  148.      * Get 垂直方向的比例因子 
  149.      */  
  150.     float getScaleY() const;  
  151. private:  
  152.     void handleTouchesOfEndOrCancel(EventTouch::EventCode eventCode, int num, int ids[], float xs[], float ys[]);  
  153.   
  154. protected:  
  155.     EGLTouchDelegate* _delegate;  
  156.   
  157.     // 真实的屏幕尺寸  
  158.     Size _screenSize;  
  159.     // 分辨率的大小,它适应应用程序资源大小  
  160.     Size _designResolutionSize;  
  161.     // the view port size   //视图窗口的大小  
  162.     Rect _viewPortRect;  
  163.     // the view name      
  164.     char   _viewName[50];  
  165.   
  166.     float  _scaleX;  
  167.     float  _scaleY;  
  168.     ResolutionPolicy _resolutionPolicy;  
  169. };  
  170.   
  171. // end of platform group  
  172. /// @}  
  173.   
  174. NS_CC_END  
  175.   
  176. #endif /* __CCEGLVIEWPROTOCOL_H__ */  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值