青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Cpper
C/C++高級(jí)工程師 Android高級(jí)軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語(yǔ)言 程序猿
設(shè)計(jì)引擎的時(shí)候一直在考慮什么時(shí)候才可以支持多渲染器,比如d3d9比如軟件渲染器
為了盡可能的讓opengl的API盡可能的與引擎代碼分離
我加上了一個(gè)初步封裝了opengl API的類(lèi)VideoDriver
當(dāng)前只是簡(jiǎn)單的封裝了很多opengl的函數(shù)
代碼如下:

  1 public:
  2     ////////////////////////////////////////////////////////
  3     /// 構(gòu)造,析構(gòu)引擎視頻驅(qū)動(dòng)(渲染器)
  4     ////////////////////////////////////////////////////////    
  5     VideoDriver();
  6     virtual ~VideoDriver();
  7 public
  8     ////////////////////////////////////////////////////////
  9     /// 獲取當(dāng)前視頻驅(qū)動(dòng)器類(lèi)型
 10     ////////////////////////////////////////////////////////      
 11     virtual ENGINE_VIDEODERIVER  GetVideoDriverType()const
 12     {
 13         return ENGINE_VIDEODERIVER_NULL;
 14     }
 15     
 16     ////////////////////////////////////////////////////////
 17     /// 設(shè)置,獲取是否啟用豎直同步
 18     ////////////////////////////////////////////////////////         
 19     virtual void UseVerticalSync(bool enabled) = 0
 20     virtual bool IsUseVerticalSync()const = 0
 21     
 22     ////////////////////////////////////////////////////////////
 23     /// 獲取當(dāng)前幀速  
 24     ////////////////////////////////////////////////////////////
 25     virtual float GetFPS() const = 0;     
 26     
 27     /////////////////////////////////////////////////////////
 28     /// 獲取視頻模式列表,獲取桌面視頻模式
 29     /////////////////////////////////////////////////////////    
 30     virtual int GetVideoMode(VideoMode* mode, int number) = 0;
 31     virtual VideoMode GetDesktopVideoMode()const = 0;        
 32     
 33     ////////////////////////////////////////////////////////
 34     /// 設(shè)置,獲取視口
 35     ////////////////////////////////////////////////////////     
 36     virtual void SetViewPort(const Recti &rect) = 0
 37     virtual Recti GetViewPort()const = 0
 38     
 39     //////////////////////////////////////////////////////////
 40     /// 設(shè)置投影模式下的視景體 
 41     //////////////////////////////////////////////////////////     
 42     virtual void SetPerspective(float fov, float aspect, float near, float far) = 0;
 43     
 44     //////////////////////////////////////////////////////////
 45     /// 啟用,禁止和查詢(xún)剔除功能 
 46     //////////////////////////////////////////////////////////         
 47     virtual void EnableCulling() = 0;
 48     virtual void DisableCulling() = 0;
 49     virtual bool IsEnabledCulling() = 0;
 50     virtual void SetCulling(ENGEIN_CULLING_TYPE type) = 0;
 51     
 52     
 53     //////////////////////////////////////////////////////////
 54     /// 平移,旋轉(zhuǎn),縮放
 55     //////////////////////////////////////////////////////////     
 56     virtual void Translate(float x, float y, float z) = 0;
 57     virtual void Translate(const Vector3f &offset) = 0;
 58     virtual void Rotate(float angle, float x, float y,float z) = 0;
 59     virtual void Scale(float x, float y, float z) = 0;
 60     virtual void Scale(const Vector3f& scale) = 0;    
 61   
 62     //////////////////////////////////////////////////////////
 63     /// 設(shè)置飛行模式參數(shù) 
 64     //////////////////////////////////////////////////////////     
 65     virtual void SetPilotView(float x,float y,float z,float roll,float pitch,float heading) = 0
 66         
 67     ////////////////////////////////////////////////////////
 68     /// 設(shè)置,獲取渲染器矩陣操作
 69     ////////////////////////////////////////////////////////    
 70     virtual void  SetTransform(const Matrix4f& mat, ENGINE_MATRIX_TYPE type) = 0;
 71     virtual const Matrix4f& GetTransform(ENGINE_MATRIX_TYPE type)const = 0
 72 
 73     ////////////////////////////////////////////////////////
 74     /// 矩陣保存 
 75     ////////////////////////////////////////////////////////        
 76     virtual void PushMatrix() = 0
 77     virtual void PopMatrix() = 0;
 78     
 79     ////////////////////////////////////////////////////////
 80     /// 啟用2d渲染 
 81     ////////////////////////////////////////////////////////     
 82     virtual void Ortho2D() = 0;     
 83     
 84     //////////////////////////////////////////////////////////
 85     /// 設(shè)置當(dāng)前渲染模式
 86     //////////////////////////////////////////////////////////    
 87     virtual void SetRenderMode(RENDER_MODE mode) = 0;
 88 
 89     //////////////////////////////////////////////////////////
 90     /// 設(shè)置,獲取清屏色
 91     //////////////////////////////////////////////////////////         
 92     virtual void  SetClearColor(const Color& color) = 0;
 93     virtual Color GetClearColor()const = 0
 94 
 95     ////////////////////////////////////////////////////////////
 96     /// 設(shè)置要清理的緩存類(lèi)型(見(jiàn):ENGINE_CLEAR_ACCUM,ENGINE_CLEAR_INDEX等) 
 97     ////////////////////////////////////////////////////////////      
 98     virtual void SetClearBuffer(long buffer_mask) = 0;
 99     
