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