@@ -1,7 +1,7 @@ | |||
| |||
Microsoft Visual Studio Solution File, Format Version 12.00 | |||
# Visual Studio 2013 | |||
VisualStudioVersion = 12.0.31101.0 | |||
VisualStudioVersion = 12.0.21005.1 | |||
MinimumVisualStudioVersion = 10.0.40219.1 | |||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "deushax", "..\games\deushax\deushax.vcxproj", "{EF1A4E80-63FA-4EB0-B834-12B6C500F31C}" | |||
EndProject | |||
@@ -757,97 +757,91 @@ Global | |||
{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Release|x64.ActiveCfg = Release|x64 | |||
{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Release|x64.Build.0 = Release|x64 | |||
{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Release|Xbox 360.ActiveCfg = Release|Win32 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Debug|ORBIS.ActiveCfg = Debug|ORBIS | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Debug|ORBIS.Build.0 = Debug|ORBIS | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Debug|ORBIS.ActiveCfg = Debug|Win32 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Debug|Win32.ActiveCfg = Debug|Win32 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Debug|Win32.Build.0 = Debug|Win32 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Debug|x64.ActiveCfg = Debug|x64 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Debug|x64.Build.0 = Debug|x64 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Debug|Xbox 360.ActiveCfg = Debug|Xbox 360 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Debug|Xbox 360.Build.0 = Debug|Xbox 360 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Debug|Xbox 360.Deploy.0 = Debug|Xbox 360 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Release|ORBIS.ActiveCfg = Release|ORBIS | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Release|ORBIS.Build.0 = Release|ORBIS | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Debug|Xbox 360.ActiveCfg = Debug|Win32 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Release|ORBIS.ActiveCfg = Release|Win32 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Release|Win32.ActiveCfg = Release|Win32 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Release|Win32.Build.0 = Release|Win32 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Release|x64.ActiveCfg = Release|x64 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Release|x64.Build.0 = Release|x64 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Release|Xbox 360.ActiveCfg = Release|Xbox 360 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Release|Xbox 360.Build.0 = Release|Xbox 360 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Release|Xbox 360.Deploy.0 = Release|Xbox 360 | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Release|Xbox 360.ActiveCfg = Release|Win32 | |||
EndGlobalSection | |||
GlobalSection(SolutionProperties) = preSolution | |||
HideSolutionNode = FALSE | |||
EndGlobalSection | |||
GlobalSection(NestedProjects) = preSolution | |||
{928A359C-9C41-400A-8D2D-A054B33A79F5} = {5F1AAF03-7202-4C07-B99F-EB397105B1B7} | |||
{9EA99B18-D352-47F6-BC04-A0B49CAA2772} = {5F1AAF03-7202-4C07-B99F-EB397105B1B7} | |||
{0A1651FC-322B-4B04-82CB-28E9046D9383} = {5F1AAF03-7202-4C07-B99F-EB397105B1B7} | |||
{E27FDF36-50C4-4ED2-8CF5-A20FED016910} = {5F1AAF03-7202-4C07-B99F-EB397105B1B7} | |||
{B583BBFF-BE97-4F4E-BA1E-1F978A31EAB0} = {5F1AAF03-7202-4C07-B99F-EB397105B1B7} | |||
{454DE15C-9063-4EB1-AD6C-77D7150F15DF} = {5F1AAF03-7202-4C07-B99F-EB397105B1B7} | |||
{2F87CEAB-4818-443C-A5E3-6C34E7D967EC} = {1DFE1729-4F1B-47CA-9819-72431FE14E25} | |||
{33704AA4-F2B5-4138-A40D-E3E77F89ED46} = {1DFE1729-4F1B-47CA-9819-72431FE14E25} | |||
{8C77EAA8-1077-4EF7-AE53-97C6C60A3601} = {1DFE1729-4F1B-47CA-9819-72431FE14E25} | |||
{50509BA3-D27B-4FAC-9772-9EC76146F709} = {1DFE1729-4F1B-47CA-9819-72431FE14E25} | |||
{65114D40-9450-4B2D-B051-7A75E97C88E1} = {1DFE1729-4F1B-47CA-9819-72431FE14E25} | |||
{08C6A854-533D-4A1E-924E-C4A62281869F} = {928A359C-9C41-400A-8D2D-A054B33A79F5} | |||
{9C66B179-0737-4BDA-AB42-2ADE478A9008} = {08C6A854-533D-4A1E-924E-C4A62281869F} | |||
{EF1A4E80-63FA-4EB0-B834-12B6C500F31C} = {08C6A854-533D-4A1E-924E-C4A62281869F} | |||
{17F0F184-4436-4D08-B8AA-16572EA238DB} = {2F87CEAB-4818-443C-A5E3-6C34E7D967EC} | |||
{9C66B179-0737-4BDA-AB42-2ADE478A9008} = {08C6A854-533D-4A1E-924E-C4A62281869F} | |||
{08C6A854-533D-4A1E-924E-C4A62281869F} = {928A359C-9C41-400A-8D2D-A054B33A79F5} | |||
{2F87CEAB-4818-443C-A5E3-6C34E7D967EC} = {1DFE1729-4F1B-47CA-9819-72431FE14E25} | |||
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA} = {1AFD580B-98B8-4689-B661-38C41132C60E} | |||
{83D3B207-C601-4025-8F41-01DEDC354661} = {1AFD580B-98B8-4689-B661-38C41132C60E} | |||
{D84021CA-B233-4E0F-8A52-071B83BBCCC4} = {1AFD580B-98B8-4689-B661-38C41132C60E} | |||
{8F59A635-0240-4D7F-A80D-050C3F1670C2} = {E4DFEBF9-C310-462F-9876-7EB59C1E4D4E} | |||
{E4DFEBF9-C310-462F-9876-7EB59C1E4D4E} = {1AFD580B-98B8-4689-B661-38C41132C60E} | |||
{9E62F2FE-3408-4EAE-8238-FD84238CEEDA} = {1AFD580B-98B8-4689-B661-38C41132C60E} | |||
{962D4E25-45D3-4ACE-8C02-69FA3713ABD4} = {E4DFEBF9-C310-462F-9876-7EB59C1E4D4E} | |||
{1782F849-B6E1-466D-9F02-A751F3F8712C} = {E4DFEBF9-C310-462F-9876-7EB59C1E4D4E} | |||
{5A27FF18-A1EC-49BE-9455-415F1C701153} = {E4DFEBF9-C310-462F-9876-7EB59C1E4D4E} | |||
{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3} = {E4DFEBF9-C310-462F-9876-7EB59C1E4D4E} | |||
{B1E10086-A1DA-401A-834D-969C9DBB5CC1} = {B6297FF2-63D0-41EE-BE13-EFF720C9B0FA} | |||
{8F59A635-0240-4D7F-A80D-050C3F1670C2} = {E4DFEBF9-C310-462F-9876-7EB59C1E4D4E} | |||
{E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} = {65FD48E9-C936-4A23-AD46-BF738B6D4733} | |||
{B6297FF2-63D0-41EE-BE13-EFF720C9B0FA} = {65FD48E9-C936-4A23-AD46-BF738B6D4733} | |||
{B92ABADC-45BE-4CC5-B724-9426053123A1} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{1C5B8702-290C-42DA-AA9E-671348F5B747} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{33704AA4-F2B5-4138-A40D-E3E77F89ED46} = {1DFE1729-4F1B-47CA-9819-72431FE14E25} | |||
{BCEE0132-8E24-49BE-AFEB-96DAD14396BA} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{834852DB-EDB6-4FD0-BCF9-45CD01126962} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{572E5B9C-7E19-489C-BD8A-E8401CFBBC47} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{81C83B42-D00A-4FA3-9A3D-80F9D46524BF} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{32F3F8CF-D22E-45E4-BEB8-AD909E8C5515} = {33704AA4-F2B5-4138-A40D-E3E77F89ED46} | |||
{8C77EAA8-1077-4EF7-AE53-97C6C60A3601} = {1DFE1729-4F1B-47CA-9819-72431FE14E25} | |||
{EE203B88-44CF-4859-9D42-7A5F40FECB52} = {8C77EAA8-1077-4EF7-AE53-97C6C60A3601} | |||
{B357514A-7881-422D-8358-161B689E7620} = {3D341D8A-E400-4B1D-BC05-B5C35487D9B5} | |||
{2195FB18-53BF-48AF-96B6-9BD242924EA5} = {3D341D8A-E400-4B1D-BC05-B5C35487D9B5} | |||
{4C4BD478-3767-4C27-BD91-DAAFE7CD03A2} = {3D341D8A-E400-4B1D-BC05-B5C35487D9B5} | |||
{587FCCE9-1D8D-4398-B8B6-E8F4E9A92233} = {B357514A-7881-422D-8358-161B689E7620} | |||
{9EA99B18-D352-47F6-BC04-A0B49CAA2772} = {5F1AAF03-7202-4C07-B99F-EB397105B1B7} | |||
{EE203B88-44CF-4859-9D42-7A5F43FECB52} = {9EA99B18-D352-47F6-BC04-A0B49CAA2772} | |||
{25493FC8-75AC-4703-AD58-AB0C4A0FB79C} = {9EA99B18-D352-47F6-BC04-A0B49CAA2772} | |||
{6BF81B39-EDC2-4127-9982-C2D8ABEA95AF} = {9EA99B18-D352-47F6-BC04-A0B49CAA2772} | |||
{EE203B88-44CF-4829-9D42-7A5F43FECB52} = {9EA99B18-D352-47F6-BC04-A0B49CAA2772} | |||
{7422B977-CA61-49BF-A586-F57B6FF9BD64} = {9EA99B18-D352-47F6-BC04-A0B49CAA2772} | |||
{DB344310-4938-4294-AEE2-18512454585D} = {9EA99B18-D352-47F6-BC04-A0B49CAA2772} | |||
{EE203B88-44CF-4859-9D42-7A5F45FEDB52} = {9EA99B18-D352-47F6-BC04-A0B49CAA2772} | |||
{EE203B88-44CF-4859-9D42-7A4F43FEDB52} = {9EA99B18-D352-47F6-BC04-A0B49CAA2772} | |||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E} = {B6297FF2-63D0-41EE-BE13-EFF720C9B0FA} | |||
{EE203B88-44CF-4859-9D42-7A1F43FECB52} = {B6297FF2-63D0-41EE-BE13-EFF720C9B0FA} | |||
{BCEE0132-8E24-49BE-AFEB-96DAD14396BA} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{0A1651FC-322B-4B04-82CB-28E9046D9383} = {5F1AAF03-7202-4C07-B99F-EB397105B1B7} | |||
{B1E10086-A1DA-401A-834D-969C9DBB5CC1} = {B6297FF2-63D0-41EE-BE13-EFF720C9B0FA} | |||
{A69411B3-6DE8-404E-8E70-0D3375A7492A} = {0A1651FC-322B-4B04-82CB-28E9046D9383} | |||
{928A359C-9C41-400A-8D2D-A054B33A79F5} = {5F1AAF03-7202-4C07-B99F-EB397105B1B7} | |||
{E27FDF36-50C4-4ED2-8CF5-A20FED016910} = {5F1AAF03-7202-4C07-B99F-EB397105B1B7} | |||
{C2E01551-B636-4324-8461-71811DF6FBB5} = {E27FDF36-50C4-4ED2-8CF5-A20FED016910} | |||
{B0A53D75-CBB4-4FDF-93AC-2D12A79ADA0E} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{5A77DCDD-2CBA-43E9-8B45-00C281443F77} = {0A1651FC-322B-4B04-82CB-28E9046D9383} | |||
{834852DB-EDB6-4FD0-BCF9-45CD01126962} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{B583BBFF-BE97-4F4E-BA1E-1F978A31EAB0} = {5F1AAF03-7202-4C07-B99F-EB397105B1B7} | |||
{C2E01551-B636-4324-8461-71811DF6FBB5} = {E27FDF36-50C4-4ED2-8CF5-A20FED016910} | |||
{FAF82AD2-D9F4-4694-9A01-103BC5B771B4} = {B583BBFF-BE97-4F4E-BA1E-1F978A31EAB0} | |||
{7CE9FE12-E4AB-4A22-90D4-2C15F0C30D4E} = {B6297FF2-63D0-41EE-BE13-EFF720C9B0FA} | |||
{25493FC8-75AC-4703-AD58-AB0C4A0FB79C} = {9EA99B18-D352-47F6-BC04-A0B49CAA2772} | |||
{6BF81B39-EDC2-4227-9982-C2D8ABEA95AF} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{6BF81B39-EDC2-4127-9982-C2D8ABEA95AF} = {9EA99B18-D352-47F6-BC04-A0B49CAA2772} | |||
{AA376B9B-484B-4DC4-982F-6CFA645E441E} = {F7D4A671-612F-4FF4-883F-2097697694B7} | |||
{F7D4A671-612F-4FF4-883F-2097697694B7} = {E5C5E320-C077-4362-9A3F-3920C6447601} | |||
{572E5B9C-7E19-489C-BD8A-E8401CFBBC47} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{E05E23A5-67DE-42B5-98A3-E63CCE0CC0AF} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{52493826-AC00-470B-A745-4F602529B3B0} = {B583BBFF-BE97-4F4E-BA1E-1F978A31EAB0} | |||
{9F291982-8C81-4105-BF39-16844648E55F} = {B583BBFF-BE97-4F4E-BA1E-1F978A31EAB0} | |||
{950EDCC1-DF6A-4A75-B083-DFE98E7DD34F} = {B583BBFF-BE97-4F4E-BA1E-1F978A31EAB0} | |||
{50509BA3-D27B-4FAC-9772-9EC76146F709} = {1DFE1729-4F1B-47CA-9819-72431FE14E25} | |||
{F7D4A671-612F-4FF4-883F-2097697694B7} = {E5C5E320-C077-4362-9A3F-3920C6447601} | |||
{AA376B9B-484B-4DC4-982F-6CFA645E441E} = {F7D4A671-612F-4FF4-883F-2097697694B7} | |||
{5D994A3B-83BF-4FCB-9AC1-E7B642B46FEA} = {50509BA3-D27B-4FAC-9772-9EC76146F709} | |||
{454DE15C-9063-4EB1-AD6C-77D7150F15DF} = {5F1AAF03-7202-4C07-B99F-EB397105B1B7} | |||
{C3E2D690-F2B4-4A11-B317-D5CB8EF9561A} = {454DE15C-9063-4EB1-AD6C-77D7150F15DF} | |||
{EE203B88-44CF-4829-9D42-7A5F43FECB52} = {9EA99B18-D352-47F6-BC04-A0B49CAA2772} | |||
{7422B977-CA61-49BF-A586-F57B6FF9BD64} = {9EA99B18-D352-47F6-BC04-A0B49CAA2772} | |||
{DB344310-4938-4294-AEE2-18512454585D} = {9EA99B18-D352-47F6-BC04-A0B49CAA2772} | |||
{2195FB18-53BF-48AF-96B6-9BD242924EA5} = {3D341D8A-E400-4B1D-BC05-B5C35487D9B5} | |||
{FFF58874-D460-41E6-AD65-DBFEC6E47A94} = {2195FB18-53BF-48AF-96B6-9BD242924EA5} | |||
{E4DFEBF9-C310-462F-9876-7EB59C1E4D4E} = {1AFD580B-98B8-4689-B661-38C41132C60E} | |||
{EE203B88-44CF-4859-9D42-7A5F45FEDB52} = {9EA99B18-D352-47F6-BC04-A0B49CAA2772} | |||
{F59FA82C-DDB9-4EE2-80AE-CB0E4C6567A4} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{4C4BD478-3767-4C27-BD91-DAAFE7CD03A2} = {3D341D8A-E400-4B1D-BC05-B5C35487D9B5} | |||
{73F1A804-1116-46C3-922A-9C0ADEB33F52} = {4C4BD478-3767-4C27-BD91-DAAFE7CD03A2} | |||
{B6297FF2-63D0-41EE-BE13-EFF720C9B0FA} = {65FD48E9-C936-4A23-AD46-BF738B6D4733} | |||
{EE203B88-44CF-4859-9D42-7A4F43FEDB52} = {9EA99B18-D352-47F6-BC04-A0B49CAA2772} | |||
{81C83B42-D00A-4FA3-9A3D-80F9D46524BF} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | |||
{65114D40-9450-4B2D-B051-7A75E97C88E1} = {1DFE1729-4F1B-47CA-9819-72431FE14E25} | |||
{B9A255A0-2B92-4801-AF6C-354535A6E105} = {65114D40-9450-4B2D-B051-7A75E97C88E1} | |||
EndGlobalSection | |||
EndGlobal |
@@ -307,7 +307,7 @@ void BtPhysTest::TickGame(float seconds) | |||
if (!m_init_status) | |||
{ | |||
if (g_renderer) | |||
if (Renderer::GetCount()) | |||
InitApp(); | |||
return; | |||
} | |||
@@ -162,7 +162,7 @@ void MeshViewer::Start() | |||
m_entities << (m_file_loader = new DefaultThreadManager(4, 0)); | |||
//Scene setup | |||
m_ssetup_file_name = "data/meshviewer.init.lua"; | |||
m_ssetup_file_name = "../data/meshviewer.init.lua"; | |||
UpdateSceneSetup(); | |||
//Mesh file | |||
@@ -394,6 +394,12 @@ int main(int argc, char **argv) | |||
new MeshViewer(argv[1]); | |||
else | |||
new MeshViewer(); | |||
/* | |||
//SceneDisplay* display = new ApplicationDisplay("newDisplay", ivec2(800, 600)); | |||
//SceneDisplay::Add(display); | |||
//Scene::GetScene(Scene::GetCount() - 1).SetDisplay(display); | |||
*/ | |||
app.Run(); | |||
return EXIT_SUCCESS; | |||
@@ -932,7 +938,7 @@ void MeshViewer::Draw(float seconds, Scene &scene) | |||
m_texture_shader->SetUniform(m_texture_uni, m_default_texture->GetTexture(), 0); | |||
#endif //!HAS_WEB && WITH_TEXTURE | |||
g_renderer->SetClearColor(m_ssetup->m_clear_color); | |||
Renderer::Get()->SetClearColor(m_ssetup->m_clear_color); | |||
for (int i = 0; i < m_gizmos.Count(); ++i) | |||
{ | |||
@@ -1043,7 +1049,7 @@ void MeshViewer::Draw(float seconds, Scene &scene) | |||
mat4 new_proj = mat_obj_offset * mat_count_offset * mat_align * mat_count_scale * save_proj; | |||
m_camera->SetProjection(new_proj); | |||
m_meshes[i].m1->Render(scene, m_mat); | |||
g_renderer->Clear(ClearMask::Depth); | |||
Renderer::Get()->Clear(ClearMask::Depth); | |||
} | |||
m_camera->SetProjection(save_proj); | |||
#else | |||
@@ -93,7 +93,7 @@ public: | |||
m_ready = true; | |||
} | |||
g_renderer->SetClearColor(vec4(0.0f, 0.0f, 0.0f, 1.0f)); | |||
Renderer::Get()->SetClearColor(vec4(0.0f, 0.0f, 0.0f, 1.0f)); | |||
m_shader->Bind(); | |||
m_vdecl->SetStream(m_vbo, m_coord, m_color); | |||
@@ -126,7 +126,7 @@ public: | |||
if (!m_ready) | |||
{ | |||
g_renderer->SetClearColor(vec4(0.0f, 0.0f, 0.0f, 1.0f)); | |||
Renderer::Get()->SetClearColor(vec4(0.0f, 0.0f, 0.0f, 1.0f)); | |||
/* Upload vertex data to GPU */ | |||
for (int i = 0; i < m_gears.Count(); i++) | |||
@@ -70,7 +70,7 @@ public: | |||
if (!m_ready) | |||
{ | |||
g_renderer->SetClearColor(vec4(0.0f, 0.0f, 0.0f, 1.0f)); | |||
Renderer::Get()->SetClearColor(vec4(0.0f, 0.0f, 0.0f, 1.0f)); | |||
m_ready = true; | |||
} | |||
@@ -189,7 +189,7 @@ public: | |||
m_ready = true; | |||
} | |||
g_renderer->SetClearColor(vec4(0.0f, 0.0f, 0.0f, 1.0f)); | |||
Renderer::Get()->SetClearColor(vec4(0.0f, 0.0f, 0.0f, 1.0f)); | |||
m_shader->Bind(); | |||
m_vdecl->SetStream(m_vbo, m_coord, m_color); | |||
@@ -78,7 +78,7 @@ public: | |||
RenderContext rc; | |||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | |||
rc.SetClearDepth(1.f); | |||
g_renderer->Clear(ClearMask::Color | ClearMask::Depth); | |||
Renderer::Get()->Clear(ClearMask::Color | ClearMask::Depth); | |||
} | |||
m_fbo->Unbind(); | |||
@@ -145,7 +145,7 @@ public: | |||
RenderContext rc; | |||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | |||
rc.SetClearDepth(1.f); | |||
g_renderer->Clear(ClearMask::Color | ClearMask::Depth); | |||
Renderer::Get()->Clear(ClearMask::Color | ClearMask::Depth); | |||
} | |||
m_fbos.Last().m1->Unbind(); | |||
} | |||
@@ -156,7 +156,7 @@ public: | |||
RenderContext rc; | |||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | |||
rc.SetClearDepth(1.f); | |||
g_renderer->Clear(ClearMask::Color | ClearMask::Depth); | |||
Renderer::Get()->Clear(ClearMask::Color | ClearMask::Depth); | |||
} | |||
temp_buffer->Unbind(); | |||
@@ -220,7 +220,7 @@ public: | |||
RenderContext rc; | |||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | |||
rc.SetClearDepth(1.f); | |||
g_renderer->Clear(ClearMask::Color | ClearMask::Depth); | |||
Renderer::Get()->Clear(ClearMask::Color | ClearMask::Depth); | |||
} | |||
temp_buffer->Unbind(); | |||
@@ -250,7 +250,7 @@ public: | |||
RenderContext rc; | |||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | |||
rc.SetClearDepth(1.f); | |||
g_renderer->Clear(ClearMask::Color | ClearMask::Depth); | |||
Renderer::Get()->Clear(ClearMask::Color | ClearMask::Depth); | |||
} | |||
m_fbos[f].m1->Unbind(); | |||
@@ -273,7 +273,7 @@ public: | |||
dst_buf->Bind(); | |||
/* FIXME: we should just disable depth test in the shader */ | |||
g_renderer->Clear(ClearMask::Depth); | |||
Renderer::Get()->Clear(ClearMask::Depth); | |||
m_fbos[f].m2->Bind(); | |||
int i = 0; | |||
@@ -292,7 +292,7 @@ public: | |||
} | |||
} | |||
g_renderer->Clear(ClearMask::Color | ClearMask::Depth); | |||
Renderer::Get()->Clear(ClearMask::Color | ClearMask::Depth); | |||
//FRAME BUFFER DRAW | |||
m_timer -= seconds; | |||
@@ -304,7 +304,7 @@ public: | |||
RenderContext rc; | |||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | |||
rc.SetClearDepth(1.f); | |||
g_renderer->Clear(ClearMask::Color | ClearMask::Depth); | |||
Renderer::Get()->Clear(ClearMask::Color | ClearMask::Depth); | |||
} | |||
m_fbos[m_cur_fbo].m1->Unbind(); | |||
@@ -335,7 +335,7 @@ public: | |||
dst_buf->Bind(); | |||
/* FIXME: we should just disable depth test in the shader */ | |||
g_renderer->Clear(ClearMask::Depth); | |||
Renderer::Get()->Clear(ClearMask::Depth); | |||
shader->Bind(); | |||
//08_FBO ?? | |||
@@ -32,6 +32,87 @@ | |||
namespace lol | |||
{ | |||
//----------------------------------------------------------------------------- | |||
class ApplicationDisplayData | |||
{ | |||
friend class ApplicationDisplay; | |||
ApplicationDisplayData(char const *name, ivec2 resolution) | |||
: display(name, resolution) | |||
{ } | |||
protected: | |||
void SetResolution(ivec2 resolution) | |||
{ | |||
display.SetResolution(resolution); | |||
} | |||
void SetPosition(ivec2 position) | |||
{ | |||
display.SetPosition(position); | |||
} | |||
void Enable() | |||
{ | |||
display.Enable(); | |||
} | |||
void Disable() | |||
{ | |||
display.Disable(); | |||
} | |||
#if _XBOX | |||
//NOT HANDLED YET | |||
#elif __native_client__ | |||
//NOT HANDLED YET | |||
#elif __ANDROID__ | |||
//NOT HANDLED YET | |||
#elif USE_SDL || USE_OLD_SDL | |||
SdlAppDisplay display; | |||
#elif HAVE_GLES_2X | |||
/* FIXME: this macro is only deactivated if we include "lolgl.h" */ | |||
//NOT HANDLED YET | |||
#else | |||
# error No application class available on this platform | |||
#endif | |||
}; | |||
ApplicationDisplay::ApplicationDisplay(char const *name, ivec2 resolution) | |||
{ | |||
data = new ApplicationDisplayData(name, resolution); | |||
} | |||
ApplicationDisplay::~ApplicationDisplay() | |||
{ | |||
delete data; | |||
} | |||
void ApplicationDisplay::SetResolution(ivec2 resolution) | |||
{ | |||
super::SetResolution(resolution); | |||
data->SetResolution(resolution); | |||
} | |||
void ApplicationDisplay::SetPosition(ivec2 position) | |||
{ | |||
super::SetPosition(position); | |||
data->SetPosition(position); | |||
} | |||
void ApplicationDisplay::Enable() | |||
{ | |||
super::Enable(); | |||
data->Enable(); | |||
} | |||
void ApplicationDisplay::Disable() | |||
{ | |||
data->Disable(); | |||
super::Disable(); | |||
} | |||
//----------------------------------------------------------------------------- | |||
class ApplicationData | |||
{ | |||
friend class Application; | |||
@@ -71,6 +152,7 @@ static void AppCallback() | |||
Application::Application(char const *name, ivec2 resolution, float framerate) | |||
{ | |||
SceneDisplay::Add(new ApplicationDisplay(name, resolution)); | |||
data = new ApplicationData(name, resolution, framerate); | |||
g_world.ExecLuaFile("lua/init.lua"); | |||
} | |||
@@ -18,6 +18,31 @@ | |||
namespace lol | |||
{ | |||
//----------------------------------------------------------------------------- | |||
class ApplicationDisplayData; | |||
class ApplicationDisplay : public SceneDisplay | |||
{ | |||
typedef SceneDisplay super; | |||
friend class Scene; | |||
public: | |||
ApplicationDisplay(char const *name, ivec2 resolution); | |||
virtual ~ApplicationDisplay(); | |||
/* pos/size/... methods */ | |||
virtual void SetResolution(ivec2 resolution); | |||
virtual void SetPosition(ivec2 position); | |||
protected: | |||
virtual void Enable(); | |||
virtual void Disable(); | |||
private: | |||
ApplicationDisplayData *data; | |||
}; | |||
//----------------------------------------------------------------------------- | |||
class ApplicationData; | |||
class Application | |||
@@ -29,7 +29,7 @@ Camera::Camera() | |||
m_drawgroup = DRAWGROUP_CAMERA; | |||
//Arbitrary values when g_renderer is not ready. | |||
ivec2 screen_size = (g_renderer)?(Video::GetSize()):(ivec2(800, 600)); | |||
ivec2 screen_size = (Renderer::GetCount()) ? (Video::GetSize()) : (ivec2(800, 600)); | |||
m_fov = 45.f; | |||
m_near = -1000.f; | |||
m_far = 1000.f; | |||
@@ -273,14 +273,14 @@ void Debug::DrawBox(vec2 a, vec2 b, mat2 transform, vec4 color) | |||
} | |||
void Debug::DrawBox(vec2 a, float s, mat2 transform, vec4 color) | |||
{ | |||
vec2 b = s * vec2(1.f, g_renderer->GetXYRatio()); | |||
vec2 b = s * vec2(1.f, Renderer::Get()->GetXYRatio()); | |||
Debug::DrawBox(a - b, a + b, transform, color); | |||
} | |||
//-- CIRCLE ------------------------------------------------------------------- | |||
void Debug::DrawCircle(vec2 a, float s) { Scene& scene = Scene::GetScene(); Debug::DrawCircle(a, s * vec2(1.f, g_renderer->GetXYRatio()), scene.GetLineColor()); } | |||
void Debug::DrawCircle(vec2 a, float s) { Scene& scene = Scene::GetScene(); Debug::DrawCircle(a, s * vec2(1.f, Renderer::Get()->GetXYRatio()), scene.GetLineColor()); } | |||
void Debug::DrawCircle(vec3 a, vec3 n) { Scene& scene = Scene::GetScene(); Debug::DrawCircle(a, n, scene.GetLineColor()); } | |||
void Debug::DrawCircle(vec2 a, vec2 s) { Scene& scene = Scene::GetScene(); Debug::DrawCircle(a, s * vec2(1.f, g_renderer->GetXYRatio()), scene.GetLineColor()); } | |||
void Debug::DrawCircle(vec2 a, vec2 s) { Scene& scene = Scene::GetScene(); Debug::DrawCircle(a, s * vec2(1.f, Renderer::Get()->GetXYRatio()), scene.GetLineColor()); } | |||
void Debug::DrawCircle(vec3 a, vec3 x, vec3 y) { Scene& scene = Scene::GetScene(); Debug::DrawCircle(a, x, y, scene.GetLineColor()); } | |||
void Debug::DrawCircle(vec2 a, vec2 x, vec2 y) { Scene& scene = Scene::GetScene(); Debug::DrawCircle(a, x, y, scene.GetLineColor()); } | |||
void Debug::DrawCircle(vec3 a, vec3 n, vec4 color) | |||
@@ -304,7 +304,7 @@ Framebuffer::Framebuffer(ivec2 size, FramebufferFormat fbo_format) | |||
m_data->m_size = size; | |||
m_data->m_bound = false; | |||
#if defined USE_D3D9 | |||
m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||
m_data->m_dev = (IDirect3DDevice9 *)Renderer::Get()->GetDevice(); | |||
if (FAILED(m_data->m_dev->CreateTexture(size.x, size.y, 1, | |||
D3DUSAGE_RENDERTARGET, | |||
@@ -315,7 +315,7 @@ Framebuffer::Framebuffer(ivec2 size, FramebufferFormat fbo_format) | |||
if (FAILED(m_data->m_texture->GetSurfaceLevel(0, &m_data->m_surface))) | |||
Abort(); | |||
#elif defined _XBOX | |||
m_data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||
m_data->m_dev = (D3DDevice *)Renderer::Get()->GetDevice(); | |||
if (FAILED(m_data->m_dev->CreateTexture(size.x, size.y, 1, 0, | |||
(D3DFORMAT)fbo_format.GetFormat(), | |||
@@ -474,8 +474,8 @@ void Framebuffer::Bind() | |||
/* FIXME: this should be done in the RenderContext object | |||
* instead, maybe by getting rid of Framebuffer::Bind() and | |||
* creating RenderContext::SetFramebuffer() instead. */ | |||
m_data->m_saved_viewport = g_renderer->GetViewport(); | |||
g_renderer->SetViewport(ibox2(ivec2::zero, m_data->m_size)); | |||
m_data->m_saved_viewport = Renderer::Get()->GetViewport(); | |||
Renderer::Get()->SetViewport(ibox2(ivec2::zero, m_data->m_size)); | |||
m_data->m_bound = true; | |||
} | |||
@@ -501,7 +501,7 @@ void Framebuffer::Unbind() | |||
# endif | |||
#endif | |||
g_renderer->SetViewport(m_data->m_saved_viewport); | |||
Renderer::Get()->SetViewport(m_data->m_saved_viewport); | |||
m_data->m_bound = false; | |||
} | |||
@@ -61,9 +61,9 @@ IndexBuffer::IndexBuffer(size_t size) | |||
return; | |||
#if defined USE_D3D9 || defined _XBOX | |||
# if defined USE_D3D9 | |||
m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||
m_data->m_dev = (IDirect3DDevice9 *)Renderer::Get()->GetDevice(); | |||
# elif defined _XBOX | |||
m_data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||
m_data->m_dev = (D3DDevice *)Renderer::Get()->GetDevice(); | |||
# endif | |||
if (FAILED(m_data->m_dev->CreateIndexBuffer(size, D3DUSAGE_WRITEONLY, | |||
@@ -73,33 +73,33 @@ RenderContext::RenderContext() | |||
RenderContext::~RenderContext() | |||
{ | |||
if (m_data->m_viewport.HasChanged()) | |||
g_renderer->SetViewport(m_data->m_viewport.GetValue()); | |||
Renderer::Get()->SetViewport(m_data->m_viewport.GetValue()); | |||
if (m_data->m_clear_color.HasChanged()) | |||
g_renderer->SetClearColor(m_data->m_clear_color.GetValue()); | |||
Renderer::Get()->SetClearColor(m_data->m_clear_color.GetValue()); | |||
if (m_data->m_clear_depth.HasChanged()) | |||
g_renderer->SetClearDepth(m_data->m_clear_depth.GetValue()); | |||
Renderer::Get()->SetClearDepth(m_data->m_clear_depth.GetValue()); | |||
if (m_data->m_alpha_func.HasChanged()) | |||
g_renderer->SetAlphaFunc(m_data->m_alpha_func.GetValue(), | |||
Renderer::Get()->SetAlphaFunc(m_data->m_alpha_func.GetValue(), | |||
m_data->m_alpha_value.GetValue()); | |||
if (m_data->m_blend_src.HasChanged()) | |||
g_renderer->SetBlendFunc(m_data->m_blend_src.GetValue(), | |||
Renderer::Get()->SetBlendFunc(m_data->m_blend_src.GetValue(), | |||
m_data->m_blend_dst.GetValue()); | |||
if (m_data->m_depth_func.HasChanged()) | |||
g_renderer->SetDepthFunc(m_data->m_depth_func.GetValue()); | |||
Renderer::Get()->SetDepthFunc(m_data->m_depth_func.GetValue()); | |||
if (m_data->m_depth_mask.HasChanged()) | |||
g_renderer->SetDepthMask(m_data->m_depth_mask.GetValue()); | |||
Renderer::Get()->SetDepthMask(m_data->m_depth_mask.GetValue()); | |||
if (m_data->m_cull_mode.HasChanged()) | |||
g_renderer->SetCullMode(m_data->m_cull_mode.GetValue()); | |||
Renderer::Get()->SetCullMode(m_data->m_cull_mode.GetValue()); | |||
if (m_data->m_polygon_mode.HasChanged()) | |||
g_renderer->SetPolygonMode(m_data->m_polygon_mode.GetValue()); | |||
Renderer::Get()->SetPolygonMode(m_data->m_polygon_mode.GetValue()); | |||
delete m_data; | |||
} | |||
@@ -107,152 +107,152 @@ RenderContext::~RenderContext() | |||
void RenderContext::SetViewport(ibox2 viewport) | |||
{ | |||
if (!m_data->m_viewport.HasChanged()) | |||
m_data->m_viewport.TrackValue(g_renderer->GetViewport()); | |||
m_data->m_viewport.TrackValue(Renderer::Get()->GetViewport()); | |||
g_renderer->SetViewport(viewport); | |||
Renderer::Get()->SetViewport(viewport); | |||
} | |||
ibox2 RenderContext::GetViewport() | |||
{ | |||
return g_renderer->GetViewport(); | |||
return Renderer::Get()->GetViewport(); | |||
} | |||
void RenderContext::SetClearColor(vec4 color) | |||
{ | |||
if (!m_data->m_clear_color.HasChanged()) | |||
m_data->m_clear_color.TrackValue(g_renderer->GetClearColor()); | |||
m_data->m_clear_color.TrackValue(Renderer::Get()->GetClearColor()); | |||
g_renderer->SetClearColor(color); | |||
Renderer::Get()->SetClearColor(color); | |||
} | |||
vec4 RenderContext::GetClearColor() | |||
{ | |||
return g_renderer->GetClearColor(); | |||
return Renderer::Get()->GetClearColor(); | |||
} | |||
void RenderContext::SetClearDepth(float depth) | |||
{ | |||
if (!m_data->m_clear_depth.HasChanged()) | |||
m_data->m_clear_depth.TrackValue(g_renderer->GetClearDepth()); | |||
m_data->m_clear_depth.TrackValue(Renderer::Get()->GetClearDepth()); | |||
g_renderer->SetClearDepth(depth); | |||
Renderer::Get()->SetClearDepth(depth); | |||
} | |||
float RenderContext::GetClearDepth() | |||
{ | |||
return g_renderer->GetClearDepth(); | |||
return Renderer::Get()->GetClearDepth(); | |||
} | |||
void RenderContext::SetAlphaFunc(AlphaFunc func, float alpha) | |||
{ | |||
if (!m_data->m_alpha_func.HasChanged()) | |||
m_data->m_alpha_func.TrackValue(g_renderer->GetAlphaFunc()); | |||
m_data->m_alpha_func.TrackValue(Renderer::Get()->GetAlphaFunc()); | |||
if (!m_data->m_alpha_value.HasChanged()) | |||
m_data->m_alpha_value.TrackValue(g_renderer->GetAlphaValue()); | |||
m_data->m_alpha_value.TrackValue(Renderer::Get()->GetAlphaValue()); | |||
g_renderer->SetAlphaFunc(func, alpha); | |||
Renderer::Get()->SetAlphaFunc(func, alpha); | |||
} | |||
AlphaFunc RenderContext::GetAlphaFunc() | |||
{ | |||
return g_renderer->GetAlphaFunc(); | |||
return Renderer::Get()->GetAlphaFunc(); | |||
} | |||
float RenderContext::GetAlphaValue() | |||
{ | |||
return g_renderer->GetAlphaValue(); | |||
return Renderer::Get()->GetAlphaValue(); | |||
} | |||
void RenderContext::SetBlendEquation(BlendEquation rgb, BlendEquation alpha) | |||
{ | |||
if (!m_data->m_blend_rgb.HasChanged()) | |||
m_data->m_blend_rgb.TrackValue(g_renderer->GetBlendEquationRgb()); | |||
m_data->m_blend_rgb.TrackValue(Renderer::Get()->GetBlendEquationRgb()); | |||
if (!m_data->m_blend_alpha.HasChanged()) | |||
m_data->m_blend_alpha.TrackValue(g_renderer->GetBlendEquationAlpha()); | |||
m_data->m_blend_alpha.TrackValue(Renderer::Get()->GetBlendEquationAlpha()); | |||
g_renderer->SetBlendEquation(rgb, alpha); | |||
Renderer::Get()->SetBlendEquation(rgb, alpha); | |||
} | |||
BlendEquation RenderContext::GetBlendEquationRgb() | |||
{ | |||
return g_renderer->GetBlendEquationRgb(); | |||
return Renderer::Get()->GetBlendEquationRgb(); | |||
} | |||
BlendEquation RenderContext::GetBlendEquationAlpha() | |||
{ | |||
return g_renderer->GetBlendEquationAlpha(); | |||
return Renderer::Get()->GetBlendEquationAlpha(); | |||
} | |||
void RenderContext::SetBlendFunc(BlendFunc src, BlendFunc dst) | |||
{ | |||
if (!m_data->m_blend_src.HasChanged()) | |||
m_data->m_blend_src.TrackValue(g_renderer->GetBlendFuncSrc()); | |||
m_data->m_blend_src.TrackValue(Renderer::Get()->GetBlendFuncSrc()); | |||
if (!m_data->m_blend_dst.HasChanged()) | |||
m_data->m_blend_dst.TrackValue(g_renderer->GetBlendFuncDst()); | |||
m_data->m_blend_dst.TrackValue(Renderer::Get()->GetBlendFuncDst()); | |||
g_renderer->SetBlendFunc(src, dst); | |||
Renderer::Get()->SetBlendFunc(src, dst); | |||
} | |||
BlendFunc RenderContext::GetBlendFuncSrc() | |||
{ | |||
return g_renderer->GetBlendFuncSrc(); | |||
return Renderer::Get()->GetBlendFuncSrc(); | |||
} | |||
BlendFunc RenderContext::GetBlendFuncDst() | |||
{ | |||
return g_renderer->GetBlendFuncDst(); | |||
return Renderer::Get()->GetBlendFuncDst(); | |||
} | |||
void RenderContext::SetDepthFunc(DepthFunc func) | |||
{ | |||
if (!m_data->m_depth_func.HasChanged()) | |||
m_data->m_depth_func.TrackValue(g_renderer->GetDepthFunc()); | |||
m_data->m_depth_func.TrackValue(Renderer::Get()->GetDepthFunc()); | |||
g_renderer->SetDepthFunc(func); | |||
Renderer::Get()->SetDepthFunc(func); | |||
} | |||
DepthFunc RenderContext::GetDepthFunc() | |||
{ | |||
return g_renderer->GetDepthFunc(); | |||
return Renderer::Get()->GetDepthFunc(); | |||
} | |||
void RenderContext::SetDepthMask(DepthMask mask) | |||
{ | |||
if (!m_data->m_depth_mask.HasChanged()) | |||
m_data->m_depth_mask.TrackValue(g_renderer->GetDepthMask()); | |||
m_data->m_depth_mask.TrackValue(Renderer::Get()->GetDepthMask()); | |||
g_renderer->SetDepthMask(mask); | |||
Renderer::Get()->SetDepthMask(mask); | |||
} | |||
DepthMask RenderContext::GetDepthMask() | |||
{ | |||
return g_renderer->GetDepthMask(); | |||
return Renderer::Get()->GetDepthMask(); | |||
} | |||
void RenderContext::SetCullMode(CullMode mode) | |||
{ | |||
if (!m_data->m_cull_mode.HasChanged()) | |||
m_data->m_cull_mode.TrackValue(g_renderer->GetCullMode()); | |||
m_data->m_cull_mode.TrackValue(Renderer::Get()->GetCullMode()); | |||
g_renderer->SetCullMode(mode); | |||
Renderer::Get()->SetCullMode(mode); | |||
} | |||
CullMode RenderContext::GetCullMode() | |||
{ | |||
return g_renderer->GetCullMode(); | |||
return Renderer::Get()->GetCullMode(); | |||
} | |||
void RenderContext::SetPolygonMode(PolygonMode mode) | |||
{ | |||
if (!m_data->m_polygon_mode.HasChanged()) | |||
m_data->m_polygon_mode.TrackValue(g_renderer->GetPolygonMode()); | |||
m_data->m_polygon_mode.TrackValue(Renderer::Get()->GetPolygonMode()); | |||
g_renderer->SetPolygonMode(mode); | |||
Renderer::Get()->SetPolygonMode(mode); | |||
} | |||
PolygonMode RenderContext::GetPolygonMode() | |||
{ | |||
return g_renderer->GetPolygonMode(); | |||
return Renderer::Get()->GetPolygonMode(); | |||
} | |||
} /* namespace lol */ | |||
@@ -39,10 +39,11 @@ namespace lol | |||
{ | |||
/* | |||
* The global g_renderer object, initialised by Video::Init | |||
* The global g_renderers object, initialised by Video::Setup | |||
*/ | |||
Renderer *g_renderer = nullptr; | |||
//Renderer *g_renderer = nullptr; | |||
array<Renderer*> g_renderers; | |||
/* | |||
* Private RendererData class | |||
@@ -225,6 +226,29 @@ void Renderer::Clear(ClearMask mask) | |||
#endif | |||
} | |||
/* | |||
* Renderer static | |||
*/ | |||
void Renderer::AddNew(ivec2 size) | |||
{ | |||
g_renderers << new Renderer(size); | |||
} | |||
ptrdiff_t Renderer::GetCount() | |||
{ | |||
return g_renderers.count(); | |||
} | |||
Renderer* Renderer::Get(ptrdiff_t index) | |||
{ | |||
return g_renderers[index]; | |||
} | |||
void Renderer::DestroyAll() | |||
{ | |||
for (Renderer* renderer : g_renderers) | |||
delete renderer; | |||
g_renderers.empty(); | |||
} | |||
/* | |||
* Viewport dimensions | |||
*/ | |||
@@ -259,9 +259,9 @@ Shader::Shader(String const &name, | |||
data->vert_crc = ShaderData::Hash(vert); | |||
#if defined USE_D3D9 || defined _XBOX | |||
# if defined USE_D3D9 | |||
data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||
data->m_dev = (IDirect3DDevice9 *)Renderer::Get()->GetDevice(); | |||
# elif defined _XBOX | |||
data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||
data->m_dev = (D3DDevice *)Renderer::Get()->GetDevice(); | |||
# endif | |||
hr = D3DXCompileShader(vert, (UINT)strlen(vert), macros, nullptr, "main", | |||
@@ -70,9 +70,9 @@ Texture::Texture(ivec2 size, PixelFormat format) | |||
#if defined USE_D3D9 || defined _XBOX | |||
# if defined USE_D3D9 | |||
m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||
m_data->m_dev = (IDirect3DDevice9 *)Renderer::Get()->GetDevice(); | |||
# elif defined _XBOX | |||
m_data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||
m_data->m_dev = (D3DDevice *)Renderer::Get()->GetDevice(); | |||
# endif | |||
static struct | |||
@@ -529,9 +529,9 @@ void VertexDeclaration::Initialize() | |||
elements[m_count] = end_element[0]; | |||
# if defined USE_D3D9 | |||
m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||
m_data->m_dev = (IDirect3DDevice9 *)Renderer::Get()->GetDevice(); | |||
# elif defined _XBOX | |||
m_data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||
m_data->m_dev = (D3DDevice *)Renderer::Get()->GetDevice(); | |||
# endif | |||
if (FAILED(m_data->m_dev->CreateVertexDeclaration(elements, | |||
@@ -614,9 +614,9 @@ VertexBuffer::VertexBuffer(size_t size) | |||
return; | |||
#if defined USE_D3D9 || defined _XBOX | |||
# if defined USE_D3D9 | |||
m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||
m_data->m_dev = (IDirect3DDevice9 *)Renderer::Get()->GetDevice(); | |||
# elif defined _XBOX | |||
m_data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||
m_data->m_dev = (D3DDevice *)Renderer::Get()->GetDevice(); | |||
# endif | |||
if (FAILED(m_data->m_dev->CreateVertexBuffer(size, D3DUSAGE_WRITEONLY, nullptr, | |||
@@ -137,6 +137,11 @@ public: | |||
void *GetDevice(); | |||
static void AddNew(ivec2 size); | |||
static ptrdiff_t GetCount(); | |||
static Renderer* Get(ptrdiff_t index = 0); | |||
static void DestroyAll(); | |||
public: | |||
void SetViewport(ibox2 viewport); | |||
ibox2 GetViewport() const; | |||
@@ -177,7 +182,7 @@ private: | |||
RendererData *m_data; | |||
}; | |||
extern Renderer *g_renderer; | |||
//extern Renderer *g_renderer; | |||
} /* namespace lol */ | |||
@@ -97,6 +97,9 @@ | |||
<Filter Include="entities"> | |||
<UniqueIdentifier>{3bd5fe6f-c9cd-45f3-98a9-958d86d415e8}</UniqueIdentifier> | |||
</Filter> | |||
<Filter Include="display"> | |||
<UniqueIdentifier>{869f0b25-469b-4b06-a2a2-325449fc868f}</UniqueIdentifier> | |||
</Filter> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<ClCompile Include="image\crop.cpp"> | |||
@@ -225,9 +228,6 @@ | |||
<ClCompile Include="light.cpp"> | |||
<Filter>...</Filter> | |||
</ClCompile> | |||
<ClCompile Include="ticker.cpp"> | |||
<Filter>...</Filter> | |||
</ClCompile> | |||
<ClCompile Include="platform.cpp"> | |||
<Filter>...</Filter> | |||
</ClCompile> | |||
@@ -240,18 +240,12 @@ | |||
<ClCompile Include="sampler.cpp"> | |||
<Filter>...</Filter> | |||
</ClCompile> | |||
<ClCompile Include="scene.cpp"> | |||
<Filter>...</Filter> | |||
</ClCompile> | |||
<ClCompile Include="sprite.cpp"> | |||
<Filter>...</Filter> | |||
</ClCompile> | |||
<ClCompile Include="text.cpp"> | |||
<Filter>...</Filter> | |||
</ClCompile> | |||
<ClCompile Include="video.cpp"> | |||
<Filter>...</Filter> | |||
</ClCompile> | |||
<ClCompile Include="world.cpp"> | |||
<Filter>...</Filter> | |||
</ClCompile> | |||
@@ -425,6 +419,15 @@ | |||
<ClCompile Include="mesh\primitivemesh.cpp"> | |||
<Filter>mesh</Filter> | |||
</ClCompile> | |||
<ClCompile Include="ticker.cpp"> | |||
<Filter>display</Filter> | |||
</ClCompile> | |||
<ClCompile Include="video.cpp"> | |||
<Filter>display</Filter> | |||
</ClCompile> | |||
<ClCompile Include="scene.cpp"> | |||
<Filter>display</Filter> | |||
</ClCompile> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<ClInclude Include="debug\fps.h"> | |||
@@ -577,9 +580,6 @@ | |||
<ClInclude Include="sampler.h"> | |||
<Filter>...</Filter> | |||
</ClInclude> | |||
<ClInclude Include="scene.h"> | |||
<Filter>...</Filter> | |||
</ClInclude> | |||
<ClInclude Include="simd.h"> | |||
<Filter>...</Filter> | |||
</ClInclude> | |||
@@ -589,12 +589,6 @@ | |||
<ClInclude Include="text.h"> | |||
<Filter>...</Filter> | |||
</ClInclude> | |||
<ClInclude Include="ticker.h"> | |||
<Filter>...</Filter> | |||
</ClInclude> | |||
<ClInclude Include="video.h"> | |||
<Filter>...</Filter> | |||
</ClInclude> | |||
<ClInclude Include="world.h"> | |||
<Filter>...</Filter> | |||
</ClInclude> | |||
@@ -792,6 +786,15 @@ | |||
<ClInclude Include="mesh\primitivemesh.h"> | |||
<Filter>mesh</Filter> | |||
</ClInclude> | |||
<ClInclude Include="ticker.h"> | |||
<Filter>display</Filter> | |||
</ClInclude> | |||
<ClInclude Include="video.h"> | |||
<Filter>display</Filter> | |||
</ClInclude> | |||
<ClInclude Include="scene.h"> | |||
<Filter>display</Filter> | |||
</ClInclude> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<LolFxCompile Include="gpu\emptymaterial.lolfx"> | |||
@@ -263,7 +263,7 @@ void LolImGui::TickDraw(float seconds, Scene &scene) | |||
} | |||
void PrimitiveLolImGui::Render(Scene& scene, PrimitiveSource* primitive) | |||
{ | |||
g_renderer->Clear(ClearMask::Depth); | |||
Renderer::Get()->Clear(ClearMask::Depth); | |||
ImGuiIO& io = ImGui::GetIO(); | |||
if (io.Fonts->TexID) | |||
@@ -39,12 +39,11 @@ namespace lol | |||
{ | |||
/* | |||
* SDL App implementation class | |||
*/ | |||
class SdlAppData | |||
* SDL App display implementation class | |||
*/ | |||
class SdlAppDisplayData | |||
{ | |||
friend class SdlApp; | |||
friend class SdlAppDisplay; | |||
private: | |||
#if USE_SDL | |||
@@ -56,28 +55,30 @@ private: | |||
}; | |||
/* | |||
* Public SdlApp class | |||
*/ | |||
SdlApp::SdlApp(char const *title, ivec2 res, float fps) : | |||
data(new SdlAppData()) | |||
* Public SdlApp class | |||
*/ | |||
SdlAppDisplay::SdlAppDisplay(char const *title, ivec2 res) | |||
: data(new SdlAppDisplayData()) | |||
{ | |||
#if USE_SDL || USE_OLD_SDL | |||
ivec2 window_size = res; | |||
ivec2 screen_size = res; | |||
/* Initialise SDL */ | |||
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_NOPARACHUTE) < 0) | |||
if (!SDL_WasInit(0)) | |||
{ | |||
Log::Error("cannot initialise SDL: %s\n", SDL_GetError()); | |||
exit(EXIT_FAILURE); | |||
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_NOPARACHUTE) < 0) | |||
{ | |||
Log::Error("cannot initialise SDL: %s\n", SDL_GetError()); | |||
exit(EXIT_FAILURE); | |||
} | |||
} | |||
#if USE_SDL | |||
data->m_window = SDL_CreateWindow(title, SDL_WINDOWPOS_UNDEFINED, | |||
SDL_WINDOWPOS_UNDEFINED, | |||
window_size.x, window_size.y, | |||
SDL_WINDOW_OPENGL); | |||
SDL_WINDOWPOS_UNDEFINED, | |||
window_size.x, window_size.y, | |||
SDL_WINDOW_OPENGL); | |||
if (!data->m_window) | |||
{ | |||
Log::Error("cannot create rendering window: %s\n", SDL_GetError()); | |||
@@ -87,7 +88,6 @@ SdlApp::SdlApp(char const *title, ivec2 res, float fps) : | |||
SDL_GetWindowSize(data->m_window, &res.x, &res.y); | |||
data->m_glcontext = SDL_GL_CreateContext(data->m_window); | |||
#else | |||
const SDL_VideoInfo* vidinfo = SDL_GetVideoInfo(); | |||
screen_size = ivec2(vidinfo->current_w, vidinfo->current_h); | |||
@@ -120,9 +120,122 @@ SdlApp::SdlApp(char const *title, ivec2 res, float fps) : | |||
res = ivec2(data->m_window->w, data->m_window->h); | |||
#endif | |||
/* Initialise everything */ | |||
Video::Setup(res); //TODO ?? Should it be here ? | |||
#endif | |||
} | |||
SdlAppDisplay::~SdlAppDisplay() | |||
{ | |||
#if USE_SDL | |||
if (data->m_window) | |||
{ | |||
SDL_GL_DeleteContext(data->m_glcontext); | |||
SDL_DestroyWindow(data->m_window); | |||
} | |||
#elif USE_OLD_SDL | |||
if (data->m_window) | |||
SDL_FreeSurface(data->m_window); | |||
#endif | |||
delete data; | |||
} | |||
void SdlAppDisplay::SetResolution(ivec2 resolution) | |||
{ | |||
#if USE_SDL | |||
SDL_SetWindowSize(data->m_window, resolution.x, resolution.y); | |||
#elif USE_OLD_SDL && USE_D3D9 | |||
//Not implemented | |||
#elif USE_OLD_SDL | |||
//Not implemented | |||
#endif | |||
} | |||
void SdlAppDisplay::SetPosition(ivec2 position) | |||
{ | |||
#if USE_SDL | |||
SDL_SetWindowPosition(data->m_window, position.x, position.y); | |||
#elif USE_OLD_SDL && USE_D3D9 | |||
//Not implemented | |||
#elif USE_OLD_SDL | |||
//Not implemented | |||
#endif | |||
} | |||
void SdlAppDisplay::Enable() | |||
{ | |||
#if USE_SDL | |||
//TODO: Should we do that: ? | |||
SDL_GL_MakeCurrent(data->m_window, data->m_glcontext); | |||
#endif | |||
#if (USE_SDL || USE_OLD_SDL) && defined USE_D3D9 | |||
IDirect3DDevice9 *d3d_dev = (IDirect3DDevice9 *)Renderer::Get()->GetDevice(); | |||
HRESULT hr; | |||
hr = d3d_dev->BeginScene(); | |||
if (FAILED(hr)) | |||
Abort(); | |||
#endif | |||
} | |||
void SdlAppDisplay::Disable() | |||
{ | |||
#if USE_SDL | |||
SDL_GL_SwapWindow(data->m_window); | |||
#elif USE_OLD_SDL && USE_D3D9 | |||
hr = d3d_dev->EndScene(); | |||
if (FAILED(hr)) | |||
Abort(); | |||
hr = d3d_dev->Present(nullptr, nullptr, nullptr, nullptr); | |||
if (FAILED(hr)) | |||
Abort(); | |||
#elif USE_OLD_SDL | |||
SDL_GL_SwapBuffers(); | |||
#endif | |||
} | |||
#if USE_SDL | |||
ptrdiff_t SceneDisplay::GetPhysicalCount() | |||
{ | |||
return (ptrdiff_t)SDL_GetNumVideoDisplays(); | |||
} | |||
const char* SceneDisplay::GetPhysicalName(ptrdiff_t index) | |||
{ | |||
return SDL_GetDisplayName((int)index); | |||
} | |||
#elif USE_OLD_SDL && USE_D3D9 | |||
// Not implemented | |||
#elif USE_OLD_SDL | |||
// Not implemented | |||
#endif | |||
/* | |||
* SDL App implementation class | |||
*/ | |||
class SdlAppData | |||
{ | |||
friend class SdlApp; | |||
private: | |||
#if USE_SDL | |||
SDL_Window *m_window; | |||
SDL_GLContext m_glcontext; | |||
#elif USE_OLD_SDL | |||
SDL_Surface *m_window; | |||
#endif | |||
}; | |||
/* | |||
* Public SdlApp class | |||
*/ | |||
SdlApp::SdlApp(char const *title, ivec2 res, float fps) : | |||
data(new SdlAppData()) | |||
{ | |||
#if USE_SDL || USE_OLD_SDL | |||
ivec2 window_size = res; | |||
ivec2 screen_size = res; | |||
/* Initialise everything */ | |||
Ticker::Setup(fps); | |||
Video::Setup(res); | |||
Audio::Setup(2); | |||
/* Autoreleased objects */ | |||
@@ -145,46 +258,17 @@ void SdlApp::ShowPointer(bool show) | |||
void SdlApp::Tick() | |||
{ | |||
#if (USE_SDL || USE_OLD_SDL) && defined USE_D3D9 | |||
IDirect3DDevice9 *d3d_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||
HRESULT hr; | |||
hr = d3d_dev->BeginScene(); | |||
if (FAILED(hr)) | |||
Abort(); | |||
#endif | |||
/* Tick the renderer, show the frame and clamp to desired framerate. */ | |||
Ticker::TickDraw(); | |||
#if USE_SDL | |||
SDL_GL_SwapWindow(data->m_window); | |||
#elif USE_OLD_SDL && USE_D3D9 | |||
hr = d3d_dev->EndScene(); | |||
if (FAILED(hr)) | |||
Abort(); | |||
hr = d3d_dev->Present(nullptr, nullptr, nullptr, nullptr); | |||
if (FAILED(hr)) | |||
Abort(); | |||
#elif USE_OLD_SDL | |||
SDL_GL_SwapBuffers(); | |||
#endif | |||
} | |||
SdlApp::~SdlApp() | |||
{ | |||
#if USE_SDL | |||
if (data->m_window) | |||
{ | |||
SDL_GL_DeleteContext(data->m_glcontext); | |||
SDL_DestroyWindow(data->m_window); | |||
} | |||
SDL_Quit(); | |||
#elif USE_OLD_SDL | |||
if (data->m_window) | |||
SDL_FreeSurface(data->m_window); | |||
SDL_Quit(); | |||
#endif | |||
delete data; | |||
} | |||
@@ -20,6 +20,28 @@ | |||
namespace lol | |||
{ | |||
//----------------------------------------------------------------------------- | |||
class SdlAppDisplayData; | |||
class SdlAppDisplay | |||
{ | |||
friend class ApplicationDisplayData; | |||
public: | |||
SdlAppDisplay(char const *title, ivec2 resolution); | |||
virtual ~SdlAppDisplay(); | |||
protected: | |||
void SetResolution(ivec2 resolution); | |||
void SetPosition(ivec2 position); | |||
void Enable(); | |||
void Disable(); | |||
private: | |||
SdlAppDisplayData *data; | |||
}; | |||
//----------------------------------------------------------------------------- | |||
class SdlAppData; | |||
class SdlApp | |||
@@ -60,7 +60,7 @@ void XboxApp::Tick() | |||
Ticker::TickDraw(); | |||
#if defined _XBOX | |||
D3DDevice *d3d_dev = (D3DDevice *)g_renderer->GetDevice(); | |||
D3DDevice *d3d_dev = (D3DDevice *)Renderer::Get()->GetDevice(); | |||
d3d_dev->Present(nullptr, nullptr, nullptr, nullptr); | |||
#endif | |||
} | |||
@@ -46,8 +46,45 @@ struct Tile | |||
int id, o; | |||
}; | |||
//----------------------------------------------------------------------------- | |||
static array<SceneDisplay*> m_scene_displays; | |||
/* | |||
* Scene implementation class | |||
* Public SceneDisplay class | |||
*/ | |||
void SceneDisplay::Add(SceneDisplay* display) | |||
{ | |||
m_scene_displays << display; | |||
} | |||
ptrdiff_t SceneDisplay::GetCount() | |||
{ | |||
return m_scene_displays.count(); | |||
} | |||
SceneDisplay* SceneDisplay::GetDisplay(ptrdiff_t index) | |||
{ | |||
ASSERT(0 <= index && index < m_scene_displays.count()); | |||
return m_scene_displays[index]; | |||
} | |||
void SceneDisplay::DestroyAll() | |||
{ | |||
for (SceneDisplay* display : m_scene_displays) | |||
delete display; | |||
m_scene_displays.Empty(); | |||
} | |||
/* ------------------------------------------------ */ | |||
void SceneDisplay::Enable() | |||
{ | |||
//TODO: PROFILER STUFF | |||
} | |||
void SceneDisplay::Disable() | |||
{ | |||
//TODO: PROFILER STUFF | |||
} | |||
//----------------------------------------------------------------------------- | |||
/* | |||
* Primitive implementation class | |||
*/ | |||
void PrimitiveSource::Render(Scene& scene) { UNUSED(scene); } | |||
void PrimitiveRenderer::Render(Scene& scene, PrimitiveSource* primitive) | |||
@@ -56,10 +93,10 @@ void PrimitiveRenderer::Render(Scene& scene, PrimitiveSource* primitive) | |||
UNUSED(primitive); | |||
} | |||
//----------------------------------------------------------------------------- | |||
/* | |||
* Scene implementation class | |||
*/ | |||
class SceneData | |||
{ | |||
friend class Scene; | |||
@@ -78,12 +115,15 @@ private: | |||
static uint64_t m_used_id; | |||
uint64_t m_mask_id = 0; | |||
/* New scenegraph */ | |||
array<PrimitiveSource*> m_primitives; | |||
/* Primitives are shared by all scenes. | |||
/* Scene display: if none has been set to the scene, | |||
* the default one created by the app will be used */ | |||
SceneDisplay* m_display = nullptr; | |||
/* Sources are shared by all scenes. | |||
* Renderers are scene-dependent. They get the primitive in the identical slot to render with the given scene | |||
* Primitives and renderers will be kept until: | |||
* - Updated by entity | |||
* - Marked Fire&Forget | |||
* - Scene is destroyed */ | |||
map<uintptr_t, array<PrimitiveRenderer*> > m_prim_renderers; | |||
static map<uintptr_t, array<PrimitiveSource*> > m_prim_sources; | |||
@@ -273,16 +313,6 @@ void Scene::Reset() | |||
data->m_tile_bufs.Empty(); | |||
data->m_lights.Empty(); | |||
for (int i = 0; i < data->m_primitives.count(); i++) | |||
delete data->m_primitives[i]; | |||
data->m_primitives.Empty(); | |||
} | |||
//----------------------------------------------------------------------------- | |||
void Scene::AddPrimitive(PrimitiveSource* primitive) | |||
{ | |||
data->m_primitives.Push(primitive); | |||
} | |||
//---- Primitive source stuff ------------------------------------------------- | |||
@@ -481,17 +511,35 @@ array<Light *> const &Scene::GetLights() | |||
return data->m_lights; | |||
} | |||
//----------------------------------------------------------------------------- | |||
void Scene::SetDisplay(SceneDisplay* display) | |||
{ | |||
data->m_display = display; | |||
} | |||
//----------------------------------------------------------------------------- | |||
void Scene::EnableDisplay() | |||
{ | |||
//If no display has been set, use the default one | |||
if (!data->m_display) | |||
SetDisplay(SceneDisplay::GetDisplay()); | |||
data->m_display->Enable(); | |||
} | |||
void Scene::DisableDisplay() | |||
{ | |||
ASSERT(data->m_display); | |||
data->m_display->Disable(); | |||
} | |||
//----------------------------------------------------------------------------- | |||
void Scene::RenderPrimitives() | |||
{ | |||
ASSERT(!!data, "Trying to access a non-ready scene"); | |||
/* TODO: this should be the main entry for rendering of all | |||
* primitives found in the scene graph. When we have one. */ | |||
for (PrimitiveSource* p : data->m_primitives) | |||
{ | |||
p->Render(*this); | |||
} | |||
/* FIXME: Temp fix for mesh having no render context*/ | |||
RenderContext rc; | |||
rc.SetCullMode(CullMode::Clockwise); | |||
rc.SetDepthFunc(DepthFunc::LessOrEqual); | |||
/* new scenegraph */ | |||
array<uintptr_t> keys = data->m_prim_renderers.keys(); | |||
@@ -27,8 +27,6 @@ | |||
namespace lol | |||
{ | |||
class SceneData; | |||
//----------------------------------------------------------------------------- | |||
class PrimitiveSource | |||
{ | |||
@@ -56,6 +54,41 @@ private: | |||
}; | |||
//----------------------------------------------------------------------------- | |||
class SceneDisplayData; | |||
class SceneDisplay | |||
{ | |||
friend class Scene; | |||
public: | |||
SceneDisplay() { } | |||
virtual ~SceneDisplay() { } | |||
/* pos/size/... methods */ | |||
virtual void SetResolution(ivec2 resolution) { } | |||
virtual void SetPosition(ivec2 position) { } | |||
/* TODO: Should that be there or in Video ? */ | |||
static void Add(SceneDisplay* display); | |||
static ptrdiff_t GetCount(); | |||
static SceneDisplay* GetDisplay(ptrdiff_t index = 0); | |||
static void DestroyAll(); | |||
/* Implement these in the platform section */ | |||
static ptrdiff_t GetPhysicalCount(); | |||
static const char* GetPhysicalName(ptrdiff_t index = 0); | |||
protected: | |||
virtual void Enable(); | |||
virtual void Disable(); | |||
private: | |||
SceneDisplayData *data; | |||
}; | |||
//----------------------------------------------------------------------------- | |||
class SceneData; | |||
class Scene | |||
{ | |||
friend class Video; | |||
@@ -90,9 +123,6 @@ public: | |||
void Reset(); | |||
/* New scenegraph */ | |||
void AddPrimitive(class PrimitiveSource* primitive); | |||
/* ============================== */ | |||
# define _KEY_IDX (uintptr_t)key /* TOUKY: I don't like that. hash should be fixed to handle these custom stuff */ | |||
/* ============================== */ | |||
@@ -211,6 +241,11 @@ public: | |||
void AddLight(Light *light); | |||
array<Light *> const &GetLights(); | |||
/* === Render stuff === */ | |||
void SetDisplay(SceneDisplay* display); | |||
void EnableDisplay(); | |||
void DisableDisplay(); | |||
void RenderPrimitives(); | |||
void RenderTiles(); | |||
void RenderLines(float seconds); | |||
@@ -428,7 +428,6 @@ void TickerData::DrawThreadTick() | |||
case Entity::DRAWGROUP_BEGIN: | |||
for (ptrdiff_t i = 0; i < Scene::GetCount(); i++) | |||
Scene::GetScene(i).Reset(); | |||
g_renderer->Clear(ClearMask::All); | |||
break; | |||
default: | |||
break; | |||
@@ -469,7 +468,9 @@ void TickerData::DrawThreadTick() | |||
Scene& scene = Scene::GetScene(idx); | |||
/* Enable display */ | |||
//scene.EnableDisplay(); //TODO | |||
scene.EnableDisplay(); | |||
Renderer::Get(idx)->Clear(ClearMask::All); | |||
/* Do the render step */ | |||
scene.RenderPrimitives(); | |||
@@ -477,7 +478,7 @@ void TickerData::DrawThreadTick() | |||
scene.RenderLines(data->deltatime); | |||
/* Disable display */ | |||
//scene.DisableDisplay(); //TODO | |||
scene.DisableDisplay(); | |||
} | |||
Profiler::Stop(Profiler::STAT_TICK_DRAW); | |||
@@ -45,7 +45,8 @@ DebugRenderMode VideoData::render_mode = DebugRenderMode::Default; | |||
void Video::Setup(ivec2 size) | |||
{ | |||
g_renderer = new Renderer(size); | |||
//g_renderer = new Renderer(size); | |||
Renderer::AddNew(size); | |||
Scene::AddNew(size); | |||
/* Initialise reasonable scene default properties */ | |||
@@ -95,9 +96,10 @@ DebugRenderMode Video::GetDebugRenderMode() | |||
void Video::Destroy() | |||
{ | |||
Scene::DestroyAll(); | |||
Renderer::DestroyAll(); | |||
delete g_renderer; | |||
g_renderer = nullptr; | |||
//delete g_renderer; | |||
//g_renderer = nullptr; | |||
} | |||
void Video::Capture(uint32_t *buffer) | |||
@@ -132,7 +134,7 @@ void Video::Capture(uint32_t *buffer) | |||
ivec2 Video::GetSize() | |||
{ | |||
return g_renderer->GetViewport().extent(); | |||
return Renderer::Get()->GetViewport().extent(); | |||
} | |||
} /* namespace lol */ | |||