100     //////////////////////////////////////////////////////////
101     /// 渲染色設(shè)置
102     //////////////////////////////////////////////////////////         
103     virtual void SetRenderColor(const Color& color) = 0
104     void SetColor(const Color& color){SetRenderColor(color);}
105     
106     //////////////////////////////////////////////////////////
107     /// 啟用,禁止混合
108     //////////////////////////////////////////////////////////         
109     virtual void SetBlending(bool blend) = 0;  
110     virtual bool GetBlending()const = 0
111     
112     //////////////////////////////////////////////////////////
113     /// 線寬
114     //////////////////////////////////////////////////////////         
115     virtual void  SetLineWidth(float width) = 0;
116     virtual float GetMaxLineWidth()const = 0
117     virtual float GetLineWidth()const = 0
118     
119     //////////////////////////////////////////////////////////
120     /// 點(diǎn)繪制
121     //////////////////////////////////////////////////////////     
122     virtual void DrawPoint(const Vector3f &point) = 0
123     virtual void DrawPoint(float x, float y, float z) = 0;
124 
125     //////////////////////////////////////////////////////////
126     /// 線繪制
127     //////////////////////////////////////////////////////////     
128     virtual void DrawLine(const Point &from, const Point &to) = 0
129     virtual void DrawLine(const Vector2f &p1, const Vector2f &p2)  =0;        
130     virtual void DrawLine(float x1, float y1, float x2, float y2) = 0;         
131     virtual void DrawLine(const Vector3f &p1, const Vector3f &p2) = 0
132     
133     //////////////////////////////////////////////////////////
134     /// 矩形繪制 
135     //////////////////////////////////////////////////////////         
136     virtual void DrawRect(float x, float y, float width, float height) = 0
137     virtual void DrawRect(const Rectf& rect) = 0
138     virtual void DrawRect(const Recti& rect) = 0
139     virtual void FillRect(float x, float y, float width, float height)= 0
140     virtual void FillRect(const Rectf& rect) = 0
141     virtual void FillRect(const Recti& rect) = 0;
142    
143     //////////////////////////////////////////////////////////
144     /// 格子繪制 
145     //////////////////////////////////////////////////////////    
146     virtual void DrawGrid(const Point &pos, const Point &unit, const Point &num) = 0;  
147     virtual void DrawGrid(const Point& pos, const int &row, const int &col, const Point &num) = 0;      
148     
149     //////////////////////////////////////////////////////////
150     /// 三角形繪制
151     //////////////////////////////////////////////////////////      
152     virtual void DrawTriangle(const Trianglef& tri, bool filled) = 0
153     virtual void DrawTriangle(const Vector2f& p1,const Vector2f& p2,const Vector2f& p3,bool filled) = 0;  
154    
155     //////////////////////////////////////////////////////////
156     /// 園繪制
157     //////////////////////////////////////////////////////////    
158     virtual void DrawCircle(const Vector2f& center, float radius, float segments) = 0
159     virtual void DrawCircleSegment(const Vector2f& center,float radius,float t1,float t2,float segments,bool filled) = 0
160 
161     ////////////////////////////////////////////////////////////
162     /// 繪制長(zhǎng)方體(參數(shù)紋理id,長(zhǎng)方體位置,變換矩陣,大小)
163     //////////////////////////////////////////////////////////// 
164     virtual void RenderCube(int texture,const float pos[3],const float mat[12],const float sides[3]) = 0;     
165 public:    
166     ////////////////////////////////////////////////////////////
167     /// 設(shè)備預(yù)(后)更新 
168     ////////////////////////////////////////////////////////////
169     virtual void PreUpdate() = 0;
170     virtual void PostUpdate() = 0;
171 private:     
172     
173     DECLARE_OBJECT(VideoDriver)
這是初步設(shè)計(jì)的結(jié)果
以后估計(jì)會(huì)有software video driver
當(dāng)然其他相關(guān)的函數(shù)會(huì)陸續(xù)加入的

