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

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>
            99精品国产在热久久婷婷| 亚洲一区美女视频在线观看免费| 一区久久精品| 黄色成人在线网址| 韩国av一区二区| 国产欧美午夜| 狠狠爱www人成狠狠爱综合网| 国产麻豆精品theporn| 国产精品中文字幕在线观看| 国产一区二区三区久久久久久久久| 国产日韩亚洲欧美综合| 韩国免费一区| 亚洲精品一线二线三线无人区| 一本色道久久综合亚洲精品婷婷 | 免费欧美电影| 久久久亚洲午夜电影| 免费观看一区| 9人人澡人人爽人人精品| 在线亚洲免费视频| 一区二区三区国产在线| 亚洲欧美日韩爽爽影院| 久久综合色播五月| 国产精品www.| 亚洲国产精品久久人人爱蜜臀 | 亚洲经典在线看| 一区二区三区免费网站| 欧美在线观看视频| 欧美成人一二三| 国产精品一区二区三区免费观看| 伊人一区二区三区久久精品| 在线亚洲精品福利网址导航| 久久人人97超碰国产公开结果| 亚洲国产成人高清精品| 亚洲先锋成人| 欧美国产日韩在线| 国产一区二区三区的电影| 日韩一级精品视频在线观看| 久久精品亚洲乱码伦伦中文 | 欧美人妖另类| 激情五月***国产精品| 亚洲午夜精品17c| 免费在线观看日韩欧美| 亚洲欧美国产精品va在线观看| 欧美.com| 国产主播一区二区三区四区| 一区二区欧美国产| 欧美成人久久| 久久精品午夜| 国产精品视频免费一区| 99视频精品全部免费在线| 久久国产精品亚洲77777| 亚洲毛片在线观看| 欧美激情按摩| 在线免费观看欧美| 久久久久久亚洲精品中文字幕| 一区二区三区四区在线| 欧美日韩国产综合在线| 亚洲美女视频在线免费观看| 免费在线一区二区| 午夜精品三级视频福利| 欧美日韩中文另类| 亚洲夜间福利| 亚洲天天影视| 国产精品视频精品视频| 午夜日韩电影| 亚洲一区二区伦理| 国产精品资源| 久久久国产成人精品| 午夜精品久久久久久久久| 国产九九精品视频| 久久米奇亚洲| 久久免费精品视频| 亚洲欧洲视频在线| 日韩视频在线观看| 欧美日韩一区二| 亚洲天堂第二页| 亚洲一区美女视频在线观看免费| 欧美色123| 久久精品国产99精品国产亚洲性色 | 国产精品久久久久99| 欧美mv日韩mv国产网站app| 久久成人资源| 国产伦精品一区二区三区| 欧美国产三区| 国产精品美腿一区在线看| 最新国产成人av网站网址麻豆| 国产精品理论片| 亚洲欧美精品中文字幕在线| 欧美一区二区三区久久精品茉莉花| 欧美午夜免费| 久久成人国产| 女同一区二区| 日韩午夜视频在线观看| 欧美美女bbbb| 久久国产天堂福利天堂| 亚洲福利视频一区| 亚洲一区中文字幕在线观看| 国产精品一区久久久| 久热精品在线视频| 亚洲夜晚福利在线观看| 久久久噜噜噜久久狠狠50岁| 日韩视频免费在线观看| 国模精品一区二区三区| 欧美国产亚洲视频| 亚洲欧美另类中文字幕| 亚洲国产高潮在线观看| 久久野战av| 久久久99国产精品免费| 亚洲私人黄色宅男| 亚洲免费av片| 亚洲激情综合| 亚洲国产日韩精品| 国产一区清纯| 国产亚洲福利| 国内一区二区在线视频观看| 欧美日韩你懂的| 欧美三级电影大全| 欧美日韩播放| 欧美日韩一区三区| 欧美日韩在线精品| 欧美色综合网| 国产欧美一区二区精品性| 国产精品久久久久久久电影| 欧美日韩精品一区二区三区| 欧美极品aⅴ影院| 欧美日韩在线不卡一区| 欧美日韩在线不卡| 国产一区 二区 三区一级| 国产色产综合产在线视频| 国产精品久久久一区二区三区| 欧美午夜精品久久久久久人妖| 国产精品白丝av嫩草影院| 国产精品毛片| 国产精品一区二区久久| 国内伊人久久久久久网站视频| 伊人成年综合电影网| 亚洲国产日韩精品| 亚洲一区二区三| 欧美一区二区三区四区在线| 久久久久国产精品一区二区| 久久中文字幕一区| 免费视频一区| 亚洲欧美一区二区原创| 久久精品国产69国产精品亚洲 | 亚洲美女中文字幕| 亚洲午夜久久久久久久久电影网| 亚欧成人精品| 99re6热在线精品视频播放速度| 亚洲精品美女久久7777777| 在线观看久久av| 欧美一区二粉嫩精品国产一线天| 日韩写真视频在线观看| 嫩模写真一区二区三区三州| 午夜在线精品偷拍| 精品福利免费观看| 久久久人成影片一区二区三区观看 | 久久久91精品国产| 欧美日韩一区二区高清| 亚洲精品一区二区三区蜜桃久| 久久国产欧美| 激情av一区| 免费在线看成人av| 欧美gay视频激情| 国产一区二区高清视频| 99精品视频免费| 亚洲国产精品嫩草影院| 久久综合伊人| 一本色道久久综合狠狠躁篇怎么玩| 欧美国产日韩一区二区三区| 欧美成人亚洲成人日韩成人| 91久久精品国产91久久| 一本色道婷婷久久欧美| 国产精品久久久久天堂| 久久香蕉国产线看观看av| 久久久99国产精品免费| 一区免费在线| 宅男噜噜噜66一区二区66| 国产精品丝袜久久久久久app| 久久成人精品| 久久婷婷国产麻豆91天堂| 亚洲精品一区二区三区不| 亚洲一区尤物| 99国产精品私拍| 国产欧美在线| 一区二区三区欧美在线| 悠悠资源网久久精品| 一片黄亚洲嫩模| 一区二区三区.www| 欧美精品一卡二卡| 久久久久这里只有精品| 国产精品亚洲综合天堂夜夜| 日韩视频中文| 一区二区三区欧美亚洲| 男同欧美伦乱| 亚洲欧洲在线一区| 9l国产精品久久久久麻豆| 欧美日本一区| 日韩亚洲视频在线| 小黄鸭精品aⅴ导航网站入口 | 日韩亚洲欧美精品|