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

Cpper
C/C++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿

     摘要: 剛給引擎設備新加了一個函數GetLuaStateOwner();用于獲取引擎中的lua上下文看起來似乎沒多大必要但是我有自己的考慮!另外:我修改了粒子腳本如下:   1   2 -- 這是蓋莫引擎中使用lua腳本的測試粒子  3   4 -- 定義粒子池粒子...  閱讀全文
posted @ 2010-02-25 13:39 ccsdu2009 閱讀(374) | 評論 (0)編輯 收藏
 
     摘要: 初步做完粒子系統想著如何從腳本中載入數據,配送方法這樣不是很好腳本我打算首先支持lua和天使腳本等引擎成熟了再支持python首先來看使用lua語言改寫上篇的粒子系統代碼.(不過鄙人的lua,python都很菜的,其原因就是一直沒有練習的機會)對于Lua,其擴展有luabind,tolua++,luaplus,前2著都與boost有關所以就使用luaplus,簡單些開始了先上lua腳本代碼(我把l...  閱讀全文
posted @ 2010-02-24 19:43 ccsdu2009 閱讀(2198) | 評論 (1)編輯 收藏
 
     摘要: 引擎的粒子系統我一直在考慮,以前也設計過,但是感覺以前做過的過于復雜,這里我本著讓粒子系統的接口盡可能的簡單,功能盡可能的強大,我把粒子系統設計成了這樣的形式: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1  2...  閱讀全文
posted @ 2010-02-24 14:56 ccsdu2009 閱讀(1494) | 評論 (3)編輯 收藏
 
今天由于要寫一些東西,遇到了需要把成員函數作為函數參數的問題
總結有以下幾個辦法:
1.使用類的靜態成員:
      最簡單的.只是這種辦法與使用普通函數沒有什么區別
2.模板的方法
 
1   template<class  T>   
2   void  Call(T* ptr,void(T::*MenFn)())   
3   {   
4      (ptr->*MenFn)();   
5   }   
   
 1 class MyClass
 2 {
 3 public:
 4     void Call()
 5     {
 6        
 7     }
 8 };
 9 
10 MyClass cs;
11 Call(&cs,&MyCall::Call);

3.  虛擬繼承的方法
 1 class Base
 2 {
 3 public:
 4     virtual void Call() = 0;
 5 };    
 6 
 7 class SubClass :public Base
 8 {
 9 public:
10     void Call(){}
11 };
12  
13 void Call(Base *ptr)
14 {
15     ptr->Call();
16 

4.use boost.

 

 1#include   <boost/bind.hpp>   
 2#include   <iostream>   
 3using   namespace   std;   
 4struct   MyClass   
 5{   
 6    void  Print(const char* str)   
 7    {   
 8        cout<<"holle "<<str<<endl;   
 9    }
   
10}
;
11
12template<class _Fun>   
13void CallBackFun(_Fun a,const char* str)   
14{   
15    t(n);   
16}
   
17 
18int   main()   
19{   
20    MyClass mc;
21    CallBackFun(boost::bind(boost::mem_fn(&MyClass::Print),&mc,_1),"world")
22    return  1;   
23}
   
24

  5.使用靜態成員函數或者聯合體模擬之

1 union
2 {
3     void(G_CALL ParticleSystem::*PhysicsThreadFun)(void *arg);
4     ThreadFun f;
5 }fn; 
6 fn.PhysicsThreadFun = &ParticleSystem::PhysicsThreadFun;
7 thread_id = CreateThread(fn.f,&ps);

6.也許.
      對loki庫不太熟悉也許上面也有答案吧
posted @ 2010-02-23 19:08 ccsdu2009 閱讀(6469) | 評論 (6)編輯 收藏
 
我所知的c++插槽系統由3個boost的,sigslot的,sigc++的
這里介紹sigc++的使用

最基本的使用方法:
1.回調函數為一般函數:
代碼如下:
 1 #include <iostream>
 2 #include <string>
 3 #include <sigc++/sigc++.h>
 4 
 5 //! 普通函數 
 6 void Print(const std::string& str)
 7 {
 8    std::cout << str;
 9 }
10 
11 int main()
12 {
13    //! 返回值void,參數const std::string&  
14    sigc::signal<voidconst std::string&> signal_print;
15    //! 鏈接函數 
16    signal_print.connect( sigc::ptr_fun(&Print));
17    //! 發射信號 
18    signal_print.emit("hello world\n");
19   
20    system("pause");
21    return 0;
22 }
2.回調函數為成員函數
 1 #include <iostream>
 2 #include <string>
 3 #include <sigc++/sigc++.h>
 4  
 5 class Printer :public sigc::trackable
 6 {
 7 public:
 8    void Work(){slot.emit("work\n");}    
 9    typedef sigc::signal<voidconst std::string&> Slot;
10    Slot slot;             
11    void Print(const std::string& str){std::cout<<str;}   
12 }; 
13  
14 int main()
15 {
16    Printer printer; 
17    Printer::Slot::iterator iter = printer.slot.connect(sigc::mem_fun(&printer,&Printer::Print));
18    printer.Work();
19    iter->disconnect();
20    printer.Work();
21    
22    system("pause");
23    return 0;
24 }
在sigc++中sigc::ptr_fun負責綁定一般函數
而sigc::men_fun負責綁定成員函數.

可以看到一般的信號插槽系統都具備以下幾個函數
a.插槽連接
b.插槽斷開
c.信號發射
當然有的插槽信號庫還提供其它一些函數
比如對信號設定優先級等等

這是簡單實用sigc++的例子
不過若論簡單性的話還是sigslot比較好,只有一個頭文件

posted @ 2010-02-22 16:42 ccsdu2009 閱讀(4101) | 評論 (7)編輯 收藏
 
游戲引擎的粒子系統設計大致有2個方式:或者是雪,雨,煙花的具體類實現,或者是類似ogre的那種由粒子發射器,粒子效果器等組成的具有簡明數學,物理意義的通用粒子系統。
蓋莫引擎采用的是類似于ogre的這種模型
粒子系統由粒子發射器,粒子效果器,粒子開發等組成。
下面這是一個粒子系統的貼圖:

這個粒子場景是采用的點狀粒子發射器+重力粒子效果器(當然這是最簡單的模式了)
由于粒子系統比較龐大,代碼還在修改中故不上代碼
posted @ 2010-02-22 14:51 ccsdu2009 閱讀(1666) | 評論 (0)編輯 收藏
 
     摘要: 如何軟件設計中總有那么幾個比較小巧卻比較有用的小段代碼比如boost中的utility蓋莫游戲引擎也一樣有幾個比較小的代碼片段:如下這是關于指針的:  1 //! 定義一個檢測指針是否為空的宏 2 /*! 3     當指針為空的話則返回指定值 4  &nb...  閱讀全文
posted @ 2010-02-10 15:17 ccsdu2009 閱讀(1527) | 評論 (3)編輯 收藏
 

剛改造了以前做的蓋莫游戲引擎渲染md2的代碼.
對于md2模型來說
一個模型由若干動畫組成
一個動畫由若干幀構成
每個動畫都有自己的名字
具體渲染的時候是對幀做插值的
具體測試例子如下:

  1 #include <cstdlib>
  2 #include <iostream>
  3 #include <GEngine/Main.hpp>
  4 
  5 using namespace std;
  6 using namespace core; 
  7 core::RefPtr<core::Image>   skyimage[5];
  8 core::RefPtr<core::Texture> skytexture[5];
  9 core::RefPtr<core::Image>   terrainimage[2];
 10 core::RefPtr<core::Texture> terraintexture[2];
 11  
 12  
 13 int main(int argc, char *argv[])
 14 {   
 15     Device *device = InitDevice("蓋莫引擎md2模型測試");
 16     device->SetClearColor(core::Color(80,90,255));
 17    
 18     //! 獲取場景管理器 
 19     RefPtr<SceneManager> scenemanager = SceneManager::GetSceneManager(); 
 20                                                                  
 21     //! 獲取資源管理器 
 22     ResourceManager* resourcemanager = device->GetResourceManager();
 23     //! 獲取天空圖片資源
 24     //! 獲取天空圖形指針 
 25     skyimage[0= resourcemanager->GetImage("sky_front","..\\image//sky//front.jpg");
 26     skyimage[1= resourcemanager->GetImage("sky_back","..\\image//sky//back.jpg");
 27     skyimage[2= resourcemanager->GetImage("sky_left","..\\image//sky//left.jpg");
 28     skyimage[3= resourcemanager->GetImage("sky_right","..\\image//sky//right.jpg");
 29     skyimage[4= resourcemanager->GetImage("sky_top","..\\image//sky//top.bmp");
 30   
 31     skytexture[0= resourcemanager->GetTexture("sky_front",skyimage[0]);
 32     skytexture[1= resourcemanager->GetTexture("sky_back",skyimage[1]);        
 33     skytexture[2= resourcemanager->GetTexture("sky_left",skyimage[2]);
 34     skytexture[3= resourcemanager->GetTexture("sky_right",skyimage[3]);   
 35     skytexture[4= resourcemanager->GetTexture("sky_top",skyimage[4]); 
 36     //! 獲取天空盒指針
 37     RefPtr<SceneNode> skybox = scenemanager->GetSkyBox(NULL,skytexture[0],skytexture[1],skytexture[2],skytexture[3],skytexture[4],500,500,600);  
 38     
 39     //! 設置地形數據
 40     terrainimage[0= resourcemanager->GetImage("terrain_image","..\\terrain//terrain.bmp");
 41     terrainimage[1= resourcemanager->GetImage("terrain_detail","..\\terrain//detail.bmp");
 42     terraintexture[0= resourcemanager->GetTexture("terrain_texture1",terrainimage[0]);
 43     terraintexture[1= resourcemanager->GetTexture("terrain_texture2",terrainimage[1]);
 44     RefPtr<Terrain>  terrain = scenemanager->GetTerrain(NULL,"..\\terrain//terrain.raw",1024,terraintexture[0],terraintexture[1]); 
 45   
 46     int height = terrain->GetHeight(440,370);
 47     height += 40;
 48     //! 獲取新的攝像機并設置為活動攝像機
 49     RefPtr<Camera> camera = scenemanager->CreateCamera("mycamera", Vector3f(10,height,10),
 50                                                                    Vector3f(512,height - 30,512),
 51                                                                    Vector3f(0,1,0));
 52     //! 設置當前活動攝像機 
 53     scenemanager->SetActiveCamera(camera);
 54     camera->SetViewport(0,0,640,480);  
 55     
 56     //! 霧設置
 57     RefPtr<Fog> fog = scenemanager->GetFog();
 58     fog->SetColor(core::Color(0.3f,0.5f,0.2f));
 59     fog->SetDensity(0.0012f);
 60     fog->SetQuality(0.004f);
 61     fog->SetBound(0.2f,1000.0f);
 62     fog->Render();
 63     
 64     RefPtr<ActiveModel3D> model = scenemanager->GetActiveModel("md2model");
 65     model->Load("..\\model\\hobgoblin.md2");
 66     RefPtr<Image>   md2image = resourcemanager->GetImage("md2image","..\\model//hobgoblin.bmp");
 67     RefPtr<Texture> md2texture = resourcemanager->GetTexture("md2texture",md2image);
 68     model->LoadTexture(md2texture);
 69     model->SetTranslate(Vector3f(180,10+terrain->GetHeight(112,512),180));
 70    
 71     std::vector<AnimationFrame> frames; 
 72     model->GetFrameList(frames);
 73  
 74     BEGIN_LOOP(device);
 75         camera->SetPerspective(45,640.0f/480.0f,6.0f,1000);
 76         camera->Render();
 77         skybox->Render();
 78         terrain->Render();
 79         model->Render();
 80         static int begin_frame = 0;
 81         static int end_frame = begin_frame+1;;
 82         static float t = 0.0f;
 83         t+=0.02;
 84         if(t>1)
 85         {
 86            t = 0
 87            end_frame++;
 88            begin_frame++;
 89         }
 90         if(begin_frame == frames.back().frame_end)
 91            end_frame = begin_frame = 0;
 92         model->SetCurrentFrame(begin_frame,end_frame,t);        
 93         
 94         static float angle = 0.0f;      
 95         skybox->SetRotate(core::AXIS_Z,angle);
 96         
 97         angle+=0.000003;
 98         if(angle>360)
 99            angle-=360;
100     END_LOOP(device);
101     
102     device->Close();
103     device->Drop();
104     
105     system("PAUSE");
106     return EXIT_SUCCESS;
107 }
108 
109 
貼圖如下:這里的模型是源于opengl游戲開發一書
再來一個Opengl3d游戲開發中士兵的模型例子如下(當然我拿走了他的槍):

我會先讓引擎具備常見的功能
之后我就會考慮加入引擎自己的亮點和消除引擎存在的Bug
當然了各類編輯器的設計也是遲早的了
再來一個機器人的md2模型
posted @ 2010-02-10 11:34 ccsdu2009 閱讀(1523) | 評論 (0)編輯 收藏
 
     摘要: 以前早就看過了如何使用opengl繪制3ds靜態對象的材料現在總把這個加入到引擎里面了具體代碼如下:  1 #include <cstdlib> 2 #include <iostream> 3 #include <GEngine/Main.hpp> 4 ...  閱讀全文
posted @ 2010-02-09 17:27 ccsdu2009 閱讀(1205) | 評論 (0)編輯 收藏
 
這是蓋莫游戲引擎中的坐標系統和輸入系統測試的小例子代碼如下所示:
 1 #include <cstdlib>
 2 #include <iostream>
 3 #include <GEngine/Main.hpp>
 4 
 5 using namespace std;
 6 using namespace core; 
 7  
 8 int main(int argc, char *argv[])
 9 {   
10     Device *device = InitDevice("蓋莫引擎坐標系統測試");
11     device->SetClearColor(core::Color(80,100,230));
12     int x,y,z;
13     //! 使用Opengl坐標系統 
14     core::CoordinateSystem cs(COORDINATE_OPENGL);
15     device->SetCoordinateSystem(cs);
16     
17     //! 啟用2D渲染模式 
18     device->Ortho2D();  
19     //! 獲取資源管理器 
20     core::ResourceManager* resmgr = device->GetResourceManager();
21     core::RefPtr<core::Text> defont= resmgr->GetText("default_font"); 
22     
23     char text[255]; 
24     char fpstext[20];
25     float fps = device->GetFPS();
26     BEGIN_LOOP(device);
27         device->GetInput()->GetMousePosition(x,y,z);
28         sprintf(text,"mouse position is :x = %d, y = %d,z = %d",x,y,z);
29         fps = device->GetFPS();
30         sprintf(fpstext,"fps is:%f",fps);
31         defont->Render(20,20,text);
32         defont->Render(540,20,fpstext);
33     END_LOOP(device);
34     
35     device->Close();
36     device->Drop();
37     
38     system("PAUSE");
39     return EXIT_SUCCESS;
40 }
41 

對于opengl坐標系,其原點位于屏幕左下角
當前字體的渲染坐標固定為x軸向右,y軸向下,以屏幕左上角為原點

 

這是貼圖 不過看上去幀速有點偏低

posted @ 2010-02-09 10:19 ccsdu2009 閱讀(240) | 評論 (0)編輯 收藏
僅列出標題
共38頁: First 30 31 32 33 34 35 36 37 38 
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲免费网址| 亚洲福利视频网站| 欧美一区二区三区另类| aa级大片欧美三级| 夜夜嗨网站十八久久| 亚洲精品美女在线观看| 美女精品在线观看| 久久久国产视频91| 美国成人直播| 欧美成人精品一区二区| 亚洲二区免费| 在线亚洲观看| 欧美伊久线香蕉线新在线| 欧美在线免费视频| 久久综合中文字幕| 欧美日本亚洲| 国产嫩草影院久久久久| 亚洲国产一区视频| 亚洲视频在线二区| 久久综合色播五月| 亚洲日本va午夜在线影院| 亚洲欧美制服中文字幕| 老鸭窝91久久精品色噜噜导演| 欧美另类人妖| 国产欧美 在线欧美| 在线日本欧美| 在线亚洲免费| 久久成人羞羞网站| 亚洲国产精品www| 亚洲在线观看视频| 久久久久免费观看| 欧美日韩欧美一区二区| 欧美色综合网| 韩国视频理论视频久久| 久久夜色精品国产欧美乱| 久久久久88色偷偷免费| 亚洲欧洲一区二区三区| 久久嫩草精品久久久精品| 国产综合色一区二区三区| 亚洲日本电影| 亚洲免费婷婷| 欧美在线91| 性一交一乱一区二区洋洋av| 一区二区久久| 国内精品久久久久影院色| 这里只有精品视频| 亚洲精品在线免费| 亚洲国产色一区| 欧美欧美午夜aⅴ在线观看| 欧美~级网站不卡| 免播放器亚洲| 亚洲激情女人| 久久精品伊人| 国产一区二区成人久久免费影院| 国产精品夜夜夜一区二区三区尤| 国产精品一区二区久久精品| 国产情人综合久久777777| 国产欧美日韩伦理| 欧美成人tv| 欧美日韩国产综合视频在线观看 | 午夜精品影院在线观看| 亚洲欧美视频在线| 亚洲欧美一区二区原创| 午夜精品久久久久久久久| 午夜在线电影亚洲一区| 久久久噜噜噜久噜久久| 亚洲一区二区三区色| 99精品欧美| 久久久一区二区三区| 亚洲第一久久影院| 亚洲国产一区二区精品专区| 一本大道久久a久久精品综合 | 久久这里只有| 亚洲二区精品| 亚洲女女女同性video| 久久久久综合一区二区三区| 欧美精品一区在线发布| 国产精品美女www爽爽爽| 国产自产在线视频一区| 99国产精品久久久久老师| 性欧美大战久久久久久久免费观看| 久久亚洲欧洲| 亚洲神马久久| 欧美国产精品中文字幕| 国产欧美精品一区aⅴ影院| 91久久久久久久久久久久久| 亚洲欧美一区二区精品久久久| 免费观看欧美在线视频的网站| 亚洲深夜av| 亚洲在线日韩| 亚洲男人第一网站| 亚洲永久免费视频| 一本久道久久综合婷婷鲸鱼| 午夜日韩在线观看| 欧美片在线观看| 亚洲福利国产| 亚洲自拍偷拍一区| 欧美精品久久久久久久久久| 国产亚洲精品aa| 亚洲深夜福利| 最新成人av网站| 久久综合精品国产一区二区三区| 国产精品国码视频| 亚洲精品护士| 亚洲电影自拍| 久久中文精品| 在线观看视频日韩| 久久电影一区| 亚洲一区二区三区视频| 欧美日韩色综合| 亚洲国产三级| 亚洲国产精品久久久久秋霞影院| 久久精品亚洲热| 欧美精品网站| 1024日韩| 欧美va亚洲va香蕉在线| 久久精品国产77777蜜臀| 国产麻豆精品久久一二三| 亚洲欧美一区二区原创| 亚洲无毛电影| 国产精品久久久久久久浪潮网站| 亚洲网友自拍| 亚洲午夜电影网| 国产精品成人在线| 午夜在线a亚洲v天堂网2018| 一本大道久久精品懂色aⅴ| 欧美亚一区二区| 亚洲欧美成aⅴ人在线观看| 欧美在线91| 在线视频你懂得一区| 夜夜嗨一区二区| 亚洲视频图片小说| 国产专区一区| 欧美国产日韩xxxxx| 欧美顶级艳妇交换群宴| 一区二区三区精密机械公司| 亚洲性线免费观看视频成熟| 国产精品私拍pans大尺度在线| 欧美在线不卡视频| 久久久久久尹人网香蕉| 亚洲精品偷拍| 99视频超级精品| 国产精自产拍久久久久久| 亚洲第一伊人| 香蕉久久夜色精品国产使用方法| 午夜亚洲性色福利视频| 亚洲欧洲日本mm| 久久精品1区| 欧美日本一道本| 狠狠色丁香久久婷婷综合_中| 一区二区三区精品视频| 亚洲国产三级| 欧美大片在线看| 一区二区亚洲精品| 日韩午夜中文字幕| 亚洲精品欧美一区二区三区| 欧美一区深夜视频| 日韩一级大片| 久久国产精品久久久久久电车| 亚洲人成毛片在线播放| 亚洲女性裸体视频| 亚洲精品视频在线| 久久国产精品99久久久久久老狼| 99av国产精品欲麻豆| 亚洲午夜激情网站| 99视频一区二区| 亚洲福利视频网| 国产乱人伦精品一区二区| 亚洲国产高清在线观看视频| 麻豆久久婷婷| 一区二区三区免费在线观看| 国产精品高清一区二区三区| 欧美成人亚洲成人日韩成人| 国产精品久久午夜夜伦鲁鲁| 亚洲啪啪91| 亚洲国产精品va在线看黑人动漫| 亚洲一区综合| 亚洲天堂网在线观看| 蜜桃精品一区二区三区| 久久精品夜色噜噜亚洲a∨| 欧美日韩精品免费观看视频| 欧美第十八页| 国产一区二区av| 免费成人在线观看视频| 国产女人18毛片水18精品| 亚洲乱码国产乱码精品精| 亚洲人体影院| 久久综合伊人| 欧美激情精品久久久| 狠狠88综合久久久久综合网| 亚洲女同精品视频| 欧美亚洲日本一区| 国产精品免费小视频| 艳妇臀荡乳欲伦亚洲一区| 亚洲福利小视频| 久久九九免费视频| 久久蜜桃精品| 一区二区三区.www| 久久精品夜色噜噜亚洲a∨| 亚洲女同同性videoxma|