posted on 2010-04-01 21:05 ccsdu2009 閱讀(340) 評(píng)論(3)  編輯 收藏 引用 所屬分類(lèi): Game引擎
Comments
  • # re: 蓋莫游戲引擎2.1.1之渲染器設(shè)計(jì)
    Davy.xu
    Posted @ 2010-04-01 22:56
    不支持RenderTarget?
    Shader怎么辦?  回復(fù)  更多評(píng)論   
  • # re: 蓋莫游戲引擎2.1.1之渲染器設(shè)計(jì)
    ccsdu2009
    Posted @ 2010-04-02 08:33
    先簡(jiǎn)后難啊  回復(fù)  更多評(píng)論   
  • # re: 蓋莫游戲引擎2.1.1之渲染器設(shè)計(jì)
    陳梓瀚(vczh)
    Posted @ 2010-04-02 11:22
    我認(rèn)為最嚴(yán)重的問(wèn)題是不同的渲染API的最有效工作方法是不一樣的,你得連這些都抽象掉。不能僅僅抽象功能。

    這樣才能給機(jī)會(huì)給那些為你的引擎開(kāi)發(fā)新渲染API支持的時(shí)候,不會(huì)因?yàn)槟惴庋b的問(wèn)題導(dǎo)致他們喪失了利用該API的最有效率的慣用法的權(quán)利。

    所以一般來(lái)說(shuō),你只需要在場(chǎng)景里面實(shí)現(xiàn)BSP樹(shù),然后讓model.Draw變虛就好了,全過(guò)程讓渲染插件自己處理。  回復(fù)  更多評(píng)論   
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99综合在线| 欧美日本高清视频| 欧美理论在线播放| 国产精品日韩精品欧美在线| 红桃视频国产一区| 一区二区高清在线| 久久精品夜夜夜夜久久| 亚洲国产高清在线| 亚洲一区二区三区视频| 久久一综合视频| 国产精品久久一区主播| 亚洲欧洲一区二区天堂久久| 亚洲欧美日韩天堂| 亚洲大片免费看| 亚洲欧美在线磁力| 欧美国产日韩a欧美在线观看| 国产精品日韩精品欧美精品| 亚洲人成免费| 欧美制服丝袜第一页| 亚洲精品免费观看| 久久久精彩视频| 国产精品日本一区二区| 亚洲精选在线| 麻豆国产精品一区二区三区| 亚洲私人影吧| 亚洲黄色成人| 欧美一区二区福利在线| 欧美日韩另类综合| 亚洲二区在线观看| 久久精品2019中文字幕| 99视频精品在线| 欧美成年人网| 国外成人在线视频| 亚洲欧美自拍偷拍| 亚洲另类在线视频| 欧美成人中文| 在线观看日韩www视频免费| 香蕉成人伊视频在线观看 | 国产精品永久免费| 在线综合欧美| 亚洲国产日韩欧美在线动漫| 久久久国产精品亚洲一区| 国产精品一区二区在线观看网站| 在线天堂一区av电影| 亚洲国产经典视频| 麻豆精品视频在线| 狠狠色丁香婷婷综合| 欧美有码视频| 亚洲一区二区三区免费在线观看| 欧美日韩国产小视频| 亚洲精品国久久99热| 欧美成年人视频网站| 久久久久女教师免费一区| 国产一区再线| 久久精品一区二区国产| 亚洲欧美成人网| 国产精品午夜在线| 亚洲欧美一区二区原创| 在线亚洲伦理| 国产精品久久久久久久一区探花| 亚洲午夜电影在线观看| 99视频精品全国免费| 欧美日韩一区二区三区高清| 99热这里只有精品8| 亚洲黄色有码视频| 欧美激情第1页| 夜夜嗨av一区二区三区网站四季av| 亚洲国产一区二区三区高清| 欧美激情成人在线| 一片黄亚洲嫩模| 一本色道久久综合亚洲精品婷婷 | 99国产精品国产精品久久| 亚洲国产美女精品久久久久∴| 麻豆久久婷婷| 亚洲看片一区| 亚洲最新在线视频| 国产精品亚洲第一区在线暖暖韩国| 午夜精品国产精品大乳美女| 亚洲欧美日本日韩| 国产一区二区中文字幕免费看| 久久婷婷丁香| 免费观看成人网| 夜夜嗨av一区二区三区中文字幕| 日韩亚洲综合在线| 国产精品天美传媒入口| 久久国产主播| 久热成人在线视频| 99国产精品久久久久久久| 一本久久青青| 国产日韩欧美在线一区| 牛牛国产精品| 欧美日本三区| 欧美一区二区三区视频| 久久久久久久网| a4yy欧美一区二区三区| 亚洲特黄一级片| 狠狠色综合色综合网络| 91久久精品国产91久久性色tv | 一本色道久久综合一区| 国产美女精品免费电影| 蜜臀va亚洲va欧美va天堂 | 亚洲视频免费| 午夜免费日韩视频| 亚洲激情一区二区| 亚洲性视频网站| 激情懂色av一区av二区av| 亚洲人妖在线| 国产香蕉久久精品综合网| 欧美激情中文不卡| 国产精品久久亚洲7777| 欧美成年人视频网站| 国产精品theporn88| 久久午夜影视| 欧美色欧美亚洲另类二区| 久久久午夜精品| 欧美日韩视频免费播放| 久久综合中文| 欧美日韩综合精品| 免费观看国产成人| 国产精品久久久久久久电影| 欧美成在线视频| 国产精品影院在线观看| 亚洲第一主播视频| 国产午夜精品一区理论片飘花| 亚洲国产一二三| 韩国精品主播一区二区在线观看| 亚洲美女淫视频| 在线日韩中文字幕| 亚洲欧美国产三级| 一本色道久久88亚洲综合88| 久久精品国产免费| 亚洲欧美日韩综合aⅴ视频| 欧美成人乱码一区二区三区| 久久成人在线| 欧美午夜宅男影院| 亚洲国产美女| 在线播放日韩| 香蕉av福利精品导航| 亚洲私人影院| 欧美国产日韩一区二区| 久久影视精品| 国产欧美一区视频| 一区二区三区久久网| 日韩视频精品在线| 另类尿喷潮videofree | 在线欧美日韩| 欧美一区二区在线观看| 亚洲欧美成aⅴ人在线观看| 欧美成年人视频| 欧美成人在线免费观看| 国内精品美女在线观看| 午夜精品视频网站| 亚洲欧美日韩一区二区| 欧美日韩中文在线观看| 亚洲欧洲日韩综合二区| 亚洲国产91精品在线观看| 欧美中文在线字幕| 久久国产天堂福利天堂| 国产精品九九久久久久久久| 99热在这里有精品免费| 99这里只有精品| 欧美成人精品不卡视频在线观看| 美女图片一区二区| 激情欧美一区二区| 久久er精品视频| 久久久久一区二区| 国产一区二区福利| 欧美一区二区三区精品电影| 欧美一区精品| 国产日韩欧美日韩| 欧美一二区视频| 久久九九精品| 国产综合视频| 久久精品视频导航| 女人色偷偷aa久久天堂| 玉米视频成人免费看| 浪潮色综合久久天堂| 欧美ed2k| 亚洲人体偷拍| 欧美另类高清视频在线| 亚洲另类一区二区| 亚洲一区二区在线免费观看| 国产精品地址| 亚洲欧洲av一区二区| 久久国产主播| 在线观看国产精品淫| 免费成年人欧美视频| 91久久精品日日躁夜夜躁欧美| 99在线精品免费视频九九视| 欧美日韩免费在线视频| 亚洲视频一二区| 久久精视频免费在线久久完整在线看| 国产自产女人91一区在线观看| 久久久精品一区| 亚洲国产精品久久91精品| 这里只有精品丝袜| 国产伦精品一区二区三区免费| 欧美一区二区三区精品 | 欧美gay视频激情| 最近中文字幕日韩精品|