@@ -1,7 +1,7 @@ | |||||
| | ||||
Microsoft Visual Studio Solution File, Format Version 12.00 | Microsoft Visual Studio Solution File, Format Version 12.00 | ||||
# Visual Studio 2013 | # Visual Studio 2013 | ||||
VisualStudioVersion = 12.0.31101.0 | |||||
VisualStudioVersion = 12.0.21005.1 | |||||
MinimumVisualStudioVersion = 10.0.40219.1 | MinimumVisualStudioVersion = 10.0.40219.1 | ||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "deushax", "..\games\deushax\deushax.vcxproj", "{EF1A4E80-63FA-4EB0-B834-12B6C500F31C}" | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "deushax", "..\games\deushax\deushax.vcxproj", "{EF1A4E80-63FA-4EB0-B834-12B6C500F31C}" | ||||
EndProject | EndProject | ||||
@@ -757,97 +757,91 @@ Global | |||||
{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Release|x64.ActiveCfg = Release|x64 | {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|x64.Build.0 = Release|x64 | ||||
{81C83B42-D00A-4FA3-9A3D-80F9D46524BF}.Release|Xbox 360.ActiveCfg = Release|Win32 | {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.ActiveCfg = Debug|Win32 | ||||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Debug|Win32.Build.0 = 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.ActiveCfg = Debug|x64 | ||||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Debug|x64.Build.0 = 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.ActiveCfg = Release|Win32 | ||||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Release|Win32.Build.0 = 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.ActiveCfg = Release|x64 | ||||
{B9A255A0-2B92-4801-AF6C-354535A6E105}.Release|x64.Build.0 = 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 | EndGlobalSection | ||||
GlobalSection(SolutionProperties) = preSolution | GlobalSection(SolutionProperties) = preSolution | ||||
HideSolutionNode = FALSE | HideSolutionNode = FALSE | ||||
EndGlobalSection | EndGlobalSection | ||||
GlobalSection(NestedProjects) = preSolution | 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} | {EF1A4E80-63FA-4EB0-B834-12B6C500F31C} = {08C6A854-533D-4A1E-924E-C4A62281869F} | ||||
{17F0F184-4436-4D08-B8AA-16572EA238DB} = {2F87CEAB-4818-443C-A5E3-6C34E7D967EC} | {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} | {83D3B207-C601-4025-8F41-01DEDC354661} = {1AFD580B-98B8-4689-B661-38C41132C60E} | ||||
{D84021CA-B233-4E0F-8A52-071B83BBCCC4} = {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} | {962D4E25-45D3-4ACE-8C02-69FA3713ABD4} = {E4DFEBF9-C310-462F-9876-7EB59C1E4D4E} | ||||
{1782F849-B6E1-466D-9F02-A751F3F8712C} = {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} | {5A27FF18-A1EC-49BE-9455-415F1C701153} = {E4DFEBF9-C310-462F-9876-7EB59C1E4D4E} | ||||
{D7F6C2CA-5A13-4FD0-8468-1833923E3EE3} = {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} | {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} | {B92ABADC-45BE-4CC5-B724-9426053123A1} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | ||||
{7B083DA2-FE08-4F6D-BFDD-195D5C2783EB} = {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} | {1C5B8702-290C-42DA-AA9E-671348F5B747} = {E74CF679-CA2A-47E9-B1F4-3779D6AC6B04} | ||||
{6BF81B39-EDC2-4227-9992-C2D8ABEA95AF} = {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} | {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} | {EE203B88-44CF-4859-9D42-7A5F40FECB52} = {8C77EAA8-1077-4EF7-AE53-97C6C60A3601} | ||||
{B357514A-7881-422D-8358-161B689E7620} = {3D341D8A-E400-4B1D-BC05-B5C35487D9B5} | {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} | {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} | {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} | {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} | {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} | {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} | {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} | {52493826-AC00-470B-A745-4F602529B3B0} = {B583BBFF-BE97-4F4E-BA1E-1F978A31EAB0} | ||||
{9F291982-8C81-4105-BF39-16844648E55F} = {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} | {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} | {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} | {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} | {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} | {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} | {B9A255A0-2B92-4801-AF6C-354535A6E105} = {65114D40-9450-4B2D-B051-7A75E97C88E1} | ||||
EndGlobalSection | EndGlobalSection | ||||
EndGlobal | EndGlobal |
@@ -307,7 +307,7 @@ void BtPhysTest::TickGame(float seconds) | |||||
if (!m_init_status) | if (!m_init_status) | ||||
{ | { | ||||
if (g_renderer) | |||||
if (Renderer::GetCount()) | |||||
InitApp(); | InitApp(); | ||||
return; | return; | ||||
} | } | ||||
@@ -162,7 +162,7 @@ void MeshViewer::Start() | |||||
m_entities << (m_file_loader = new DefaultThreadManager(4, 0)); | m_entities << (m_file_loader = new DefaultThreadManager(4, 0)); | ||||
//Scene setup | //Scene setup | ||||
m_ssetup_file_name = "data/meshviewer.init.lua"; | |||||
m_ssetup_file_name = "../data/meshviewer.init.lua"; | |||||
UpdateSceneSetup(); | UpdateSceneSetup(); | ||||
//Mesh file | //Mesh file | ||||
@@ -394,6 +394,12 @@ int main(int argc, char **argv) | |||||
new MeshViewer(argv[1]); | new MeshViewer(argv[1]); | ||||
else | else | ||||
new MeshViewer(); | new MeshViewer(); | ||||
/* | |||||
//SceneDisplay* display = new ApplicationDisplay("newDisplay", ivec2(800, 600)); | |||||
//SceneDisplay::Add(display); | |||||
//Scene::GetScene(Scene::GetCount() - 1).SetDisplay(display); | |||||
*/ | |||||
app.Run(); | app.Run(); | ||||
return EXIT_SUCCESS; | 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); | m_texture_shader->SetUniform(m_texture_uni, m_default_texture->GetTexture(), 0); | ||||
#endif //!HAS_WEB && WITH_TEXTURE | #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) | 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; | mat4 new_proj = mat_obj_offset * mat_count_offset * mat_align * mat_count_scale * save_proj; | ||||
m_camera->SetProjection(new_proj); | m_camera->SetProjection(new_proj); | ||||
m_meshes[i].m1->Render(scene, m_mat); | m_meshes[i].m1->Render(scene, m_mat); | ||||
g_renderer->Clear(ClearMask::Depth); | |||||
Renderer::Get()->Clear(ClearMask::Depth); | |||||
} | } | ||||
m_camera->SetProjection(save_proj); | m_camera->SetProjection(save_proj); | ||||
#else | #else | ||||
@@ -93,7 +93,7 @@ public: | |||||
m_ready = true; | 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_shader->Bind(); | ||||
m_vdecl->SetStream(m_vbo, m_coord, m_color); | m_vdecl->SetStream(m_vbo, m_coord, m_color); | ||||
@@ -126,7 +126,7 @@ public: | |||||
if (!m_ready) | 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 */ | /* Upload vertex data to GPU */ | ||||
for (int i = 0; i < m_gears.Count(); i++) | for (int i = 0; i < m_gears.Count(); i++) | ||||
@@ -70,7 +70,7 @@ public: | |||||
if (!m_ready) | 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; | m_ready = true; | ||||
} | } | ||||
@@ -189,7 +189,7 @@ public: | |||||
m_ready = true; | 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_shader->Bind(); | ||||
m_vdecl->SetStream(m_vbo, m_coord, m_color); | m_vdecl->SetStream(m_vbo, m_coord, m_color); | ||||
@@ -78,7 +78,7 @@ public: | |||||
RenderContext rc; | RenderContext rc; | ||||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | ||||
rc.SetClearDepth(1.f); | rc.SetClearDepth(1.f); | ||||
g_renderer->Clear(ClearMask::Color | ClearMask::Depth); | |||||
Renderer::Get()->Clear(ClearMask::Color | ClearMask::Depth); | |||||
} | } | ||||
m_fbo->Unbind(); | m_fbo->Unbind(); | ||||
@@ -145,7 +145,7 @@ public: | |||||
RenderContext rc; | RenderContext rc; | ||||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | ||||
rc.SetClearDepth(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(); | m_fbos.Last().m1->Unbind(); | ||||
} | } | ||||
@@ -156,7 +156,7 @@ public: | |||||
RenderContext rc; | RenderContext rc; | ||||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | ||||
rc.SetClearDepth(1.f); | rc.SetClearDepth(1.f); | ||||
g_renderer->Clear(ClearMask::Color | ClearMask::Depth); | |||||
Renderer::Get()->Clear(ClearMask::Color | ClearMask::Depth); | |||||
} | } | ||||
temp_buffer->Unbind(); | temp_buffer->Unbind(); | ||||
@@ -220,7 +220,7 @@ public: | |||||
RenderContext rc; | RenderContext rc; | ||||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | ||||
rc.SetClearDepth(1.f); | rc.SetClearDepth(1.f); | ||||
g_renderer->Clear(ClearMask::Color | ClearMask::Depth); | |||||
Renderer::Get()->Clear(ClearMask::Color | ClearMask::Depth); | |||||
} | } | ||||
temp_buffer->Unbind(); | temp_buffer->Unbind(); | ||||
@@ -250,7 +250,7 @@ public: | |||||
RenderContext rc; | RenderContext rc; | ||||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | ||||
rc.SetClearDepth(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(); | m_fbos[f].m1->Unbind(); | ||||
@@ -273,7 +273,7 @@ public: | |||||
dst_buf->Bind(); | dst_buf->Bind(); | ||||
/* FIXME: we should just disable depth test in the shader */ | /* 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(); | m_fbos[f].m2->Bind(); | ||||
int i = 0; | 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 | //FRAME BUFFER DRAW | ||||
m_timer -= seconds; | m_timer -= seconds; | ||||
@@ -304,7 +304,7 @@ public: | |||||
RenderContext rc; | RenderContext rc; | ||||
rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | rc.SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | ||||
rc.SetClearDepth(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(); | m_fbos[m_cur_fbo].m1->Unbind(); | ||||
@@ -335,7 +335,7 @@ public: | |||||
dst_buf->Bind(); | dst_buf->Bind(); | ||||
/* FIXME: we should just disable depth test in the shader */ | /* FIXME: we should just disable depth test in the shader */ | ||||
g_renderer->Clear(ClearMask::Depth); | |||||
Renderer::Get()->Clear(ClearMask::Depth); | |||||
shader->Bind(); | shader->Bind(); | ||||
//08_FBO ?? | //08_FBO ?? | ||||
@@ -32,6 +32,87 @@ | |||||
namespace lol | 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 | class ApplicationData | ||||
{ | { | ||||
friend class Application; | friend class Application; | ||||
@@ -71,6 +152,7 @@ static void AppCallback() | |||||
Application::Application(char const *name, ivec2 resolution, float framerate) | Application::Application(char const *name, ivec2 resolution, float framerate) | ||||
{ | { | ||||
SceneDisplay::Add(new ApplicationDisplay(name, resolution)); | |||||
data = new ApplicationData(name, resolution, framerate); | data = new ApplicationData(name, resolution, framerate); | ||||
g_world.ExecLuaFile("lua/init.lua"); | g_world.ExecLuaFile("lua/init.lua"); | ||||
} | } | ||||
@@ -18,6 +18,31 @@ | |||||
namespace lol | 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 ApplicationData; | ||||
class Application | class Application | ||||
@@ -29,7 +29,7 @@ Camera::Camera() | |||||
m_drawgroup = DRAWGROUP_CAMERA; | m_drawgroup = DRAWGROUP_CAMERA; | ||||
//Arbitrary values when g_renderer is not ready. | //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_fov = 45.f; | ||||
m_near = -1000.f; | m_near = -1000.f; | ||||
m_far = 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) | 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); | Debug::DrawBox(a - b, a + b, transform, color); | ||||
} | } | ||||
//-- CIRCLE ------------------------------------------------------------------- | //-- 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(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(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(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) | 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_size = size; | ||||
m_data->m_bound = false; | m_data->m_bound = false; | ||||
#if defined USE_D3D9 | #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, | if (FAILED(m_data->m_dev->CreateTexture(size.x, size.y, 1, | ||||
D3DUSAGE_RENDERTARGET, | 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))) | if (FAILED(m_data->m_texture->GetSurfaceLevel(0, &m_data->m_surface))) | ||||
Abort(); | Abort(); | ||||
#elif defined _XBOX | #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, | if (FAILED(m_data->m_dev->CreateTexture(size.x, size.y, 1, 0, | ||||
(D3DFORMAT)fbo_format.GetFormat(), | (D3DFORMAT)fbo_format.GetFormat(), | ||||
@@ -474,8 +474,8 @@ void Framebuffer::Bind() | |||||
/* FIXME: this should be done in the RenderContext object | /* FIXME: this should be done in the RenderContext object | ||||
* instead, maybe by getting rid of Framebuffer::Bind() and | * instead, maybe by getting rid of Framebuffer::Bind() and | ||||
* creating RenderContext::SetFramebuffer() instead. */ | * 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; | m_data->m_bound = true; | ||||
} | } | ||||
@@ -501,7 +501,7 @@ void Framebuffer::Unbind() | |||||
# endif | # endif | ||||
#endif | #endif | ||||
g_renderer->SetViewport(m_data->m_saved_viewport); | |||||
Renderer::Get()->SetViewport(m_data->m_saved_viewport); | |||||
m_data->m_bound = false; | m_data->m_bound = false; | ||||
} | } | ||||
@@ -61,9 +61,9 @@ IndexBuffer::IndexBuffer(size_t size) | |||||
return; | return; | ||||
#if defined USE_D3D9 || defined _XBOX | #if defined USE_D3D9 || defined _XBOX | ||||
# if defined USE_D3D9 | # if defined USE_D3D9 | ||||
m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||||
m_data->m_dev = (IDirect3DDevice9 *)Renderer::Get()->GetDevice(); | |||||
# elif defined _XBOX | # elif defined _XBOX | ||||
m_data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||||
m_data->m_dev = (D3DDevice *)Renderer::Get()->GetDevice(); | |||||
# endif | # endif | ||||
if (FAILED(m_data->m_dev->CreateIndexBuffer(size, D3DUSAGE_WRITEONLY, | if (FAILED(m_data->m_dev->CreateIndexBuffer(size, D3DUSAGE_WRITEONLY, | ||||
@@ -73,33 +73,33 @@ RenderContext::RenderContext() | |||||
RenderContext::~RenderContext() | RenderContext::~RenderContext() | ||||
{ | { | ||||
if (m_data->m_viewport.HasChanged()) | 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()) | 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()) | 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()) | 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()); | m_data->m_alpha_value.GetValue()); | ||||
if (m_data->m_blend_src.HasChanged()) | 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()); | m_data->m_blend_dst.GetValue()); | ||||
if (m_data->m_depth_func.HasChanged()) | 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()) | 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()) | 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()) | 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; | delete m_data; | ||||
} | } | ||||
@@ -107,152 +107,152 @@ RenderContext::~RenderContext() | |||||
void RenderContext::SetViewport(ibox2 viewport) | void RenderContext::SetViewport(ibox2 viewport) | ||||
{ | { | ||||
if (!m_data->m_viewport.HasChanged()) | 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() | ibox2 RenderContext::GetViewport() | ||||
{ | { | ||||
return g_renderer->GetViewport(); | |||||
return Renderer::Get()->GetViewport(); | |||||
} | } | ||||
void RenderContext::SetClearColor(vec4 color) | void RenderContext::SetClearColor(vec4 color) | ||||
{ | { | ||||
if (!m_data->m_clear_color.HasChanged()) | 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() | vec4 RenderContext::GetClearColor() | ||||
{ | { | ||||
return g_renderer->GetClearColor(); | |||||
return Renderer::Get()->GetClearColor(); | |||||
} | } | ||||
void RenderContext::SetClearDepth(float depth) | void RenderContext::SetClearDepth(float depth) | ||||
{ | { | ||||
if (!m_data->m_clear_depth.HasChanged()) | 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() | float RenderContext::GetClearDepth() | ||||
{ | { | ||||
return g_renderer->GetClearDepth(); | |||||
return Renderer::Get()->GetClearDepth(); | |||||
} | } | ||||
void RenderContext::SetAlphaFunc(AlphaFunc func, float alpha) | void RenderContext::SetAlphaFunc(AlphaFunc func, float alpha) | ||||
{ | { | ||||
if (!m_data->m_alpha_func.HasChanged()) | 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()) | 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() | AlphaFunc RenderContext::GetAlphaFunc() | ||||
{ | { | ||||
return g_renderer->GetAlphaFunc(); | |||||
return Renderer::Get()->GetAlphaFunc(); | |||||
} | } | ||||
float RenderContext::GetAlphaValue() | float RenderContext::GetAlphaValue() | ||||
{ | { | ||||
return g_renderer->GetAlphaValue(); | |||||
return Renderer::Get()->GetAlphaValue(); | |||||
} | } | ||||
void RenderContext::SetBlendEquation(BlendEquation rgb, BlendEquation alpha) | void RenderContext::SetBlendEquation(BlendEquation rgb, BlendEquation alpha) | ||||
{ | { | ||||
if (!m_data->m_blend_rgb.HasChanged()) | 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()) | 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() | BlendEquation RenderContext::GetBlendEquationRgb() | ||||
{ | { | ||||
return g_renderer->GetBlendEquationRgb(); | |||||
return Renderer::Get()->GetBlendEquationRgb(); | |||||
} | } | ||||
BlendEquation RenderContext::GetBlendEquationAlpha() | BlendEquation RenderContext::GetBlendEquationAlpha() | ||||
{ | { | ||||
return g_renderer->GetBlendEquationAlpha(); | |||||
return Renderer::Get()->GetBlendEquationAlpha(); | |||||
} | } | ||||
void RenderContext::SetBlendFunc(BlendFunc src, BlendFunc dst) | void RenderContext::SetBlendFunc(BlendFunc src, BlendFunc dst) | ||||
{ | { | ||||
if (!m_data->m_blend_src.HasChanged()) | 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()) | 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() | BlendFunc RenderContext::GetBlendFuncSrc() | ||||
{ | { | ||||
return g_renderer->GetBlendFuncSrc(); | |||||
return Renderer::Get()->GetBlendFuncSrc(); | |||||
} | } | ||||
BlendFunc RenderContext::GetBlendFuncDst() | BlendFunc RenderContext::GetBlendFuncDst() | ||||
{ | { | ||||
return g_renderer->GetBlendFuncDst(); | |||||
return Renderer::Get()->GetBlendFuncDst(); | |||||
} | } | ||||
void RenderContext::SetDepthFunc(DepthFunc func) | void RenderContext::SetDepthFunc(DepthFunc func) | ||||
{ | { | ||||
if (!m_data->m_depth_func.HasChanged()) | 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() | DepthFunc RenderContext::GetDepthFunc() | ||||
{ | { | ||||
return g_renderer->GetDepthFunc(); | |||||
return Renderer::Get()->GetDepthFunc(); | |||||
} | } | ||||
void RenderContext::SetDepthMask(DepthMask mask) | void RenderContext::SetDepthMask(DepthMask mask) | ||||
{ | { | ||||
if (!m_data->m_depth_mask.HasChanged()) | 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() | DepthMask RenderContext::GetDepthMask() | ||||
{ | { | ||||
return g_renderer->GetDepthMask(); | |||||
return Renderer::Get()->GetDepthMask(); | |||||
} | } | ||||
void RenderContext::SetCullMode(CullMode mode) | void RenderContext::SetCullMode(CullMode mode) | ||||
{ | { | ||||
if (!m_data->m_cull_mode.HasChanged()) | 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() | CullMode RenderContext::GetCullMode() | ||||
{ | { | ||||
return g_renderer->GetCullMode(); | |||||
return Renderer::Get()->GetCullMode(); | |||||
} | } | ||||
void RenderContext::SetPolygonMode(PolygonMode mode) | void RenderContext::SetPolygonMode(PolygonMode mode) | ||||
{ | { | ||||
if (!m_data->m_polygon_mode.HasChanged()) | 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() | PolygonMode RenderContext::GetPolygonMode() | ||||
{ | { | ||||
return g_renderer->GetPolygonMode(); | |||||
return Renderer::Get()->GetPolygonMode(); | |||||
} | } | ||||
} /* namespace lol */ | } /* 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 | * Private RendererData class | ||||
@@ -225,6 +226,29 @@ void Renderer::Clear(ClearMask mask) | |||||
#endif | #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 | * Viewport dimensions | ||||
*/ | */ | ||||
@@ -259,9 +259,9 @@ Shader::Shader(String const &name, | |||||
data->vert_crc = ShaderData::Hash(vert); | data->vert_crc = ShaderData::Hash(vert); | ||||
#if defined USE_D3D9 || defined _XBOX | #if defined USE_D3D9 || defined _XBOX | ||||
# if defined USE_D3D9 | # if defined USE_D3D9 | ||||
data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||||
data->m_dev = (IDirect3DDevice9 *)Renderer::Get()->GetDevice(); | |||||
# elif defined _XBOX | # elif defined _XBOX | ||||
data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||||
data->m_dev = (D3DDevice *)Renderer::Get()->GetDevice(); | |||||
# endif | # endif | ||||
hr = D3DXCompileShader(vert, (UINT)strlen(vert), macros, nullptr, "main", | 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 || defined _XBOX | ||||
# if defined USE_D3D9 | # if defined USE_D3D9 | ||||
m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||||
m_data->m_dev = (IDirect3DDevice9 *)Renderer::Get()->GetDevice(); | |||||
# elif defined _XBOX | # elif defined _XBOX | ||||
m_data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||||
m_data->m_dev = (D3DDevice *)Renderer::Get()->GetDevice(); | |||||
# endif | # endif | ||||
static struct | static struct | ||||
@@ -529,9 +529,9 @@ void VertexDeclaration::Initialize() | |||||
elements[m_count] = end_element[0]; | elements[m_count] = end_element[0]; | ||||
# if defined USE_D3D9 | # if defined USE_D3D9 | ||||
m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||||
m_data->m_dev = (IDirect3DDevice9 *)Renderer::Get()->GetDevice(); | |||||
# elif defined _XBOX | # elif defined _XBOX | ||||
m_data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||||
m_data->m_dev = (D3DDevice *)Renderer::Get()->GetDevice(); | |||||
# endif | # endif | ||||
if (FAILED(m_data->m_dev->CreateVertexDeclaration(elements, | if (FAILED(m_data->m_dev->CreateVertexDeclaration(elements, | ||||
@@ -614,9 +614,9 @@ VertexBuffer::VertexBuffer(size_t size) | |||||
return; | return; | ||||
#if defined USE_D3D9 || defined _XBOX | #if defined USE_D3D9 || defined _XBOX | ||||
# if defined USE_D3D9 | # if defined USE_D3D9 | ||||
m_data->m_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||||
m_data->m_dev = (IDirect3DDevice9 *)Renderer::Get()->GetDevice(); | |||||
# elif defined _XBOX | # elif defined _XBOX | ||||
m_data->m_dev = (D3DDevice *)g_renderer->GetDevice(); | |||||
m_data->m_dev = (D3DDevice *)Renderer::Get()->GetDevice(); | |||||
# endif | # endif | ||||
if (FAILED(m_data->m_dev->CreateVertexBuffer(size, D3DUSAGE_WRITEONLY, nullptr, | if (FAILED(m_data->m_dev->CreateVertexBuffer(size, D3DUSAGE_WRITEONLY, nullptr, | ||||
@@ -137,6 +137,11 @@ public: | |||||
void *GetDevice(); | void *GetDevice(); | ||||
static void AddNew(ivec2 size); | |||||
static ptrdiff_t GetCount(); | |||||
static Renderer* Get(ptrdiff_t index = 0); | |||||
static void DestroyAll(); | |||||
public: | public: | ||||
void SetViewport(ibox2 viewport); | void SetViewport(ibox2 viewport); | ||||
ibox2 GetViewport() const; | ibox2 GetViewport() const; | ||||
@@ -177,7 +182,7 @@ private: | |||||
RendererData *m_data; | RendererData *m_data; | ||||
}; | }; | ||||
extern Renderer *g_renderer; | |||||
//extern Renderer *g_renderer; | |||||
} /* namespace lol */ | } /* namespace lol */ | ||||
@@ -97,6 +97,9 @@ | |||||
<Filter Include="entities"> | <Filter Include="entities"> | ||||
<UniqueIdentifier>{3bd5fe6f-c9cd-45f3-98a9-958d86d415e8}</UniqueIdentifier> | <UniqueIdentifier>{3bd5fe6f-c9cd-45f3-98a9-958d86d415e8}</UniqueIdentifier> | ||||
</Filter> | </Filter> | ||||
<Filter Include="display"> | |||||
<UniqueIdentifier>{869f0b25-469b-4b06-a2a2-325449fc868f}</UniqueIdentifier> | |||||
</Filter> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ClCompile Include="image\crop.cpp"> | <ClCompile Include="image\crop.cpp"> | ||||
@@ -225,9 +228,6 @@ | |||||
<ClCompile Include="light.cpp"> | <ClCompile Include="light.cpp"> | ||||
<Filter>...</Filter> | <Filter>...</Filter> | ||||
</ClCompile> | </ClCompile> | ||||
<ClCompile Include="ticker.cpp"> | |||||
<Filter>...</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="platform.cpp"> | <ClCompile Include="platform.cpp"> | ||||
<Filter>...</Filter> | <Filter>...</Filter> | ||||
</ClCompile> | </ClCompile> | ||||
@@ -240,18 +240,12 @@ | |||||
<ClCompile Include="sampler.cpp"> | <ClCompile Include="sampler.cpp"> | ||||
<Filter>...</Filter> | <Filter>...</Filter> | ||||
</ClCompile> | </ClCompile> | ||||
<ClCompile Include="scene.cpp"> | |||||
<Filter>...</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="sprite.cpp"> | <ClCompile Include="sprite.cpp"> | ||||
<Filter>...</Filter> | <Filter>...</Filter> | ||||
</ClCompile> | </ClCompile> | ||||
<ClCompile Include="text.cpp"> | <ClCompile Include="text.cpp"> | ||||
<Filter>...</Filter> | <Filter>...</Filter> | ||||
</ClCompile> | </ClCompile> | ||||
<ClCompile Include="video.cpp"> | |||||
<Filter>...</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="world.cpp"> | <ClCompile Include="world.cpp"> | ||||
<Filter>...</Filter> | <Filter>...</Filter> | ||||
</ClCompile> | </ClCompile> | ||||
@@ -425,6 +419,15 @@ | |||||
<ClCompile Include="mesh\primitivemesh.cpp"> | <ClCompile Include="mesh\primitivemesh.cpp"> | ||||
<Filter>mesh</Filter> | <Filter>mesh</Filter> | ||||
</ClCompile> | </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> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ClInclude Include="debug\fps.h"> | <ClInclude Include="debug\fps.h"> | ||||
@@ -577,9 +580,6 @@ | |||||
<ClInclude Include="sampler.h"> | <ClInclude Include="sampler.h"> | ||||
<Filter>...</Filter> | <Filter>...</Filter> | ||||
</ClInclude> | </ClInclude> | ||||
<ClInclude Include="scene.h"> | |||||
<Filter>...</Filter> | |||||
</ClInclude> | |||||
<ClInclude Include="simd.h"> | <ClInclude Include="simd.h"> | ||||
<Filter>...</Filter> | <Filter>...</Filter> | ||||
</ClInclude> | </ClInclude> | ||||
@@ -589,12 +589,6 @@ | |||||
<ClInclude Include="text.h"> | <ClInclude Include="text.h"> | ||||
<Filter>...</Filter> | <Filter>...</Filter> | ||||
</ClInclude> | </ClInclude> | ||||
<ClInclude Include="ticker.h"> | |||||
<Filter>...</Filter> | |||||
</ClInclude> | |||||
<ClInclude Include="video.h"> | |||||
<Filter>...</Filter> | |||||
</ClInclude> | |||||
<ClInclude Include="world.h"> | <ClInclude Include="world.h"> | ||||
<Filter>...</Filter> | <Filter>...</Filter> | ||||
</ClInclude> | </ClInclude> | ||||
@@ -792,6 +786,15 @@ | |||||
<ClInclude Include="mesh\primitivemesh.h"> | <ClInclude Include="mesh\primitivemesh.h"> | ||||
<Filter>mesh</Filter> | <Filter>mesh</Filter> | ||||
</ClInclude> | </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> | ||||
<ItemGroup> | <ItemGroup> | ||||
<LolFxCompile Include="gpu\emptymaterial.lolfx"> | <LolFxCompile Include="gpu\emptymaterial.lolfx"> | ||||
@@ -263,7 +263,7 @@ void LolImGui::TickDraw(float seconds, Scene &scene) | |||||
} | } | ||||
void PrimitiveLolImGui::Render(Scene& scene, PrimitiveSource* primitive) | void PrimitiveLolImGui::Render(Scene& scene, PrimitiveSource* primitive) | ||||
{ | { | ||||
g_renderer->Clear(ClearMask::Depth); | |||||
Renderer::Get()->Clear(ClearMask::Depth); | |||||
ImGuiIO& io = ImGui::GetIO(); | ImGuiIO& io = ImGui::GetIO(); | ||||
if (io.Fonts->TexID) | 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: | private: | ||||
#if USE_SDL | #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 | #if USE_SDL || USE_OLD_SDL | ||||
ivec2 window_size = res; | ivec2 window_size = res; | ||||
ivec2 screen_size = res; | ivec2 screen_size = res; | ||||
/* Initialise SDL */ | /* 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 | #if USE_SDL | ||||
data->m_window = SDL_CreateWindow(title, SDL_WINDOWPOS_UNDEFINED, | 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) | if (!data->m_window) | ||||
{ | { | ||||
Log::Error("cannot create rendering window: %s\n", SDL_GetError()); | 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); | SDL_GetWindowSize(data->m_window, &res.x, &res.y); | ||||
data->m_glcontext = SDL_GL_CreateContext(data->m_window); | data->m_glcontext = SDL_GL_CreateContext(data->m_window); | ||||
#else | #else | ||||
const SDL_VideoInfo* vidinfo = SDL_GetVideoInfo(); | const SDL_VideoInfo* vidinfo = SDL_GetVideoInfo(); | ||||
screen_size = ivec2(vidinfo->current_w, vidinfo->current_h); | 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); | res = ivec2(data->m_window->w, data->m_window->h); | ||||
#endif | #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 */ | /* Initialise everything */ | ||||
Ticker::Setup(fps); | Ticker::Setup(fps); | ||||
Video::Setup(res); | |||||
Audio::Setup(2); | Audio::Setup(2); | ||||
/* Autoreleased objects */ | /* Autoreleased objects */ | ||||
@@ -145,46 +258,17 @@ void SdlApp::ShowPointer(bool show) | |||||
void SdlApp::Tick() | 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. */ | /* Tick the renderer, show the frame and clamp to desired framerate. */ | ||||
Ticker::TickDraw(); | 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() | SdlApp::~SdlApp() | ||||
{ | { | ||||
#if USE_SDL | #if USE_SDL | ||||
if (data->m_window) | |||||
{ | |||||
SDL_GL_DeleteContext(data->m_glcontext); | |||||
SDL_DestroyWindow(data->m_window); | |||||
} | |||||
SDL_Quit(); | SDL_Quit(); | ||||
#elif USE_OLD_SDL | #elif USE_OLD_SDL | ||||
if (data->m_window) | |||||
SDL_FreeSurface(data->m_window); | |||||
SDL_Quit(); | SDL_Quit(); | ||||
#endif | #endif | ||||
delete data; | delete data; | ||||
} | } | ||||
@@ -20,6 +20,28 @@ | |||||
namespace lol | 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 SdlAppData; | ||||
class SdlApp | class SdlApp | ||||
@@ -60,7 +60,7 @@ void XboxApp::Tick() | |||||
Ticker::TickDraw(); | Ticker::TickDraw(); | ||||
#if defined _XBOX | #if defined _XBOX | ||||
D3DDevice *d3d_dev = (D3DDevice *)g_renderer->GetDevice(); | |||||
D3DDevice *d3d_dev = (D3DDevice *)Renderer::Get()->GetDevice(); | |||||
d3d_dev->Present(nullptr, nullptr, nullptr, nullptr); | d3d_dev->Present(nullptr, nullptr, nullptr, nullptr); | ||||
#endif | #endif | ||||
} | } | ||||
@@ -46,8 +46,45 @@ struct Tile | |||||
int id, o; | 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 PrimitiveSource::Render(Scene& scene) { UNUSED(scene); } | ||||
void PrimitiveRenderer::Render(Scene& scene, PrimitiveSource* primitive) | void PrimitiveRenderer::Render(Scene& scene, PrimitiveSource* primitive) | ||||
@@ -56,10 +93,10 @@ void PrimitiveRenderer::Render(Scene& scene, PrimitiveSource* primitive) | |||||
UNUSED(primitive); | UNUSED(primitive); | ||||
} | } | ||||
//----------------------------------------------------------------------------- | |||||
/* | /* | ||||
* Scene implementation class | * Scene implementation class | ||||
*/ | */ | ||||
class SceneData | class SceneData | ||||
{ | { | ||||
friend class Scene; | friend class Scene; | ||||
@@ -78,12 +115,15 @@ private: | |||||
static uint64_t m_used_id; | static uint64_t m_used_id; | ||||
uint64_t m_mask_id = 0; | 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 | * 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: | * Primitives and renderers will be kept until: | ||||
* - Updated by entity | * - Updated by entity | ||||
* - Marked Fire&Forget | |||||
* - Scene is destroyed */ | * - Scene is destroyed */ | ||||
map<uintptr_t, array<PrimitiveRenderer*> > m_prim_renderers; | map<uintptr_t, array<PrimitiveRenderer*> > m_prim_renderers; | ||||
static map<uintptr_t, array<PrimitiveSource*> > m_prim_sources; | static map<uintptr_t, array<PrimitiveSource*> > m_prim_sources; | ||||
@@ -273,16 +313,6 @@ void Scene::Reset() | |||||
data->m_tile_bufs.Empty(); | data->m_tile_bufs.Empty(); | ||||
data->m_lights.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 ------------------------------------------------- | //---- Primitive source stuff ------------------------------------------------- | ||||
@@ -481,17 +511,35 @@ array<Light *> const &Scene::GetLights() | |||||
return data->m_lights; | 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() | void Scene::RenderPrimitives() | ||||
{ | { | ||||
ASSERT(!!data, "Trying to access a non-ready scene"); | 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 */ | /* new scenegraph */ | ||||
array<uintptr_t> keys = data->m_prim_renderers.keys(); | array<uintptr_t> keys = data->m_prim_renderers.keys(); | ||||
@@ -27,8 +27,6 @@ | |||||
namespace lol | namespace lol | ||||
{ | { | ||||
class SceneData; | |||||
//----------------------------------------------------------------------------- | //----------------------------------------------------------------------------- | ||||
class PrimitiveSource | 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 | class Scene | ||||
{ | { | ||||
friend class Video; | friend class Video; | ||||
@@ -90,9 +123,6 @@ public: | |||||
void Reset(); | 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 */ | # 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); | void AddLight(Light *light); | ||||
array<Light *> const &GetLights(); | array<Light *> const &GetLights(); | ||||
/* === Render stuff === */ | |||||
void SetDisplay(SceneDisplay* display); | |||||
void EnableDisplay(); | |||||
void DisableDisplay(); | |||||
void RenderPrimitives(); | void RenderPrimitives(); | ||||
void RenderTiles(); | void RenderTiles(); | ||||
void RenderLines(float seconds); | void RenderLines(float seconds); | ||||
@@ -428,7 +428,6 @@ void TickerData::DrawThreadTick() | |||||
case Entity::DRAWGROUP_BEGIN: | case Entity::DRAWGROUP_BEGIN: | ||||
for (ptrdiff_t i = 0; i < Scene::GetCount(); i++) | for (ptrdiff_t i = 0; i < Scene::GetCount(); i++) | ||||
Scene::GetScene(i).Reset(); | Scene::GetScene(i).Reset(); | ||||
g_renderer->Clear(ClearMask::All); | |||||
break; | break; | ||||
default: | default: | ||||
break; | break; | ||||
@@ -469,7 +468,9 @@ void TickerData::DrawThreadTick() | |||||
Scene& scene = Scene::GetScene(idx); | Scene& scene = Scene::GetScene(idx); | ||||
/* Enable display */ | /* Enable display */ | ||||
//scene.EnableDisplay(); //TODO | |||||
scene.EnableDisplay(); | |||||
Renderer::Get(idx)->Clear(ClearMask::All); | |||||
/* Do the render step */ | /* Do the render step */ | ||||
scene.RenderPrimitives(); | scene.RenderPrimitives(); | ||||
@@ -477,7 +478,7 @@ void TickerData::DrawThreadTick() | |||||
scene.RenderLines(data->deltatime); | scene.RenderLines(data->deltatime); | ||||
/* Disable display */ | /* Disable display */ | ||||
//scene.DisableDisplay(); //TODO | |||||
scene.DisableDisplay(); | |||||
} | } | ||||
Profiler::Stop(Profiler::STAT_TICK_DRAW); | Profiler::Stop(Profiler::STAT_TICK_DRAW); | ||||
@@ -45,7 +45,8 @@ DebugRenderMode VideoData::render_mode = DebugRenderMode::Default; | |||||
void Video::Setup(ivec2 size) | void Video::Setup(ivec2 size) | ||||
{ | { | ||||
g_renderer = new Renderer(size); | |||||
//g_renderer = new Renderer(size); | |||||
Renderer::AddNew(size); | |||||
Scene::AddNew(size); | Scene::AddNew(size); | ||||
/* Initialise reasonable scene default properties */ | /* Initialise reasonable scene default properties */ | ||||
@@ -95,9 +96,10 @@ DebugRenderMode Video::GetDebugRenderMode() | |||||
void Video::Destroy() | void Video::Destroy() | ||||
{ | { | ||||
Scene::DestroyAll(); | Scene::DestroyAll(); | ||||
Renderer::DestroyAll(); | |||||
delete g_renderer; | |||||
g_renderer = nullptr; | |||||
//delete g_renderer; | |||||
//g_renderer = nullptr; | |||||
} | } | ||||
void Video::Capture(uint32_t *buffer) | void Video::Capture(uint32_t *buffer) | ||||
@@ -132,7 +134,7 @@ void Video::Capture(uint32_t *buffer) | |||||
ivec2 Video::GetSize() | ivec2 Video::GetSize() | ||||
{ | { | ||||
return g_renderer->GetViewport().extent(); | |||||
return Renderer::Get()->GetViewport().extent(); | |||||
} | } | ||||
} /* namespace lol */ | } /* namespace lol */ | ||||