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

Cpper
C/C++高級(jí)工程師 Android高級(jí)軟件工程師 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     /// 著色器編譯,檢測(cè)是否編譯
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)號(hà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 /// 定義引擎渲染者對(duì)象O(∩_∩)O~
 3 ///////////////////////////////////////////////////////
 4 class G_DLL_API Renderer : public Object 
 5 {
 6 public:
 7     ///////////////////////////////////////////////////////
 8     ///  構(gòu)造,析構(gòu)可渲染對(duì)象
 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 

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


其三:

其四:

第五個(gè):

蓋莫游戲引擎2.1.2估計(jì)會(huì)在6月份中旬發(fā)布
至于2.1.3版本將不再發(fā)布
因?yàn)榇蛩阒苯影l(fā)布2.1.4版本(屆時(shí)將根據(jù)需要對(duì)引擎框架做大量修改和完成)
posted on 2010-05-17 17:35 ccsdu2009 閱讀(1549) 評(píng)論(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一区二区三区| 国产欧亚日韩视频| 国产欧美日韩在线视频| 欧美性猛交一区二区三区精品| 欧美老女人xx| 欧美日本亚洲视频| 欧美片在线播放| 欧美精品九九99久久| 另类av一区二区| 久久免费黄色| 久久手机精品视频| 老司机一区二区三区| 免费试看一区| 欧美电影免费观看网站| 欧美国产高潮xxxx1819| 欧美成人按摩| 欧美激情一区二区久久久| 欧美成人一区二区三区| 欧美国产日产韩国视频| 欧美国产一区二区| 欧美精品免费在线观看| 欧美区日韩区| 国产精品第一区| 国产精品一二一区| 韩日精品视频一区| 亚洲风情亚aⅴ在线发布| 在线欧美福利| 亚洲黑丝一区二区| 一本色道久久99精品综合 | 国产欧美日韩视频在线观看 | 国产亚洲精品自拍| 国产综合婷婷| 亚洲国产精品久久久久婷婷老年| 亚洲三级国产| 亚洲视频在线观看网站| 午夜激情久久久| 久久另类ts人妖一区二区| 欧美成人精品| 亚洲精品午夜精品| 亚洲综合日韩中文字幕v在线| 欧美一区二区三区在线观看| 久久久综合网| 欧美日韩国产限制| 国产精品美女999| 狠狠色综合网站久久久久久久| 亚洲激情在线| 亚洲欧美在线另类| 美女日韩欧美| 日韩午夜剧场| 亚洲深夜激情| 美女免费视频一区| 亚洲精品久久久久久久久久久| 99视频精品全部免费在线| 亚洲无线一线二线三线区别av| 欧美一级淫片aaaaaaa视频| 久久久久久久性| 欧美日韩成人| 国产亚洲在线观看| 亚洲免费观看| 久久精品国产视频| 亚洲国产精品va在线看黑人| 夜久久久久久| 久久九九99视频| 欧美日韩国产三区| 狠狠干成人综合网| 亚洲特色特黄| 免费在线欧美视频| 亚洲午夜精品在线| 久久夜色精品| 欧美性大战xxxxx久久久| 极品中文字幕一区| 一区二区三区欧美成人| 老色批av在线精品| 一区二区欧美在线观看| 久久乐国产精品| 国产精品激情电影| 亚洲激情在线观看视频免费| 先锋影音久久久| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲欧美国产日韩中文字幕| 美日韩精品视频| 亚洲午夜久久久久久尤物| 美国十次成人| 国产一二精品视频| 亚洲线精品一区二区三区八戒| 欧美jizzhd精品欧美巨大免费| 亚洲五月六月| 欧美日韩不卡| 亚洲人久久久| 久久av一区二区三区漫画| 亚洲精品国产视频| 欧美在现视频| 国产精品亚洲一区| 亚洲香蕉在线观看| 亚洲黄一区二区三区| 久久久久这里只有精品| 国产精品专区第二| 亚洲在线成人| 日韩亚洲国产精品| 欧美韩国日本一区| 136国产福利精品导航| 久久国产精品久久久久久电车| 一区二区三区精品国产| 欧美激情一区二区三区四区| 亚洲高清色综合| 久久综合精品国产一区二区三区| 亚洲欧美日韩一区在线| 欧美揉bbbbb揉bbbbb| 亚洲精品一区久久久久久| 欧美大胆成人| 久久米奇亚洲| 在线免费观看日本欧美| 欧美91精品| 久久男人资源视频| 在线观看一区视频| 麻豆9191精品国产| 久久青草福利网站| 亚洲国产经典视频| 嫩草国产精品入口| 老司机aⅴ在线精品导航| 亚洲国产影院| 亚洲国产精品ⅴa在线观看| 欧美不卡在线| 亚洲免费播放| 99这里有精品| 国产精品久久久久一区二区三区 | 午夜精品久久久久久久99樱桃| 日韩亚洲一区二区| 欧美系列亚洲系列| 香蕉成人伊视频在线观看| 亚洲一区二区三区免费在线观看 | 久久www成人_看片免费不卡| 国产一区二区三区黄| 久久综合激情| 99v久久综合狠狠综合久久| 欧美区高清在线| 亚洲天堂第二页| 亚洲天堂免费在线观看视频| 国产欧美精品| 久久嫩草精品久久久精品一| 久久久久久一区二区三区| 亚洲国产另类精品专区| 亚洲国产美国国产综合一区二区| 欧美精品一卡| 中日韩视频在线观看| 亚洲一级电影| 国内精品视频久久| 欧美国产日韩在线观看| 欧美激情综合网| 午夜精品久久久久久久蜜桃app| 欧美一区二区日韩一区二区| 伊人久久综合| 亚洲精品乱码久久久久| 国产精品99一区二区| 久久久久se| 老**午夜毛片一区二区三区| 亚洲伦伦在线| 宅男精品导航| 国产一区亚洲| 亚洲日产国产精品| 国产精品日韩专区| 浪潮色综合久久天堂| 欧美粗暴jizz性欧美20| 一本久道综合久久精品| 一本色道**综合亚洲精品蜜桃冫 | 欧美另类极品videosbest最新版本| 亚洲一区二区三区精品视频| 亚洲欧美日韩成人| 亚洲国产一二三| 亚洲欧美美女| 亚洲三级国产| 午夜在线不卡| 日韩视频久久| 亚洲直播在线一区| 亚洲欧洲日本专区| 亚洲欧美日韩一区二区三区在线观看| 91久久久久久国产精品| 亚洲在线播放| 亚洲美女中文字幕| 亚洲欧美综合国产精品一区| 亚洲精品欧美| 久久精品在这里| 亚洲欧美国内爽妇网|