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

Cpper
C/C++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿
這幾天忙著做項(xiàng)目 引擎進(jìn)度緩慢
先上封轉(zhuǎn)的GLSL吧(這個(gè)是從網(wǎng)上找的一段代碼修改的)
如下:
 1 ////////////////////////////////////////////////////////////
 2 /// GL著色器基類
 3 ////////////////////////////////////////////////////////////
 4 class GLSLShader : public Object 
 5 {
 6 public:
 7     ////////////////////////////////////////////////////////
 8     /// 構(gòu)造,析構(gòu)GL著色器
 9     //////////////////////////////////////////////////////// 
10     GLSLShader();
11     virtual ~GLSLShader();
12     
13     ////////////////////////////////////////////////////////
14     /// 著色器編譯,檢測是否編譯
15     ////////////////////////////////////////////////////////     
16     virtual bool Compile() = 0;
17     virtual bool IsCompiled() const = 0
18     
19     ////////////////////////////////////////////////////////
20     /// 獲取著色器日志
21     ////////////////////////////////////////////////////////     
22     virtual void GetShaderLog(engine_string &log) const = 0;
23     
24     ////////////////////////////////////////////////////////
25     /// 獲取,設(shè)置著色器數(shù)據(jù)
26     ////////////////////////////////////////////////////////     
27     virtual void GetShaderSource(engine_string &shader) const = 0;
28     virtual void SetShaderSource(engine_string &code) = 0;
29   
30     ////////////////////////////////////////////////////////
31     /// 獲取著色器句柄(標(biāo)號)
32     ////////////////////////////////////////////////////////   
33     virtual GLuint GetHandle() const = 0;
34     
35     ////////////////////////////////////////////////////////
36     /// 獲取著色器參數(shù)  
37     ////////////////////////////////////////////////////////     
38     virtual void   GetParameter(GLenum param, GLint *data) const = 0;
39 private:
40     DECLARE_OBJECT(GLSLShader)
41 };
42 

  1 ////////////////////////////////////////////////////////////
  2 /// 定義引擎GLSL著色程序
  3 ////////////////////////////////////////////////////////////
  4 class GLSLProgram : public Object 
  5 {
  6 public:
  7     ////////////////////////////////////////////////////////
  8     /// 構(gòu)造,析構(gòu)GL著色程序
  9     ////////////////////////////////////////////////////////
 10     GLSLProgram();
 11     virtual ~GLSLProgram();
 12   
 13     ////////////////////////////////////////////////////////
 14     /// 鏈接,卸載著色程序
 15     ////////////////////////////////////////////////////////  
 16     virtual void Attach(const RefPtr<GLSLShader> &shader) = 0;
 17     virtual void Detach(const RefPtr<GLSLShader> &shader) = 0;
 18     
 19     ////////////////////////////////////////////////////////
 20     /// 鏈接著色程序
 21     ////////////////////////////////////////////////////////    
 22     virtual bool Link() = 0;
 23     
 24     ////////////////////////////////////////////////////////
 25     /// 啟用,禁止著色程序
 26     ////////////////////////////////////////////////////////        
 27     virtual void Begin() const = 0;
 28     virtual void End() const = 0;
 29 
 30     ////////////////////////////////////////////////////////
 31     /// 設(shè)置著色程序參數(shù)
 32     ////////////////////////////////////////////////////////    
 33     virtual void SendUniform(const engine_string &name, float x) = 0;
 34     virtual void SendUniform(const engine_string &name, float x, float y) = 0;
 35     virtual void SendUniform(const engine_string &name, float x, float y, float z) = 0;
 36     virtual void SendUniform(const engine_string &name, float x, float y, float z, float w) = 0;
 37     virtual void SendUniform(const engine_string &name, int x) = 0;
 38     virtual void SendUniform(const engine_string &name, int x, int y) = 0;
 39     virtual void SendUniform(const engine_string &name, int x, int y, int z) = 0;
 40     virtual void SendUniform(const engine_string &name, int x, int y, int z, int w) = 0;
 41     virtual void SendUniform(const engine_string &name, float *m, bool transp = falseint size = 4= 0;
 42 
 43     ////////////////////////////////////////////////////////
 44     /// 設(shè)置指定位置的著色程序參數(shù)
 45     ////////////////////////////////////////////////////////    
 46     virtual void SendUniform(GLuint location, float x) = 0;
 47     virtual void SendUniform(GLuint location, float x, float y) = 0;
 48     virtual void SendUniform(GLuint location, float x, float y, float z) = 0;
 49     virtual void SendUniform(GLuint location, float x, float y, float z, float w) = 0;
 50     virtual void SendUniform(GLuint location, int x) = 0;
 51     virtual void SendUniform(GLuint location, int x, int y) = 0;
 52     virtual void SendUniform(GLuint location, int x, int y, int z) = 0;
 53     virtual void SendUniform(GLuint location, int x, int y, int z, int w) = 0;
 54     virtual void SendUniform(GLuint location, float *m, bool transp = falseint size = 4= 0;
 55     
 56     ////////////////////////////////////////////////////////
 57     /// 設(shè)置給定索引的頂點(diǎn)屬性參數(shù) 
 58     ////////////////////////////////////////////////////////    
 59     virtual void SendVertexAttrib(GLuint index, int x) = 0
 60     virtual void SendVertexAttrib(GLuint index, int x, int y) = 0
 61     virtual void SendVertexAttrib(GLuint index, int x, int y, int z) = 0
 62     virtual void SendVertexAttrib(GLuint index, int x, int y, int z, int w) = 0
 63      
 64     virtual void SendVertexAttrib(GLuint index, float x) = 0
 65     virtual void SendVertexAttrib(GLuint index, float x, float y) = 0
 66     virtual void SendVertexAttrib(GLuint index, float x, float y, float z) = 0
 67     virtual void SendVertexAttrib(GLuint index, float x, float y, float z, float w) = 0;  
 68 
 69     ////////////////////////////////////////////////////////
 70     /// 獲取指定參數(shù)的位置 
 71     ////////////////////////////////////////////////////////
 72     virtual GLuint GetUniformLocation(const engine_string &name) const = 0;
 73     virtual void   SetAttributeLocation(const engine_string &name, GLuint location) = 0;
 74     virtual GLuint GetAttributeLocation(const engine_string &name) const = 0;
 75 
 76     ////////////////////////////////////////////////////////
 77     /// 獲取程序日志 
 78     ////////////////////////////////////////////////////////
 79     virtual void   GetProgramLog(engine_string &log) const = 0;
 80     
 81     ////////////////////////////////////////////////////////
 82     /// 獲取著色程序句柄 
 83     ////////////////////////////////////////////////////////    
 84     virtual GLuint GetHandle() const = 0;
 85     
 86     ////////////////////////////////////////////////////////
 87     /// 獲取著色器參數(shù) 
 88     ////////////////////////////////////////////////////////    
 89     virtual void   GetParameter(GLenum param, GLint *data) const = 0;
 90     
 91     ////////////////////////////////////////////////////////
 92     /// 著色器合法性檢查 
 93     ////////////////////////////////////////////////////////    
 94     virtual bool   IsValid() const = 0;
 95     virtual bool   IsValidProgram() const = 0;
 96     virtual void   GetAttributeInfo(GLuint location, engine_string &name, GLenum &type, GLint &size) const = 0;
 97     virtual void   GetUniformInfo(GLuint location, engine_string &name, GLenum &datatype, GLint &size) const = 0;
 98     virtual void   GetAttachedShaders(std::vector<GLuint> &shaderhandles) = 0;
 99     virtual void   GetAttachedShaders(std::vector<GLSLShader> &shaders) = 0;
100 private:
101     DECLARE_OBJECT(GLSLProgram)    
102 };
這個(gè)沒什么說的
如何獲取其指針?
從這里!
 1 ///////////////////////////////////////////////////////
 2 /// 定義引擎渲染者對象O(∩_∩)O~
 3 ///////////////////////////////////////////////////////
 4 class G_DLL_API Renderer : public Object 
 5 {
 6 public:
 7     ///////////////////////////////////////////////////////
 8     ///  構(gòu)造,析構(gòu)可渲染對象
 9     ///////////////////////////////////////////////////////    
10     Renderer();
11     virtual ~Renderer();
12 public:     
13     ///////////////////////////////////////////////////////
14     ///  獲取著色器程序指針 
15     ///////////////////////////////////////////////////////             
16     virtual RefPtr<GLSLProgram> CreateGLSLProgram(const engine_string& vertex,const engine_string& frag) = 0;     
17    
然后是使用的一段代碼(感覺越寫越復(fù)雜了)
  1     //! 獲取材質(zhì)管理器
  2     core::RefPtr<core::MaterialManager> materialmanager = resourcemanager->GetMaterialManager();    
  3     //! 獲取一個(gè)材質(zhì)指針(我們從腳本中載入材質(zhì)數(shù)據(jù)O(∩_∩)O~) 
  4     core::RefPtr<core::Material> material = materialmanager->CreateObject("material","..\\script//move_light_material.lua","material"); 
  5     //! 材質(zhì)渲染
  6     material->Render();  
  7     
  8     //! 獲取光管理器指針
  9     core::RefPtr<core::LightManager> lightmanager = resourcemanager->GetLightManager();
 10     //! 啟用光源
 11     lightmanager->EnableLight();   
 12     
 13     //! 獲取光模型指針
 14     lightmodel = lightmanager->GetLightModel(); 
 15     lightmodel->SetLocalViewer(false);
 16     lightmodel->SetAmbientColor(core::Color(0.4f,0.4f,1.0f,1.0f)); 
 17     lightmodel->Render(); 
 18     
 19     light[0= lightmanager->CreateObject("light1","..\\script//move_light_light.lua","light0");
 20     light[1= lightmanager->CreateObject("light2","..\\script//move_light_light.lua","light1");
 21     light[2= lightmanager->CreateObject("light3","..\\script//move_light_light.lua","light2");
 22     
 23     //! 獲取渲染器
 24     core::RefPtr<core::Renderer> renderer = device->GetRenderer(); 
 25     
 26     //獲取GLSL著色指針
 27     core::RefPtr<core::GLSLProgram> glsl1 = renderer->CreateGLSLProgram("..\\shader//multilight//pervertex1.vert","..\\shader//multilight//pervertex1.frag");
 28     core::RefPtr<core::GLSLProgram> glsl2 = renderer->CreateGLSLProgram("..\\shader//multilight//perpixel1.vert","..\\shader//multilight//perpixel1.frag");
 29     core::RefPtr<core::GLSLProgram> glsl3 = renderer->CreateGLSLProgram("..\\shader//multilight//pervertex3.vert","..\\shader//multilight//pervertex3.frag");
 30     core::RefPtr<core::GLSLProgram> glsl4 = renderer->CreateGLSLProgram("..\\shader//multilight//perpixel3.vert","..\\shader//multilight//perpixel3.frag");
 31     core::RefPtr<core::GLSLProgram> glsl5 = renderer->CreateGLSLProgram("..\\shader//multilight//deferredfirst.vert","..\\shader//multilight//deferredfirst.frag");
 32     core::RefPtr<core::GLSLProgram> glsl6 = renderer->CreateGLSLProgram("..\\shader//multilight//deferredsecond.vert","..\\shader//multilight//deferredsecond.frag");  
 33 
 34     glsl6->Begin();
 35     glsl6->SendUniform("Tex0",0);
 36     glsl6->SendUniform("Tex1",1);
 37     glsl6->SendUniform("Tex2",2);
 38     glsl6->End();
 39     
 40     core::RefPtr<core::Image> wallimage = imagemanager->CreateObject("wall","..\\image//wall.bmp");
 41     core::RefPtr<core::Image> cubeimage = imagemanager->CreateObject("cube","..\\image//logo.bmp");
 42     core::RefPtr<core::Texture> wall = texturemanager->CreateObject("wall",wallimage);
 43     core::RefPtr<core::Texture> cube = texturemanager->CreateObject("cubel",cubeimage);
 44     wall->Generate();
 45     cube->Generate();
 46     
 47     texid[0= wall->GetTextureId(); 
 48     texid[1= cube->GetTextureId(); 
 49 
 50     //! 獲取攝像機(jī)指針
 51     core::RefPtr<core::Camera> camera = scenemanager->GetCameraManager()->CreateCamera("camera",
 52                                                                            Vector3f(500,35,400),
 53                                                                            Vector3f(504,35,400));
 54     camera->SetViewPort(Recti(0,0,640,480));
 55     camera->SetPerspective(45.0f,640.0f/480.0f,0.1f,100.0f);
 56  
 57     BEGIN_LOOP(device)
 58        videodriver->SetClearBuffer(ENGINE_CLEAR_COLOR | ENGINE_CLEAR_DEPTH);
 59        
 60        if(input->IsPressedKey(KEY_M) == true)
 61            movelights = !movelights;
 62        if(input->IsPressedKey(KEY_SPACE) == true)
 63            move = !move;
 64        if(input->IsPressedKey(KEY_R) == true)     
 65            rotation = !rotation;           
 66        if(input->IsPressedKey(KEY_B) == true)      
 67            bg = !bg;
 68        if(input->IsPressedKey(KEY_KP_0) == true
 69        {    
 70            movz = 0.0f;
 71            roty = 0.0f;
 72            movl = 0.0f;
 73        }
 74        if(input->IsPressedKey(KEY_U) == true
 75        {
 76            renderer->DisableGLSL();
 77            lightmanager->DisableLight(); 
 78            rendermode = 0;
 79        }
 80        if(input->IsPressedKey(KEY_H) == true
 81        {
 82            renderer->DisableGLSL();
 83            lightmanager->EnableLight();
 84            rendermode = 0;
 85        }
 86        if(input->IsPressedKey(KEY_K) == true
 87        {
 88            renderer->DisableGLSL();
 89            lightmanager->EnableLight();
 90            multish = 0;
 91            rendermode = 1;
 92        }
 93        if(input->IsPressedKey(KEY_S) == true
 94        {
 95            multish = glsl1->GetHandle(); 
 96            rendermode = 1;
 97        }
 98        if(input->IsPressedKey(KEY_T) == true
 99        {
100            multish = glsl2->GetHandle(); 
101            rendermode = 1;
102        }
103        if(input->IsPressedKey(KEY_L) == true
104        {
105             glsl3->Begin(); 
106             rendermode = 0;
107        }
108        if(input->IsPressedKey(KEY_O) == true
109        {
110            glsl4->Begin(); 
111            rendermode = 0;
112        }
113 
114        interval = 16
115  
116         if (move)
117             movz += 0.0025 * interval;
118         if (rotation)
119             roty += 0.1 * interval;
120         if (movelights)
121             movl += 0.0025 * interval;
122          
123         DrawLight(light,movl); 
124  
125         videodriver->SetClearBuffer(ENGINE_CLEAR_COLOR | ENGINE_CLEAR_DEPTH);
126         glLoadIdentity();
127         videodriver->SetPilotView(0,2,10,0,0,-15);
128         switch(rendermode) 
129         {
130         case 0
131             DrawScene(bg,texid[0],texid[1],roty,movz);
132             break;
133         case 1
134             if (!multish)
135             {
136                 for (i = 1; i < NUM_LIGHTS; i++)
137                     light[i]->SetVisible(false);
138             }
139 
140             glUseProgram(multish);
141             for (i = 0; i < NUM_LIGHTS; i++
142             {
143                 if (i > 0
144                 {
145                     lightmodel->Render();
146                     videodriver->SetBlending(true);
147                 }
148                 light[i]->Render();
149                 DrawScene(bg,texid[0],texid[1],roty,movz);
150             }
151 
152             videodriver->SetBlending(false);
153 
154             if (!multish) 
155             {
156                 for (i = 1; i < NUM_LIGHTS; i++)
157                     {light[i]->SetVisible(true);light[i]->Render();} 
158             }
159             break;
160         }
161         
162         DrawLights(light);
163         
164     END_LOOP(device)
165 

下面是幾張對應(yīng)的圖片


其三:

其四:

第五個(gè):

蓋莫游戲引擎2.1.2估計(jì)會在6月份中旬發(fā)布
至于2.1.3版本將不再發(fā)布
因?yàn)榇蛩阒苯影l(fā)布2.1.4版本(屆時(shí)將根據(jù)需要對引擎框架做大量修改和完成)
posted on 2010-05-17 17:35 ccsdu2009 閱讀(1549) 評論(0)  編輯 收藏 引用 所屬分類: Game引擎
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久成人精品电影| 欧美网站在线观看| 免费人成精品欧美精品| 国产精品伦理| 亚洲图色在线| 日韩视频亚洲视频| 欧美精品激情在线观看| 亚洲国产欧美在线| 欧美黑人一区二区三区| 老色鬼久久亚洲一区二区 | 亚洲精品乱码久久久久久久久 | 性欧美xxxx大乳国产app| 99国产精品视频免费观看一公开| 欧美激情精品久久久久久免费印度| 激情伊人五月天久久综合| 久久精品视频免费| 久久久www成人免费无遮挡大片 | 伊人精品视频| 蜜臀va亚洲va欧美va天堂| 久久久久久九九九九| 亚洲女人天堂成人av在线| 国产精品久久久久高潮| 午夜精品国产精品大乳美女| 亚洲欧美日韩一区二区在线| 国产精品尤物| 久久久久久久久岛国免费| 久久久噜噜噜久久| 日韩午夜av| 亚洲天堂男人| 国产资源精品在线观看| 欧美国产日韩一区| 欧美日韩国产综合在线| 亚洲欧美在线一区| 久久久久久久久蜜桃| 亚洲乱亚洲高清| 亚洲一区二区三区精品在线观看| 国产一区二区久久| 亚洲国产第一| 欧美日韩国产色视频| 欧美在线观看视频一区二区三区 | 久久久91精品| 亚洲伦理精品| 欧美一区二区三区男人的天堂 | 亚洲欧美国产精品专区久久| 亚洲一区二区三区四区视频| 狠狠色丁香婷婷综合影院| 亚洲国产精品久久久久秋霞蜜臀| 欧美日韩国产综合视频在线观看中文| 亚洲欧美日韩一区| 六十路精品视频| 亚洲欧美日韩电影| 牛人盗摄一区二区三区视频| 亚洲主播在线观看| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲一级在线| 麻豆精品在线播放| 欧美主播一区二区三区| 欧美日韩91| 欧美黄免费看| 国内精品亚洲| 亚洲一区二区3| 夜夜嗨av一区二区三区| 久久影视精品| 久久久99爱| 国产精品久久一卡二卡| 亚洲日本免费| 亚洲国内精品| 久久久久成人精品| 欧美一级专区| 国产精品成人免费| 亚洲精品一区在线| 亚洲欧洲精品一区| 久久九九电影| 久久久久久有精品国产| 国产精品毛片a∨一区二区三区|国 | 中国成人亚色综合网站| 亚洲成色最大综合在线| 先锋亚洲精品| 亚洲欧美日韩在线不卡| 欧美日韩国产限制| 亚洲黄一区二区三区| 在线观看视频日韩| 久久天天躁狠狠躁夜夜av| 欧美影视一区| 国产精品免费区二区三区观看| 亚洲精选91| 亚洲无限av看| 欧美性猛交xxxx免费看久久久| 亚洲精品美女久久7777777| 亚洲免费观看高清完整版在线观看熊 | 久久琪琪电影院| 老司机午夜精品视频| 狠狠综合久久| 免费不卡亚洲欧美| 欧美激情精品久久久久久| 亚洲国产一二三| 欧美不卡视频一区发布| 91久久久精品| 亚洲特级毛片| 国产精品视频观看| 亚洲一区二区三区四区五区黄| 亚洲欧美日韩一区二区三区在线观看 | 欧美xx视频| 亚洲精品一区二区三区婷婷月 | 欧美一区免费视频| 国产一区二区精品丝袜| 久久久久久久久伊人| 欧美国产日韩a欧美在线观看| 亚洲人成绝费网站色www| 欧美激情视频在线播放 | 国产精品一区久久久久| 午夜欧美电影在线观看| 国产精品午夜国产小视频| 亚洲男人第一av网站| 久久久国产视频91| 亚洲激情视频在线| 欧美深夜影院| 欧美中文在线观看| 亚洲高清视频中文字幕| 亚洲影院色无极综合| 国产日韩欧美综合| 久久综合给合久久狠狠狠97色69| 亚洲黄色一区| 欧美在线观看一区二区三区| 黄色小说综合网站| 欧美黄在线观看| 午夜一级久久| 91久久在线观看| 国产精品久久久久久久免费软件| 欧美中文字幕在线播放| 亚洲人体一区| 久久久精彩视频| 一本色道久久综合亚洲二区三区| 国产欧美一区二区精品忘忧草| 蜜臀久久99精品久久久久久9 | 欧美日韩在线大尺度| 久久久久久久高潮| 亚洲精品之草原avav久久| 国产精品视频第一区| 欧美成人免费小视频| 亚洲欧美中日韩| 亚洲人成网站精品片在线观看| 欧美在线三区| 亚洲图片在区色| 亚洲经典自拍| 国模私拍一区二区三区| 欧美午夜精品久久久久久人妖| 久久噜噜噜精品国产亚洲综合| 亚洲视频一区二区免费在线观看| 亚洲电影天堂av| 久久综合狠狠| 欧美在线在线| 亚洲男人的天堂在线观看| 亚洲日本aⅴ片在线观看香蕉| 国产欧美日本| 国产精品丝袜xxxxxxx| 欧美日韩第一区日日骚| 免费视频一区| 久久久久久久久久久久久女国产乱 | 91久久精品国产91性色| 久久精品视频在线看| 性娇小13――14欧美| 这里只有视频精品| 99精品99| 亚洲乱码国产乱码精品精| 亚洲国产精品嫩草影院| 韩国视频理论视频久久| 国产日韩欧美三区| 国产伦精品一区二区三区视频孕妇| 欧美日韩在线不卡| 欧美午夜精品一区| 国产精品久久久久9999高清 | 亚洲电影在线看| 一区在线免费观看| 欧美一区二区三区免费视频| 一区二区激情视频| 夜夜嗨av色综合久久久综合网| 91久久精品一区二区别| 欧美激情视频给我| 亚洲国产欧美不卡在线观看| 欧美高清在线视频| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美顶级大胆免费视频| 欧美成人日本| 亚洲欧洲日产国产综合网| 最新国产成人av网站网址麻豆| 亚洲国产天堂网精品网站| 亚洲国产精品久久久久婷婷老年 | 日韩午夜剧场| 亚洲深夜激情| 亚洲欧美日韩综合aⅴ视频| 亚洲一区免费| 久久九九免费| 欧美国产精品劲爆| 亚洲欧洲一区二区三区久久| 亚洲日韩成人| 亚洲欧美另类中文字幕| 久久久无码精品亚洲日韩按摩| 免费亚洲电影| 国产精品国码视频|