]> git.lizzy.rs Git - irrlicht.git/blob - source/Irrlicht/OpenGL/Renderer2D.cpp
8bedb17925604c3de10493d4af4e85e20d47652d
[irrlicht.git] / source / Irrlicht / OpenGL / Renderer2D.cpp
1 // Copyright (C) 2014 Patryk Nadrowski\r
2 // This file is part of the "Irrlicht Engine".\r
3 // For conditions of distribution and use, see copyright notice in Irrlicht.h\r
4 \r
5 #include "Renderer2D.h"\r
6 \r
7 #include "IGPUProgrammingServices.h"\r
8 #include "os.h"\r
9 \r
10 #include "Driver.h"\r
11 \r
12 #include "COpenGLCoreFeature.h"\r
13 #include "COpenGLCoreTexture.h"\r
14 #include "COpenGLCoreCacheHandler.h"\r
15 \r
16 namespace irr\r
17 {\r
18 namespace video\r
19 {\r
20 \r
21 COpenGL3Renderer2D::COpenGL3Renderer2D(const c8* vertexShaderProgram, const c8* pixelShaderProgram, COpenGL3DriverBase* driver, bool withTexture) :\r
22         COpenGL3MaterialRenderer(driver, 0, EMT_SOLID),\r
23         WithTexture(withTexture)\r
24 {\r
25 #ifdef _DEBUG\r
26         setDebugName("Renderer2D");\r
27 #endif\r
28 \r
29         int Temp = 0;\r
30 \r
31         init(Temp, vertexShaderProgram, pixelShaderProgram, false);\r
32 \r
33         COpenGL3CacheHandler* cacheHandler = Driver->getCacheHandler();\r
34 \r
35         cacheHandler->setProgram(Program);\r
36 \r
37         // These states don't change later.\r
38 \r
39         ThicknessID = getPixelShaderConstantID("uThickness");\r
40         if ( WithTexture )\r
41         {\r
42                 TextureUsageID = getPixelShaderConstantID("uTextureUsage");\r
43                 s32 TextureUnitID = getPixelShaderConstantID("uTextureUnit");\r
44 \r
45                 s32 TextureUnit = 0;\r
46                 setPixelShaderConstant(TextureUnitID, &TextureUnit, 1);\r
47 \r
48                 s32 TextureUsage = 0;\r
49                 setPixelShaderConstant(TextureUsageID, &TextureUsage, 1);\r
50         }\r
51 \r
52         cacheHandler->setProgram(0);\r
53 }\r
54 \r
55 COpenGL3Renderer2D::~COpenGL3Renderer2D()\r
56 {\r
57 }\r
58 \r
59 void COpenGL3Renderer2D::OnSetMaterial(const video::SMaterial& material,\r
60                                 const video::SMaterial& lastMaterial,\r
61                                 bool resetAllRenderstates,\r
62                                 video::IMaterialRendererServices* services)\r
63 {\r
64         Driver->getCacheHandler()->setProgram(Program);\r
65         Driver->setBasicRenderStates(material, lastMaterial, resetAllRenderstates);\r
66 \r
67         f32 Thickness = (material.Thickness > 0.f) ? material.Thickness : 1.f;\r
68         setPixelShaderConstant(ThicknessID, &Thickness, 1);\r
69 \r
70         if ( WithTexture )\r
71         {\r
72                 s32 TextureUsage = material.TextureLayer[0].Texture ? 1 : 0;\r
73                 setPixelShaderConstant(TextureUsageID, &TextureUsage, 1);\r
74         }\r
75 }\r
76 \r
77 bool COpenGL3Renderer2D::OnRender(IMaterialRendererServices* service, E_VERTEX_TYPE vtxtype)\r
78 {\r
79         return true;\r
80 }\r
81 \r
82 }\r
83 }\r