| @@ -386,6 +386,7 @@ | |||||
| 575587359A2F65312CE97AC4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_graphics.mm"; path = "../../../../modules/juce_graphics/juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; }; | 575587359A2F65312CE97AC4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_graphics.mm"; path = "../../../../modules/juce_graphics/juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 579D22DA6ECC930E19B7104A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = "SOURCE_ROOT"; }; | 579D22DA6ECC930E19B7104A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = "SOURCE_ROOT"; }; | ||||
| 58061ADC1867C814A334D49D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | 58061ADC1867C814A334D49D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 58864C3D7F369EBE01E42C5C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLShaderProgram.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 591E3F5832C08B0841971B01 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | 591E3F5832C08B0841971B01 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 59591325C73706DB6BD2C887 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilePreviewComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; | 59591325C73706DB6BD2C887 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilePreviewComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 5996F037CD5993251871573E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableShape.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp"; sourceTree = "SOURCE_ROOT"; }; | 5996F037CD5993251871573E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableShape.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -527,6 +528,7 @@ | |||||
| 8391251872CF6C7C11F11EEC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; }; | 8391251872CF6C7C11F11EEC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 83D67DD10BD2ACDC0984ADCB = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = InterprocessCommsDemo.cpp; path = ../../Source/demos/InterprocessCommsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; | 83D67DD10BD2ACDC0984ADCB = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = InterprocessCommsDemo.cpp; path = ../../Source/demos/InterprocessCommsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; | ||||
| 840EF2C371FCC5690DA216F6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; }; | 840EF2C371FCC5690DA216F6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8565630D87FEE505D50CE2EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLExtensions.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGLExtensions.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 85D1779E60213BC6670E2C75 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringArray.h"; path = "../../../../modules/juce_core/text/juce_StringArray.h"; sourceTree = "SOURCE_ROOT"; }; | 85D1779E60213BC6670E2C75 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringArray.h"; path = "../../../../modules/juce_core/text/juce_StringArray.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8603713AFBC316218045A963 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | 8603713AFBC316218045A963 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 868D4BEF6B94EB7BF659CF01 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_core.mm"; path = "../../../../modules/juce_core/juce_core.mm"; sourceTree = "SOURCE_ROOT"; }; | 868D4BEF6B94EB7BF659CF01 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_core.mm"; path = "../../../../modules/juce_core/juce_core.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -558,6 +560,7 @@ | |||||
| 8E6E18125D1046B97EF7AEE2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PreferencesPanel.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; | 8E6E18125D1046B97EF7AEE2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PreferencesPanel.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8E7F5F80EB6D99EED152A465 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_AudioUnitPluginFormat.mm"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm"; sourceTree = "SOURCE_ROOT"; }; | 8E7F5F80EB6D99EED152A465 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_AudioUnitPluginFormat.mm"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8EB9B4853F225BDB97D6626E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CoreGraphicsContext.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm"; sourceTree = "SOURCE_ROOT"; }; | 8EB9B4853F225BDB97D6626E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CoreGraphicsContext.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8EEB4DEB11F3DF01BA6F7528 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLShaderProgram.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 8F1D89D1349B0DCC115B5D47 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; | 8F1D89D1349B0DCC115B5D47 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8F37F4E9DB8E42EDF29DE166 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CameraDemo.cpp; path = ../../Source/demos/CameraDemo.cpp; sourceTree = "SOURCE_ROOT"; }; | 8F37F4E9DB8E42EDF29DE166 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CameraDemo.cpp; path = ../../Source/demos/CameraDemo.cpp; sourceTree = "SOURCE_ROOT"; }; | ||||
| 904B316152B6C23112E0A0B1 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_processors/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | 904B316152B6C23112E0A0B1 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_processors/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -1903,6 +1906,8 @@ | |||||
| 17422D876DAAF091ED089B8D, | 17422D876DAAF091ED089B8D, | ||||
| B81FA2ED22BCC03D124031ED, | B81FA2ED22BCC03D124031ED, | ||||
| 942191F317B1B2B1CFBB7C60, | 942191F317B1B2B1CFBB7C60, | ||||
| 58864C3D7F369EBE01E42C5C, | |||||
| 8EEB4DEB11F3DF01BA6F7528, | |||||
| FE9A5898294228EB7F439951, | FE9A5898294228EB7F439951, | ||||
| 4CFB262AA9778621B8B33A7D, | 4CFB262AA9778621B8B33A7D, | ||||
| EC89003BF30329181BB3EA4B, | EC89003BF30329181BB3EA4B, | ||||
| @@ -1912,6 +1917,7 @@ | |||||
| ED9FAEA9116C568942BAD000, | ED9FAEA9116C568942BAD000, | ||||
| 6E1CFF5227B2F2E200DD9EC7, | 6E1CFF5227B2F2E200DD9EC7, | ||||
| AE394742FA0F2C6AA39906DD, | AE394742FA0F2C6AA39906DD, | ||||
| 8565630D87FEE505D50CE2EF, | |||||
| D66048AF1E05FF836B2A813A ); name = native; sourceTree = "<group>"; }; | D66048AF1E05FF836B2A813A ); name = native; sourceTree = "<group>"; }; | ||||
| 7CFCB9A92FB574419734C1F5 = { isa = PBXGroup; children = ( | 7CFCB9A92FB574419734C1F5 = { isa = PBXGroup; children = ( | ||||
| EB8917291F41B7345B13B53E, | EB8917291F41B7345B13B53E, | ||||
| @@ -4311,6 +4311,17 @@ | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| @@ -4348,6 +4359,7 @@ | |||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| @@ -4311,6 +4311,17 @@ | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| @@ -4348,6 +4359,7 @@ | |||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| @@ -1157,6 +1157,9 @@ | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> | ||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | <ExcludedFromBuild>true</ExcludedFromBuild> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | ||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | <ExcludedFromBuild>true</ExcludedFromBuild> | ||||
| </ClCompile> | </ClCompile> | ||||
| @@ -1607,9 +1610,11 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\juce_opengl.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\juce_opengl.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_DirectShowComponent.h"/> | <ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_DirectShowComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_QuickTimeMovieComponent.h"/> | <ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_QuickTimeMovieComponent.h"/> | ||||
| @@ -1510,6 +1510,9 @@ | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| @@ -2826,6 +2829,9 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"> | |||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -2835,6 +2841,9 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\juce_opengl.h"> | <ClInclude Include="..\..\..\..\modules\juce_opengl\juce_opengl.h"> | ||||
| <Filter>Juce Modules\juce_opengl</Filter> | <Filter>Juce Modules\juce_opengl</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -379,6 +379,7 @@ | |||||
| 575587359A2F65312CE97AC4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_graphics.mm"; path = "../../../../modules/juce_graphics/juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; }; | 575587359A2F65312CE97AC4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_graphics.mm"; path = "../../../../modules/juce_graphics/juce_graphics.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 579D22DA6ECC930E19B7104A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = "SOURCE_ROOT"; }; | 579D22DA6ECC930E19B7104A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = BinaryData.cpp; path = ../../JuceLibraryCode/BinaryData.cpp; sourceTree = "SOURCE_ROOT"; }; | ||||
| 58061ADC1867C814A334D49D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | 58061ADC1867C814A334D49D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_FileInputStream.cpp"; path = "../../../../modules/juce_core/files/juce_FileInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 58864C3D7F369EBE01E42C5C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLShaderProgram.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 591E3F5832C08B0841971B01 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | 591E3F5832C08B0841971B01 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertyComponent.cpp"; path = "../../../../modules/juce_gui_basics/properties/juce_PropertyComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 59591325C73706DB6BD2C887 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilePreviewComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; | 59591325C73706DB6BD2C887 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_FilePreviewComponent.h"; path = "../../../../modules/juce_gui_basics/filebrowser/juce_FilePreviewComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 5996F037CD5993251871573E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableShape.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp"; sourceTree = "SOURCE_ROOT"; }; | 5996F037CD5993251871573E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_DrawableShape.cpp"; path = "../../../../modules/juce_gui_basics/drawables/juce_DrawableShape.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -520,6 +521,7 @@ | |||||
| 8391251872CF6C7C11F11EEC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; }; | 8391251872CF6C7C11F11EEC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Identifier.cpp"; path = "../../../../modules/juce_core/text/juce_Identifier.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 83D67DD10BD2ACDC0984ADCB = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = InterprocessCommsDemo.cpp; path = ../../Source/demos/InterprocessCommsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; | 83D67DD10BD2ACDC0984ADCB = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = InterprocessCommsDemo.cpp; path = ../../Source/demos/InterprocessCommsDemo.cpp; sourceTree = "SOURCE_ROOT"; }; | ||||
| 840EF2C371FCC5690DA216F6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; }; | 840EF2C371FCC5690DA216F6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SHA256.h"; path = "../../../../modules/juce_cryptography/hashing/juce_SHA256.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8565630D87FEE505D50CE2EF = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLExtensions.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGLExtensions.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 85D1779E60213BC6670E2C75 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringArray.h"; path = "../../../../modules/juce_core/text/juce_StringArray.h"; sourceTree = "SOURCE_ROOT"; }; | 85D1779E60213BC6670E2C75 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_StringArray.h"; path = "../../../../modules/juce_core/text/juce_StringArray.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8603713AFBC316218045A963 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | 8603713AFBC316218045A963 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_MemoryInputStream.cpp"; path = "../../../../modules/juce_core/streams/juce_MemoryInputStream.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 868D4BEF6B94EB7BF659CF01 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_core.mm"; path = "../../../../modules/juce_core/juce_core.mm"; sourceTree = "SOURCE_ROOT"; }; | 868D4BEF6B94EB7BF659CF01 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_core.mm"; path = "../../../../modules/juce_core/juce_core.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -550,6 +552,7 @@ | |||||
| 8E6E18125D1046B97EF7AEE2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PreferencesPanel.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; | 8E6E18125D1046B97EF7AEE2 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PreferencesPanel.cpp"; path = "../../../../modules/juce_gui_extra/misc/juce_PreferencesPanel.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8E7F5F80EB6D99EED152A465 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_AudioUnitPluginFormat.mm"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm"; sourceTree = "SOURCE_ROOT"; }; | 8E7F5F80EB6D99EED152A465 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_AudioUnitPluginFormat.mm"; path = "../../../../modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8EB9B4853F225BDB97D6626E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CoreGraphicsContext.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm"; sourceTree = "SOURCE_ROOT"; }; | 8EB9B4853F225BDB97D6626E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CoreGraphicsContext.mm"; path = "../../../../modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8EEB4DEB11F3DF01BA6F7528 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLShaderProgram.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 8F1D89D1349B0DCC115B5D47 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; | 8F1D89D1349B0DCC115B5D47 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Threads.cpp"; path = "../../../../modules/juce_core/native/juce_win32_Threads.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8F37F4E9DB8E42EDF29DE166 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CameraDemo.cpp; path = ../../Source/demos/CameraDemo.cpp; sourceTree = "SOURCE_ROOT"; }; | 8F37F4E9DB8E42EDF29DE166 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CameraDemo.cpp; path = ../../Source/demos/CameraDemo.cpp; sourceTree = "SOURCE_ROOT"; }; | ||||
| 904B316152B6C23112E0A0B1 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_processors/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | 904B316152B6C23112E0A0B1 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_audio_processors/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -1893,6 +1896,8 @@ | |||||
| 17422D876DAAF091ED089B8D, | 17422D876DAAF091ED089B8D, | ||||
| B81FA2ED22BCC03D124031ED, | B81FA2ED22BCC03D124031ED, | ||||
| 942191F317B1B2B1CFBB7C60, | 942191F317B1B2B1CFBB7C60, | ||||
| 58864C3D7F369EBE01E42C5C, | |||||
| 8EEB4DEB11F3DF01BA6F7528, | |||||
| FE9A5898294228EB7F439951, | FE9A5898294228EB7F439951, | ||||
| 4CFB262AA9778621B8B33A7D, | 4CFB262AA9778621B8B33A7D, | ||||
| EC89003BF30329181BB3EA4B, | EC89003BF30329181BB3EA4B, | ||||
| @@ -1902,6 +1907,7 @@ | |||||
| ED9FAEA9116C568942BAD000, | ED9FAEA9116C568942BAD000, | ||||
| 6E1CFF5227B2F2E200DD9EC7, | 6E1CFF5227B2F2E200DD9EC7, | ||||
| AE394742FA0F2C6AA39906DD, | AE394742FA0F2C6AA39906DD, | ||||
| 8565630D87FEE505D50CE2EF, | |||||
| D66048AF1E05FF836B2A813A ); name = native; sourceTree = "<group>"; }; | D66048AF1E05FF836B2A813A ); name = native; sourceTree = "<group>"; }; | ||||
| 7CFCB9A92FB574419734C1F5 = { isa = PBXGroup; children = ( | 7CFCB9A92FB574419734C1F5 = { isa = PBXGroup; children = ( | ||||
| EB8917291F41B7345B13B53E, | EB8917291F41B7345B13B53E, | ||||
| @@ -284,6 +284,7 @@ | |||||
| 43ABAFF6AEA0A0C39A0E61DA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_ActiveXComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | 43ABAFF6AEA0A0C39A0E61DA = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_ActiveXComponent.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_win32_ActiveXComponent.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 43D23C18695F24F9A3DFA7B4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLFrameBuffer.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp"; sourceTree = "SOURCE_ROOT"; }; | 43D23C18695F24F9A3DFA7B4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLFrameBuffer.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 4420BE21E3F857BA1FFE7E1A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlyphArrangement.h"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.h"; sourceTree = "SOURCE_ROOT"; }; | 4420BE21E3F857BA1FFE7E1A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_GlyphArrangement.h"; path = "../../../../modules/juce_graphics/fonts/juce_GlyphArrangement.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 442E6311FB54378E88B6811C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLShaderProgram.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 44AF5FE624EC693DC25C453C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Audio.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_Audio.cpp"; sourceTree = "SOURCE_ROOT"; }; | 44AF5FE624EC693DC25C453C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_Audio.cpp"; path = "../../../../modules/juce_audio_devices/native/juce_android_Audio.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 44B8CAEA9946E2D8B72B85FB = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_cryptography/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | 44B8CAEA9946E2D8B72B85FB = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_cryptography/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 45200F793669CADC5D279093 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_graphics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | 45200F793669CADC5D279093 = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_graphics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -495,6 +496,7 @@ | |||||
| 8B9FDF0245BB8A4AA9996C3C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Synthesiser.h"; path = "../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h"; sourceTree = "SOURCE_ROOT"; }; | 8B9FDF0245BB8A4AA9996C3C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Synthesiser.h"; path = "../../../../modules/juce_audio_basics/synthesisers/juce_Synthesiser.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8BA1AF085755958342C9213A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLPixelFormat.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.h"; sourceTree = "SOURCE_ROOT"; }; | 8BA1AF085755958342C9213A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLPixelFormat.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLPixelFormat.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8BD050801C810B95634B6326 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OwnedArray.h"; path = "../../../../modules/juce_core/containers/juce_OwnedArray.h"; sourceTree = "SOURCE_ROOT"; }; | 8BD050801C810B95634B6326 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OwnedArray.h"; path = "../../../../modules/juce_core/containers/juce_OwnedArray.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8BD67EC10CC86AB4DB096E5D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLExtensions.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGLExtensions.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 8C45248B3DA51C23552039C7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Memory.h"; path = "../../../../modules/juce_core/memory/juce_Memory.h"; sourceTree = "SOURCE_ROOT"; }; | 8C45248B3DA51C23552039C7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Memory.h"; path = "../../../../modules/juce_core/memory/juce_Memory.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8CB152030AF66AD83C910064 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableEdgeComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h"; sourceTree = "SOURCE_ROOT"; }; | 8CB152030AF66AD83C910064 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ResizableEdgeComponent.h"; path = "../../../../modules/juce_gui_basics/layout/juce_ResizableEdgeComponent.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 8CC281F3463EE9BCA6379E81 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PNGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_PNGLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; | 8CC281F3463EE9BCA6379E81 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PNGLoader.cpp"; path = "../../../../modules/juce_graphics/image_formats/juce_PNGLoader.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -772,6 +774,7 @@ | |||||
| DEEFCE87BE3B9D7AFC7ADC16 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandInfo.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp"; sourceTree = "SOURCE_ROOT"; }; | DEEFCE87BE3B9D7AFC7ADC16 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ApplicationCommandInfo.cpp"; path = "../../../../modules/juce_gui_basics/commands/juce_ApplicationCommandInfo.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| DF309886A3D26FC34280B329 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CameraDevice.mm"; path = "../../../../modules/juce_video/native/juce_mac_CameraDevice.mm"; sourceTree = "SOURCE_ROOT"; }; | DF309886A3D26FC34280B329 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_CameraDevice.mm"; path = "../../../../modules/juce_video/native/juce_mac_CameraDevice.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| DF614EDBEA2D76889E002465 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; | DF614EDBEA2D76889E002465 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_linux_SystemTrayIcon.cpp"; path = "../../../../modules/juce_gui_extra/native/juce_linux_SystemTrayIcon.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| DFE18134F58A9C546AD16FF7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLShaderProgram.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| DFF6CC63DE1396FE7E540246 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DocumentWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.h"; sourceTree = "SOURCE_ROOT"; }; | DFF6CC63DE1396FE7E540246 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DocumentWindow.h"; path = "../../../../modules/juce_gui_basics/windows/juce_DocumentWindow.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| E000EB4363C6887897FB457C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_URL.h"; path = "../../../../modules/juce_core/network/juce_URL.h"; sourceTree = "SOURCE_ROOT"; }; | E000EB4363C6887897FB457C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_URL.h"; path = "../../../../modules/juce_core/network/juce_URL.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| E01C957605B8B074A13A5442 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Drawable.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.h"; sourceTree = "SOURCE_ROOT"; }; | E01C957605B8B074A13A5442 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Drawable.h"; path = "../../../../modules/juce_gui_basics/drawables/juce_Drawable.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -1825,6 +1828,8 @@ | |||||
| 4CE76ABC51CC5E019AED3C2B, | 4CE76ABC51CC5E019AED3C2B, | ||||
| 8BA1AF085755958342C9213A, | 8BA1AF085755958342C9213A, | ||||
| 597D5688E23397FE09F53BA3, | 597D5688E23397FE09F53BA3, | ||||
| DFE18134F58A9C546AD16FF7, | |||||
| 442E6311FB54378E88B6811C, | |||||
| 651055751E902F40B83EFD55, | 651055751E902F40B83EFD55, | ||||
| 09089786B542AEB678DDE38F, | 09089786B542AEB678DDE38F, | ||||
| A1DC3C215187E6DD24DD7330, | A1DC3C215187E6DD24DD7330, | ||||
| @@ -1834,6 +1839,7 @@ | |||||
| 6E673B706EA21387275F30FD, | 6E673B706EA21387275F30FD, | ||||
| D4CC4DE44C44AEE40085ACD7, | D4CC4DE44C44AEE40085ACD7, | ||||
| 1668565234C6F9C31363BBE2, | 1668565234C6F9C31363BBE2, | ||||
| 8BD67EC10CC86AB4DB096E5D, | |||||
| 7916CA65827E16B3775C4952 ); name = native; sourceTree = "<group>"; }; | 7916CA65827E16B3775C4952 ); name = native; sourceTree = "<group>"; }; | ||||
| 2C43A64E61A92F2912632BD6 = { isa = PBXGroup; children = ( | 2C43A64E61A92F2912632BD6 = { isa = PBXGroup; children = ( | ||||
| E23F6FDE88C4164420DC07F6, | E23F6FDE88C4164420DC07F6, | ||||
| @@ -4234,6 +4234,17 @@ | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| @@ -4271,6 +4282,7 @@ | |||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| @@ -4234,6 +4234,17 @@ | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| @@ -4271,6 +4282,7 @@ | |||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| @@ -104,6 +104,7 @@ | |||||
| 1BD4A4D61D4C3F3D142B1662 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MainMenu.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_MainMenu.mm"; sourceTree = "SOURCE_ROOT"; }; | 1BD4A4D61D4C3F3D142B1662 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_MainMenu.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_MainMenu.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 1BD7DBC48F6BEAD09054FD7F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Label.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.cpp"; sourceTree = "SOURCE_ROOT"; }; | 1BD7DBC48F6BEAD09054FD7F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Label.cpp"; path = "../../../../modules/juce_gui_basics/widgets/juce_Label.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 1BE43FB3C7B4D333AEC3A815 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_EdgeTable.h"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.h"; sourceTree = "SOURCE_ROOT"; }; | 1BE43FB3C7B4D333AEC3A815 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_EdgeTable.h"; path = "../../../../modules/juce_graphics/geometry/juce_EdgeTable.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 1DC59B4A97D5DF77801ACAE8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_OpenGLShaderProgram.cpp"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||||
| 1DFB6A05551154B15FE6AC50 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_CameraDevice.cpp"; path = "../../../../modules/juce_video/native/juce_android_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; }; | 1DFB6A05551154B15FE6AC50 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_android_CameraDevice.cpp"; path = "../../../../modules/juce_video/native/juce_android_CameraDevice.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 1E2FA777B3F7449B81F2A951 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; }; | 1E2FA777B3F7449B81F2A951 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CharPointer_UTF32.h"; path = "../../../../modules/juce_core/text/juce_CharPointer_UTF32.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| 1E56E15EC4C962B323A2F926 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathIterator.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathIterator.h"; sourceTree = "SOURCE_ROOT"; }; | 1E56E15EC4C962B323A2F926 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_PathIterator.h"; path = "../../../../modules/juce_graphics/geometry/juce_PathIterator.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -774,6 +775,7 @@ | |||||
| F137AE2B36202827756A577A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryMappedFile.h"; path = "../../../../modules/juce_core/files/juce_MemoryMappedFile.h"; sourceTree = "SOURCE_ROOT"; }; | F137AE2B36202827756A577A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MemoryMappedFile.h"; path = "../../../../modules/juce_core/files/juce_MemoryMappedFile.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| F13CEEB19F05F090CF2151DC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioCDReader.h"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDReader.h"; sourceTree = "SOURCE_ROOT"; }; | F13CEEB19F05F090CF2151DC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioCDReader.h"; path = "../../../../modules/juce_audio_devices/audio_cd/juce_AudioCDReader.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| F1E2795D2366C2A9F9B4E08F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; | F1E2795D2366C2A9F9B4E08F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ActionBroadcaster.h"; path = "../../../../modules/juce_events/broadcasters/juce_ActionBroadcaster.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| F28767C5606E63E66146E375 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLExtensions.h"; path = "../../../../modules/juce_opengl/native/juce_OpenGLExtensions.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| F32627C277EB3422D4DDB41D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiInput.h"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiInput.h"; sourceTree = "SOURCE_ROOT"; }; | F32627C277EB3422D4DDB41D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_MidiInput.h"; path = "../../../../modules/juce_audio_devices/midi_io/juce_MidiInput.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| F3C526756D49C88DA3110221 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_FileChooser.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm"; sourceTree = "SOURCE_ROOT"; }; | F3C526756D49C88DA3110221 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = "juce_mac_FileChooser.mm"; path = "../../../../modules/juce_gui_basics/native/juce_mac_FileChooser.mm"; sourceTree = "SOURCE_ROOT"; }; | ||||
| F3FF4B3C372619CEF134B522 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertySet.cpp"; path = "../../../../modules/juce_core/containers/juce_PropertySet.cpp"; sourceTree = "SOURCE_ROOT"; }; | F3FF4B3C372619CEF134B522 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_PropertySet.cpp"; path = "../../../../modules/juce_core/containers/juce_PropertySet.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -786,6 +788,7 @@ | |||||
| F67830F82C071DEDFE0B43A9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../../modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; }; | F67830F82C071DEDFE0B43A9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_posix_SharedCode.h"; path = "../../../../modules/juce_core/native/juce_posix_SharedCode.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| F687E441210FEB4EEFB0CC33 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; }; | F687E441210FEB4EEFB0CC33 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SpinLock.h"; path = "../../../../modules/juce_core/threads/juce_SpinLock.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| F68ED837371C2CA43A42793F = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_graphics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | F68ED837371C2CA43A42793F = { isa = PBXFileReference; lastKnownFileType = file; name = "juce_module_info"; path = "../../../../modules/juce_graphics/juce_module_info"; sourceTree = "SOURCE_ROOT"; }; | ||||
| F7010D646D19C704DE9D42A1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_OpenGLShaderProgram.h"; path = "../../../../modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h"; sourceTree = "SOURCE_ROOT"; }; | |||||
| F741F678F4394466750DBCF0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Expression.cpp"; path = "../../../../modules/juce_core/maths/juce_Expression.cpp"; sourceTree = "SOURCE_ROOT"; }; | F741F678F4394466750DBCF0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Expression.cpp"; path = "../../../../modules/juce_core/maths/juce_Expression.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| F769353495D4D50DB4B0DC31 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrowButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h"; sourceTree = "SOURCE_ROOT"; }; | F769353495D4D50DB4B0DC31 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ArrowButton.h"; path = "../../../../modules/juce_gui_basics/buttons/juce_ArrowButton.h"; sourceTree = "SOURCE_ROOT"; }; | ||||
| F7D11568291BA9EA434B7CFB = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentListener.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_ComponentListener.cpp"; sourceTree = "SOURCE_ROOT"; }; | F7D11568291BA9EA434B7CFB = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ComponentListener.cpp"; path = "../../../../modules/juce_gui_basics/components/juce_ComponentListener.cpp"; sourceTree = "SOURCE_ROOT"; }; | ||||
| @@ -1744,6 +1747,8 @@ | |||||
| 7251827C30AC1C4F55C3DB69, | 7251827C30AC1C4F55C3DB69, | ||||
| 6D95302F8D68BA3F0538214F, | 6D95302F8D68BA3F0538214F, | ||||
| 9E067C6101B6E2D11365EBDC, | 9E067C6101B6E2D11365EBDC, | ||||
| 1DC59B4A97D5DF77801ACAE8, | |||||
| F7010D646D19C704DE9D42A1, | |||||
| A0D54F01BC8018CC41FA34E9, | A0D54F01BC8018CC41FA34E9, | ||||
| 53B9B6090EDB9B6E0FA8577F, | 53B9B6090EDB9B6E0FA8577F, | ||||
| 154C4985C134E2B4A7B87025, | 154C4985C134E2B4A7B87025, | ||||
| @@ -1753,6 +1758,7 @@ | |||||
| BFBA3FCA1C3F9FD3BB8146B8, | BFBA3FCA1C3F9FD3BB8146B8, | ||||
| 5DB822375EE0E803E8E448D4, | 5DB822375EE0E803E8E448D4, | ||||
| 3682BBAEC6842DE49899AEF0, | 3682BBAEC6842DE49899AEF0, | ||||
| F28767C5606E63E66146E375, | |||||
| 39373A988D28974E62BE9DC5 ); name = native; sourceTree = "<group>"; }; | 39373A988D28974E62BE9DC5 ); name = native; sourceTree = "<group>"; }; | ||||
| 9CAD7248065B9A6C050F9527 = { isa = PBXGroup; children = ( | 9CAD7248065B9A6C050F9527 = { isa = PBXGroup; children = ( | ||||
| 543980D718ACBB76513A4AF0, | 543980D718ACBB76513A4AF0, | ||||
| @@ -4125,6 +4125,17 @@ | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <FileConfiguration Name="Debug|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| <FileConfiguration Name="Release|Win32" | |||||
| ExcludedFromBuild="true"> | |||||
| <Tool Name="VCCLCompilerTool"/> | |||||
| </FileConfiguration> | |||||
| </File> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | <File RelativePath="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| @@ -4162,6 +4173,7 @@ | |||||
| </FileConfiguration> | </FileConfiguration> | ||||
| </File> | </File> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"/> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_mac_OpenGLComponent.mm"/> | ||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | |||||
| <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | <File RelativePath="..\..\..\..\modules\juce_opengl\native\juce_win32_OpenGLComponent.cpp"> | ||||
| <FileConfiguration Name="Debug|Win32" | <FileConfiguration Name="Debug|Win32" | ||||
| ExcludedFromBuild="true"> | ExcludedFromBuild="true"> | ||||
| @@ -1120,6 +1120,9 @@ | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> | ||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | <ExcludedFromBuild>true</ExcludedFromBuild> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | ||||
| <ExcludedFromBuild>true</ExcludedFromBuild> | <ExcludedFromBuild>true</ExcludedFromBuild> | ||||
| </ClCompile> | </ClCompile> | ||||
| @@ -1553,9 +1556,11 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLPixelFormat.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Quaternion.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"/> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\juce_opengl.h"/> | <ClInclude Include="..\..\..\..\modules\juce_opengl\juce_opengl.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_DirectShowComponent.h"/> | <ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_DirectShowComponent.h"/> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_QuickTimeMovieComponent.h"/> | <ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_QuickTimeMovieComponent.h"/> | ||||
| @@ -1396,6 +1396,9 @@ | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp"> | |||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | |||||
| </ClCompile> | |||||
| <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | <ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClCompile> | </ClCompile> | ||||
| @@ -2661,6 +2664,9 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.h"> | |||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.h"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -2670,6 +2676,9 @@ | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"> | <ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h"> | ||||
| <Filter>Juce Modules\juce_opengl\opengl</Filter> | <Filter>Juce Modules\juce_opengl\opengl</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\native\juce_OpenGLExtensions.h"> | |||||
| <Filter>Juce Modules\juce_opengl\native</Filter> | |||||
| </ClInclude> | |||||
| <ClInclude Include="..\..\..\..\modules\juce_opengl\juce_opengl.h"> | <ClInclude Include="..\..\..\..\modules\juce_opengl\juce_opengl.h"> | ||||
| <Filter>Juce Modules\juce_opengl</Filter> | <Filter>Juce Modules\juce_opengl</Filter> | ||||
| </ClInclude> | </ClInclude> | ||||
| @@ -344,13 +344,13 @@ const int16 huffmanTab24[] = | |||||
| -1,51,20,-9,-5,-1,65,-1,4,64,-1,35,50,-1,19,49,-7,-5,-3,-1,3,48,34,18,-1,33,-1,2,32,-3,-1,17,1,-1,16,0 | -1,51,20,-9,-5,-1,65,-1,4,64,-1,35,50,-1,19,49,-7,-5,-3,-1,3,48,34,18,-1,33,-1,2,32,-3,-1,17,1,-1,16,0 | ||||
| }; | }; | ||||
| struct newhuff | |||||
| struct BitsToTableMap | |||||
| { | { | ||||
| uint32 linbits; | |||||
| uint32 bits; | |||||
| const int16* table; | const int16* table; | ||||
| }; | }; | ||||
| const newhuff huffmanTables1[] = | |||||
| const BitsToTableMap huffmanTables1[] = | |||||
| { | { | ||||
| { 0, huffmanTab0 }, { 0, huffmanTab1 }, { 0, huffmanTab2 }, { 0, huffmanTab3 }, | { 0, huffmanTab0 }, { 0, huffmanTab1 }, { 0, huffmanTab2 }, { 0, huffmanTab3 }, | ||||
| { 0, huffmanTab0 }, { 0, huffmanTab5 }, { 0, huffmanTab6 }, { 0, huffmanTab7 }, | { 0, huffmanTab0 }, { 0, huffmanTab5 }, { 0, huffmanTab6 }, { 0, huffmanTab7 }, | ||||
| @@ -365,7 +365,7 @@ const newhuff huffmanTables1[] = | |||||
| const int16 huffmanTabC0[] = { -29,-21,-13,-7,-3,-1,11,15,-1,13,14,-3,-1,7,5,9,-3,-1,6,3,-1,10,12,-3,-1,2,1,-1,4,8,0 }; | const int16 huffmanTabC0[] = { -29,-21,-13,-7,-3,-1,11,15,-1,13,14,-3,-1,7,5,9,-3,-1,6,3,-1,10,12,-3,-1,2,1,-1,4,8,0 }; | ||||
| const int16 huffmanTabC1[] = { -15,-7,-3,-1,15,14,-1,13,12,-3,-1,11,10,-1,9,8,-7,-3,-1,7,6,-1,5,4,-3,-1,3,2,-1,1,0 }; | const int16 huffmanTabC1[] = { -15,-7,-3,-1,15,14,-1,13,12,-3,-1,11,10,-1,9,8,-7,-3,-1,7,6,-1,5,4,-3,-1,3,2,-1,1,0 }; | ||||
| const newhuff huffmanTables2[] = { { 0, huffmanTabC0 }, { 0, huffmanTabC1 } }; | |||||
| const BitsToTableMap huffmanTables2[] = { { 0, huffmanTabC0 }, { 0, huffmanTabC1 } }; | |||||
| //============================================================================== | //============================================================================== | ||||
| struct VBRTagData | struct VBRTagData | ||||
| @@ -443,27 +443,11 @@ struct VBRTagData | |||||
| } | } | ||||
| headersize = ((type + 1) * 72000 * bitrate) / sampleRate; | headersize = ((type + 1) * 72000 * bitrate) / sampleRate; | ||||
| data += 21; | |||||
| int encoderDelay = data[0] << 4; | |||||
| encoderDelay += data[1] >> 4; | |||||
| int encoderPadding = (data[1] & 15) << 8; | |||||
| encoderPadding += data[2]; | |||||
| if (encoderDelay < 0 || encoderDelay > 3000) | |||||
| encoderDelay = -1; | |||||
| if (encoderPadding < 0 || encoderPadding > 3000) | |||||
| encoderPadding = -1; | |||||
| encoderDelay = encoderDelay; | |||||
| encoderPadding = encoderPadding; | |||||
| return true; | return true; | ||||
| } | } | ||||
| uint8 toc[100]; | uint8 toc[100]; | ||||
| int sampleRate, flags, frames, bytes, vbrScale; | |||||
| int headersize, encoderDelay, encoderPadding; | |||||
| int sampleRate, flags, frames, bytes, vbrScale, headersize; | |||||
| private: | private: | ||||
| static bool isVbrTag (const uint8* const d) noexcept | static bool isVbrTag (const uint8* const d) noexcept | ||||
| @@ -634,22 +618,14 @@ private: | |||||
| { | { | ||||
| if (table < decodeWin + 512 + 16) | if (table < decodeWin + 512 + 16) | ||||
| table[16] = table[0] = (float) (decodeWindow[j] * scaleval); | table[16] = table[0] = (float) (decodeWindow[j] * scaleval); | ||||
| if (i % 32 == 31) | |||||
| table -= 1023; | |||||
| if (i % 64 == 63) | |||||
| scaleval = -scaleval; | |||||
| if (i % 32 == 31) table -= 1023; | |||||
| if (i % 64 == 63) scaleval = -scaleval; | |||||
| } | } | ||||
| } | } | ||||
| void initLayer2Tables() | void initLayer2Tables() | ||||
| { | { | ||||
| static const double mulmul[27] = | |||||
| { | |||||
| 0, -2.0 / 3.0, 2.0 / 3.0, 2.0 / 7.0, 2.0 / 15.0, 2.0 / 31.0, 2.0 / 63.0, 2.0 / 127.0, 2.0 / 255.0, | |||||
| 2.0 / 511.0, 2.0 / 1023.0, 2.0 / 2047.0, 2.0 / 4095.0, 2.0 / 8191.0, 2.0 / 16383.0, 2.0 / 32767.0, 2.0 / 65535.0, | |||||
| -4.0 / 5.0, -2.0 / 5.0, 2.0 / 5.0, 4.0 / 5.0, -8.0 / 9.0, -4.0 / 9.0, -2.0 / 9.0, 2.0 / 9.0, 4.0 / 9.0, 8.0 / 9.0 | |||||
| }; | |||||
| static const uint8 base[3][9] = | static const uint8 base[3][9] = | ||||
| { | { | ||||
| { 1, 0, 2 }, | { 1, 0, 2 }, | ||||
| @@ -657,30 +633,36 @@ private: | |||||
| { 21, 1, 22, 23, 0, 24, 25, 2, 26 } | { 21, 1, 22, 23, 0, 24, 25, 2, 26 } | ||||
| }; | }; | ||||
| static const int tablen[3] = { 3, 5, 9 }; | |||||
| static uint8* tables[3] = { group3tab, group5tab, group9tab }; | |||||
| static const int tableLengths[] = { 3, 5, 9 }; | |||||
| static uint8* tables[] = { group3tab, group5tab, group9tab }; | |||||
| for (int i = 0; i < 3; ++i) | for (int i = 0; i < 3; ++i) | ||||
| { | { | ||||
| uint8* itable = tables[i]; | |||||
| const int len = tablen[i]; | |||||
| uint8* table = tables[i]; | |||||
| const int len = tableLengths[i]; | |||||
| for (int j = 0; j < len; ++j) | for (int j = 0; j < len; ++j) | ||||
| for (int k = 0; k < len; ++k) | for (int k = 0; k < len; ++k) | ||||
| for (int l = 0; l < len; ++l) | for (int l = 0; l < len; ++l) | ||||
| { | { | ||||
| *itable++ = base[i][l]; | |||||
| *itable++ = base[i][k]; | |||||
| *itable++ = base[i][j]; | |||||
| *table++ = base[i][l]; | |||||
| *table++ = base[i][k]; | |||||
| *table++ = base[i][j]; | |||||
| } | } | ||||
| } | } | ||||
| for (int k = 0; k < 27; ++k) | for (int k = 0; k < 27; ++k) | ||||
| { | { | ||||
| const double m = mulmul[k]; | |||||
| static const double multipliers[] = | |||||
| { | |||||
| 0, -2.0 / 3.0, 2.0 / 3.0, 2.0 / 7.0, 2.0 / 15.0, 2.0 / 31.0, 2.0 / 63.0, 2.0 / 127.0, 2.0 / 255.0, | |||||
| 2.0 / 511.0, 2.0 / 1023.0, 2.0 / 2047.0, 2.0 / 4095.0, 2.0 / 8191.0, 2.0 / 16383.0, 2.0 / 32767.0, 2.0 / 65535.0, | |||||
| -4.0 / 5.0, -2.0 / 5.0, 2.0 / 5.0, 4.0 / 5.0, -8.0 / 9.0, -4.0 / 9.0, -2.0 / 9.0, 2.0 / 9.0, 4.0 / 9.0, 8.0 / 9.0 | |||||
| }; | |||||
| float* table = muls[k]; | float* table = muls[k]; | ||||
| for (int j = 3, i = 0; i < 63; ++i, --j) | for (int j = 3, i = 0; i < 63; ++i, --j) | ||||
| *table++ = (float) (m * pow (2.0, j / 3.0)); | |||||
| *table++ = (float) (multipliers[k] * pow (2.0, j / 3.0)); | |||||
| *table++ = 0; | *table++ = 0; | ||||
| } | } | ||||
| } | } | ||||
| @@ -1599,7 +1581,6 @@ struct MP3Stream | |||||
| bool vbrHeaderFound; | bool vbrHeaderFound; | ||||
| private: | private: | ||||
| int encoderDelay, encoderPadding; | |||||
| bool headerParsed, sideParsed, dataParsed, needToSyncBitStream; | bool headerParsed, sideParsed, dataParsed, needToSyncBitStream; | ||||
| bool isFreeFormat, wasFreeFormat; | bool isFreeFormat, wasFreeFormat; | ||||
| int sideInfoSize, dataSize; | int sideInfoSize, dataSize; | ||||
| @@ -1618,7 +1599,7 @@ private: | |||||
| void reset() noexcept | void reset() noexcept | ||||
| { | { | ||||
| headerParsed = sideParsed = dataParsed = isFreeFormat = wasFreeFormat = false; | headerParsed = sideParsed = dataParsed = isFreeFormat = wasFreeFormat = false; | ||||
| encoderDelay = encoderPadding = lastFrameSize = -1; | |||||
| lastFrameSize = -1; | |||||
| needToSyncBitStream = true; | needToSyncBitStream = true; | ||||
| frameSize = sideInfoSize = dataSize = frameSize = bitIndex = 0; | frameSize = sideInfoSize = dataSize = frameSize = bitIndex = 0; | ||||
| lastFrameSizeNoPadding = bufferSpaceIndex = 0; | lastFrameSizeNoPadding = bufferSpaceIndex = 0; | ||||
| @@ -1766,8 +1747,6 @@ private: | |||||
| if (vbrHeaderFound) | if (vbrHeaderFound) | ||||
| { | { | ||||
| numFrames = vbrTagData.frames; | numFrames = vbrTagData.frames; | ||||
| encoderDelay = vbrTagData.encoderDelay; | |||||
| encoderPadding = vbrTagData.encoderPadding; | |||||
| oldPos += jmax (vbrTagData.headersize, 1); | oldPos += jmax (vbrTagData.headersize, 1); | ||||
| } | } | ||||
| @@ -2532,7 +2511,7 @@ private: | |||||
| for (i = 0; i < 2; ++i) | for (i = 0; i < 2; ++i) | ||||
| { | { | ||||
| const newhuff* h = huffmanTables1 + granule.tableSelect[i]; | |||||
| const BitsToTableMap* h = huffmanTables1 + granule.tableSelect[i]; | |||||
| for (int lp = l[i]; lp != 0; --lp, --mc) | for (int lp = l[i]; lp != 0; --lp, --mc) | ||||
| { | { | ||||
| @@ -2572,8 +2551,8 @@ private: | |||||
| if (x == 15) | if (x == 15) | ||||
| { | { | ||||
| max[lwin] = cb; | max[lwin] = cb; | ||||
| part2remain -= h->linbits + 1; | |||||
| x += getBits ((int) h->linbits); | |||||
| part2remain -= h->bits + 1; | |||||
| x += getBits ((int) h->bits); | |||||
| *xrpnt = constants.nToThe4Over3[x] * (getOneBit() ? -v : v); | *xrpnt = constants.nToThe4Over3[x] * (getOneBit() ? -v : v); | ||||
| } | } | ||||
| else if (x) | else if (x) | ||||
| @@ -2590,8 +2569,8 @@ private: | |||||
| if (y == 15) | if (y == 15) | ||||
| { | { | ||||
| max[lwin] = cb; | max[lwin] = cb; | ||||
| part2remain -= h->linbits + 1; | |||||
| y += getBits ((int) h->linbits); | |||||
| part2remain -= h->bits + 1; | |||||
| y += getBits ((int) h->bits); | |||||
| *xrpnt = constants.nToThe4Over3[y] * (getOneBit() ? -v : v); | *xrpnt = constants.nToThe4Over3[y] * (getOneBit() ? -v : v); | ||||
| } | } | ||||
| else if (y) | else if (y) | ||||
| @@ -2609,7 +2588,7 @@ private: | |||||
| for (; l3 && (part2remain > 0); --l3) | for (; l3 && (part2remain > 0); --l3) | ||||
| { | { | ||||
| const newhuff* h = huffmanTables2 + granule.count1TableSelect; | |||||
| const BitsToTableMap* h = huffmanTables2 + granule.count1TableSelect; | |||||
| const int16* val = h->table; | const int16* val = h->table; | ||||
| int16 a; | int16 a; | ||||
| @@ -2704,7 +2683,7 @@ private: | |||||
| for (i = 0; i < 3; ++i) | for (i = 0; i < 3; ++i) | ||||
| { | { | ||||
| const newhuff* h = huffmanTables1 + granule.tableSelect[i]; | |||||
| const BitsToTableMap* h = huffmanTables1 + granule.tableSelect[i]; | |||||
| for (int lp = l[i]; lp != 0; --lp, --mc) | for (int lp = l[i]; lp != 0; --lp, --mc) | ||||
| { | { | ||||
| @@ -2730,8 +2709,8 @@ private: | |||||
| if (x == 15) | if (x == 15) | ||||
| { | { | ||||
| max = cb; | max = cb; | ||||
| part2remain -= h->linbits + 1; | |||||
| x += getBits ((int) h->linbits); | |||||
| part2remain -= h->bits + 1; | |||||
| x += getBits ((int) h->bits); | |||||
| *xrpnt++ = constants.nToThe4Over3[x] * (getOneBit() ? -v : v); | *xrpnt++ = constants.nToThe4Over3[x] * (getOneBit() ? -v : v); | ||||
| } | } | ||||
| else if (x) | else if (x) | ||||
| @@ -2746,8 +2725,8 @@ private: | |||||
| if (y == 15) | if (y == 15) | ||||
| { | { | ||||
| max = cb; | max = cb; | ||||
| part2remain -= h->linbits + 1; | |||||
| y += getBits ((int) h->linbits); | |||||
| part2remain -= h->bits + 1; | |||||
| y += getBits ((int) h->bits); | |||||
| *xrpnt++ = constants.nToThe4Over3[y] * (getOneBit() ? -v : v); | *xrpnt++ = constants.nToThe4Over3[y] * (getOneBit() ? -v : v); | ||||
| } | } | ||||
| else if (y) | else if (y) | ||||
| @@ -2763,7 +2742,7 @@ private: | |||||
| for (; l3 && part2remain > 0; --l3) | for (; l3 && part2remain > 0; --l3) | ||||
| { | { | ||||
| const newhuff* h = huffmanTables2 + granule.count1TableSelect; | |||||
| const BitsToTableMap* h = huffmanTables2 + granule.count1TableSelect; | |||||
| const int16* values = h->table; | const int16* values = h->table; | ||||
| int16 a; | int16 a; | ||||
| @@ -30,10 +30,6 @@ extern AppFocusChangeCallback appFocusChangeCallback; | |||||
| typedef bool (*CheckEventBlockedByModalComps) (NSEvent*); | typedef bool (*CheckEventBlockedByModalComps) (NSEvent*); | ||||
| extern CheckEventBlockedByModalComps isEventBlockedByModalComps; | extern CheckEventBlockedByModalComps isEventBlockedByModalComps; | ||||
| #if JUCE_MODULE_AVAILABLE_juce_opengl && ! defined (JUCE_OSX_OPENGL_RENDERER) | |||||
| //#define JUCE_OSX_OPENGL_RENDERER 1 | |||||
| #endif | |||||
| //============================================================================== | //============================================================================== | ||||
| END_JUCE_NAMESPACE | END_JUCE_NAMESPACE | ||||
| @@ -218,10 +214,6 @@ public: | |||||
| virtual bool isOpaque(); | virtual bool isOpaque(); | ||||
| virtual void drawRect (NSRect r); | virtual void drawRect (NSRect r); | ||||
| #if JUCE_OSX_OPENGL_RENDERER | |||||
| virtual void drawOpenGL(); | |||||
| #endif | |||||
| virtual bool canBecomeKeyWindow(); | virtual bool canBecomeKeyWindow(); | ||||
| virtual void becomeKeyWindow(); | virtual void becomeKeyWindow(); | ||||
| virtual bool windowShouldClose(); | virtual bool windowShouldClose(); | ||||
| @@ -857,48 +849,6 @@ END_JUCE_NAMESPACE | |||||
| @end | @end | ||||
| //============================================================================== | |||||
| #if JUCE_OSX_OPENGL_RENDERER | |||||
| @interface JuceOpenGLLayer : CAOpenGLLayer | |||||
| { | |||||
| NSViewComponentPeer* owner; | |||||
| } | |||||
| - (JuceOpenGLLayer*) initWithPeer: (NSViewComponentPeer*) owner; | |||||
| - (void) dealloc; | |||||
| - (void) drawInCGLContext: (CGLContextObj) glContext | |||||
| pixelFormat: (CGLPixelFormatObj) pixelFormat | |||||
| forLayerTime: (CFTimeInterval) timeInterval | |||||
| displayTime: (const CVTimeStamp*) timeStamp; | |||||
| @end | |||||
| @implementation JuceOpenGLLayer | |||||
| - (JuceOpenGLLayer*) initWithPeer: (NSViewComponentPeer*) owner_ | |||||
| { | |||||
| [super init]; | |||||
| owner = owner_; | |||||
| return self; | |||||
| } | |||||
| - (void) dealloc | |||||
| { | |||||
| [super dealloc]; | |||||
| } | |||||
| - (void) drawInCGLContext: (CGLContextObj) glContext | |||||
| pixelFormat: (CGLPixelFormatObj) pixelFormat | |||||
| forLayerTime: (CFTimeInterval) timeInterval | |||||
| displayTime: (const CVTimeStamp*) timeStamp | |||||
| { | |||||
| owner->drawOpenGL(); | |||||
| } | |||||
| @end | |||||
| #endif | |||||
| //============================================================================== | //============================================================================== | ||||
| //============================================================================== | //============================================================================== | ||||
| BEGIN_JUCE_NAMESPACE | BEGIN_JUCE_NAMESPACE | ||||
| @@ -1111,11 +1061,7 @@ void NSViewComponentPeer::setBounds (int x, int y, int w, int h, bool isNowFullS | |||||
| if ([view frame].size.width != r.size.width | if ([view frame].size.width != r.size.width | ||||
| || [view frame].size.height != r.size.height) | || [view frame].size.height != r.size.height) | ||||
| { | { | ||||
| #if JUCE_OSX_OPENGL_RENDERER | |||||
| if (usingOpenGL) | |||||
| [[view layer] setNeedsDisplay: true]; | |||||
| #endif | |||||
| [view setNeedsDisplay: true]; | |||||
| [view setNeedsDisplay: true]; | |||||
| } | } | ||||
| [view setFrame: r]; | [view setFrame: r]; | ||||
| @@ -1126,11 +1072,6 @@ void NSViewComponentPeer::setBounds (int x, int y, int w, int h, bool isNowFullS | |||||
| [window setFrame: [window frameRectForContentRect: r] | [window setFrame: [window frameRectForContentRect: r] | ||||
| display: true]; | display: true]; | ||||
| #if JUCE_OSX_OPENGL_RENDERER | |||||
| if (usingOpenGL) | |||||
| [[view layer] setFrame: CGRectMake (0, 0, [view frame].size.width, [view frame].size.height)]; | |||||
| #endif | |||||
| } | } | ||||
| } | } | ||||
| @@ -1694,21 +1635,6 @@ static void getClipRects (RectangleList& clip, NSView* view, | |||||
| roundToInt (rects[i].size.height)))); | roundToInt (rects[i].size.height)))); | ||||
| } | } | ||||
| #if JUCE_OSX_OPENGL_RENDERER | |||||
| void NSViewComponentPeer::drawOpenGL() | |||||
| { | |||||
| if (! component->isOpaque()) | |||||
| OpenGLHelpers::clear (Colours::transparentBlack); | |||||
| OpenGLRenderer context (OpenGLFrameBuffer::getCurrentFrameBufferTarget(), | |||||
| component->getWidth(), component->getHeight()); | |||||
| insideDrawRect = true; | |||||
| handlePaint (context); | |||||
| insideDrawRect = false; | |||||
| } | |||||
| #endif | |||||
| void NSViewComponentPeer::drawRect (NSRect r) | void NSViewComponentPeer::drawRect (NSRect r) | ||||
| { | { | ||||
| if (r.size.width < 1.0f || r.size.height < 1.0f) | if (r.size.width < 1.0f || r.size.height < 1.0f) | ||||
| @@ -1770,44 +1696,16 @@ StringArray NSViewComponentPeer::getAvailableRenderingEngines() | |||||
| s.add ("CoreGraphics Renderer"); | s.add ("CoreGraphics Renderer"); | ||||
| #endif | #endif | ||||
| #if JUCE_OSX_OPENGL_RENDERER | |||||
| s.add ("OpenGL Renderer"); | |||||
| #endif | |||||
| return s; | return s; | ||||
| } | } | ||||
| int NSViewComponentPeer::getCurrentRenderingEngine() const | int NSViewComponentPeer::getCurrentRenderingEngine() const | ||||
| { | { | ||||
| #if JUCE_OSX_OPENGL_RENDERER | |||||
| if (usingOpenGL) return 2; | |||||
| #endif | |||||
| return usingCoreGraphics ? 1 : 0; | return usingCoreGraphics ? 1 : 0; | ||||
| } | } | ||||
| void NSViewComponentPeer::setCurrentRenderingEngine (int index) | void NSViewComponentPeer::setCurrentRenderingEngine (int index) | ||||
| { | { | ||||
| #if JUCE_OSX_OPENGL_RENDERER | |||||
| if (index == 2) | |||||
| { | |||||
| usingCoreGraphics = false; | |||||
| usingOpenGL = true; | |||||
| JuceOpenGLLayer* glLayer = [[JuceOpenGLLayer alloc] initWithPeer: this]; | |||||
| [view setLayer: glLayer]; | |||||
| [view setWantsLayer: YES]; | |||||
| [glLayer release]; | |||||
| } | |||||
| else | |||||
| { | |||||
| usingOpenGL = false; | |||||
| [view setLayer: nil]; | |||||
| [view setWantsLayer: NO]; | |||||
| } | |||||
| #endif | |||||
| #if USE_COREGRAPHICS_RENDERING | #if USE_COREGRAPHICS_RENDERING | ||||
| if (usingCoreGraphics != (index > 0)) | if (usingCoreGraphics != (index > 0)) | ||||
| { | { | ||||
| @@ -1928,14 +1826,8 @@ void NSViewComponentPeer::repaint (const Rectangle<int>& area) | |||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| #if JUCE_OSX_OPENGL_RENDERER | |||||
| if (usingOpenGL) | |||||
| [[view layer] setNeedsDisplayInRect: CGRectMake ((CGFloat) area.getX(), [view frame].size.height - (CGFloat) area.getBottom(), | |||||
| (CGFloat) area.getWidth(), (CGFloat) area.getHeight())]; | |||||
| else | |||||
| #endif | |||||
| [view setNeedsDisplayInRect: NSMakeRect ((CGFloat) area.getX(), [view frame].size.height - (CGFloat) area.getBottom(), | |||||
| (CGFloat) area.getWidth(), (CGFloat) area.getHeight())]; | |||||
| [view setNeedsDisplayInRect: NSMakeRect ((CGFloat) area.getX(), [view frame].size.height - (CGFloat) area.getBottom(), | |||||
| (CGFloat) area.getWidth(), (CGFloat) area.getHeight())]; | |||||
| } | } | ||||
| } | } | ||||
| @@ -120,28 +120,8 @@ | |||||
| #include <GLES/glext.h> | #include <GLES/glext.h> | ||||
| #endif | #endif | ||||
| #if JUCE_WINDOWS | |||||
| #define JUCE_DECLARE_GL_EXTENSION_FUNCTION(name, returnType, params) \ | |||||
| typedef returnType (__stdcall *type_ ## name) params; static type_ ## name name; | |||||
| #else | |||||
| #define JUCE_DECLARE_GL_EXTENSION_FUNCTION(name, returnType, params) \ | |||||
| typedef returnType (*type_ ## name) params; static type_ ## name name; | |||||
| #endif | |||||
| #define JUCE_INSTANTIATE_GL_EXTENSION(name) \ | |||||
| name = (type_ ## name) OpenGLHelpers::getExtensionFunction (#name); | |||||
| #ifndef GL_BGRA_EXT | |||||
| #define GL_BGRA_EXT 0x80e1 | |||||
| #endif | |||||
| #ifndef GL_CLAMP_TO_EDGE | |||||
| #define GL_CLAMP_TO_EDGE 0x812f | |||||
| #endif | |||||
| #ifndef GL_DEPTH_COMPONENT16 | |||||
| #define GL_DEPTH_COMPONENT16 0x81a5 | |||||
| #endif | |||||
| BEGIN_JUCE_NAMESPACE | |||||
| #include "native/juce_OpenGLExtensions.h" | |||||
| //============================================================================== | //============================================================================== | ||||
| // START_AUTOINCLUDE opengl/*.cpp | // START_AUTOINCLUDE opengl/*.cpp | ||||
| @@ -150,14 +130,15 @@ | |||||
| #include "opengl/juce_OpenGLGraphicsContext.cpp" | #include "opengl/juce_OpenGLGraphicsContext.cpp" | ||||
| #include "opengl/juce_OpenGLHelpers.cpp" | #include "opengl/juce_OpenGLHelpers.cpp" | ||||
| #include "opengl/juce_OpenGLImage.cpp" | #include "opengl/juce_OpenGLImage.cpp" | ||||
| #include "opengl/juce_OpenGLShaderProgram.cpp" | |||||
| #include "opengl/juce_OpenGLTexture.cpp" | #include "opengl/juce_OpenGLTexture.cpp" | ||||
| // END_AUTOINCLUDE | // END_AUTOINCLUDE | ||||
| END_JUCE_NAMESPACE | |||||
| using namespace juce; | using namespace juce; | ||||
| //============================================================================== | |||||
| BEGIN_JUCE_NAMESPACE | BEGIN_JUCE_NAMESPACE | ||||
| //============================================================================== | |||||
| #if JUCE_MAC || JUCE_IOS | #if JUCE_MAC || JUCE_IOS | ||||
| #include "../juce_core/native/juce_osx_ObjCHelpers.h" | #include "../juce_core/native/juce_osx_ObjCHelpers.h" | ||||
| #include "../juce_core/native/juce_mac_ObjCSuffix.h" | #include "../juce_core/native/juce_mac_ObjCSuffix.h" | ||||
| @@ -101,6 +101,9 @@ BEGIN_JUCE_NAMESPACE | |||||
| #ifndef __JUCE_OPENGLRENDERINGTARGET_JUCEHEADER__ | #ifndef __JUCE_OPENGLRENDERINGTARGET_JUCEHEADER__ | ||||
| #include "opengl/juce_OpenGLRenderingTarget.h" | #include "opengl/juce_OpenGLRenderingTarget.h" | ||||
| #endif | #endif | ||||
| #ifndef __JUCE_OPENGLSHADERPROGRAM_JUCEHEADER__ | |||||
| #include "opengl/juce_OpenGLShaderProgram.h" | |||||
| #endif | |||||
| #ifndef __JUCE_OPENGLTEXTURE_JUCEHEADER__ | #ifndef __JUCE_OPENGLTEXTURE_JUCEHEADER__ | ||||
| #include "opengl/juce_OpenGLTexture.h" | #include "opengl/juce_OpenGLTexture.h" | ||||
| #endif | #endif | ||||
| @@ -0,0 +1,187 @@ | |||||
| /* | |||||
| ============================================================================== | |||||
| This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
| Copyright 2004-11 by Raw Material Software Ltd. | |||||
| ------------------------------------------------------------------------------ | |||||
| JUCE can be redistributed and/or modified under the terms of the GNU General | |||||
| Public License (Version 2), as published by the Free Software Foundation. | |||||
| A copy of the license is included in the JUCE distribution, or can be found | |||||
| online at www.gnu.org/licenses. | |||||
| JUCE is distributed in the hope that it will be useful, but WITHOUT ANY | |||||
| WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | |||||
| A PARTICULAR PURPOSE. See the GNU General Public License for more details. | |||||
| ------------------------------------------------------------------------------ | |||||
| To release a closed-source product which uses JUCE, commercial licenses are | |||||
| available: visit www.rawmaterialsoftware.com/juce for more information. | |||||
| ============================================================================== | |||||
| */ | |||||
| namespace | |||||
| { | |||||
| #if JUCE_WINDOWS | |||||
| #define JUCE_DECLARE_GL_EXTENSION_FUNCTION(name, returnType, params) \ | |||||
| typedef returnType (__stdcall *type_ ## name) params; static type_ ## name name = nullptr; | |||||
| #else | |||||
| #define JUCE_DECLARE_GL_EXTENSION_FUNCTION(name, returnType, params) \ | |||||
| typedef returnType (*type_ ## name) params; static type_ ## name name = nullptr; | |||||
| #endif | |||||
| #ifndef GL_BGRA_EXT | |||||
| enum { GL_BGRA_EXT = 0x80e1 }; | |||||
| #endif | |||||
| #ifndef GL_CLAMP_TO_EDGE | |||||
| enum { GL_CLAMP_TO_EDGE = 0x812f }; | |||||
| #endif | |||||
| #ifndef GL_RGBA8 | |||||
| #define GL_RGBA8 GL_RGBA | |||||
| #endif | |||||
| #ifndef GL_DEPTH24_STENCIL8 | |||||
| #define GL_DEPTH24_STENCIL8 GL_DEPTH24_STENCIL8_OES | |||||
| #endif | |||||
| #if JUCE_WINDOWS | |||||
| enum | |||||
| { | |||||
| WGL_NUMBER_PIXEL_FORMATS_ARB = 0x2000, | |||||
| WGL_DRAW_TO_WINDOW_ARB = 0x2001, | |||||
| WGL_ACCELERATION_ARB = 0x2003, | |||||
| WGL_SWAP_METHOD_ARB = 0x2007, | |||||
| WGL_SUPPORT_OPENGL_ARB = 0x2010, | |||||
| WGL_PIXEL_TYPE_ARB = 0x2013, | |||||
| WGL_DOUBLE_BUFFER_ARB = 0x2011, | |||||
| WGL_COLOR_BITS_ARB = 0x2014, | |||||
| WGL_RED_BITS_ARB = 0x2015, | |||||
| WGL_GREEN_BITS_ARB = 0x2017, | |||||
| WGL_BLUE_BITS_ARB = 0x2019, | |||||
| WGL_ALPHA_BITS_ARB = 0x201B, | |||||
| WGL_DEPTH_BITS_ARB = 0x2022, | |||||
| WGL_STENCIL_BITS_ARB = 0x2023, | |||||
| WGL_FULL_ACCELERATION_ARB = 0x2027, | |||||
| WGL_ACCUM_RED_BITS_ARB = 0x201E, | |||||
| WGL_ACCUM_GREEN_BITS_ARB = 0x201F, | |||||
| WGL_ACCUM_BLUE_BITS_ARB = 0x2020, | |||||
| WGL_ACCUM_ALPHA_BITS_ARB = 0x2021, | |||||
| WGL_STEREO_ARB = 0x2012, | |||||
| WGL_SAMPLE_BUFFERS_ARB = 0x2041, | |||||
| WGL_SAMPLES_ARB = 0x2042, | |||||
| WGL_TYPE_RGBA_ARB = 0x202B, | |||||
| GL_OPERAND0_RGB = 0x8590, | |||||
| GL_OPERAND1_RGB = 0x8591, | |||||
| GL_OPERAND0_ALPHA = 0x8598, | |||||
| GL_OPERAND1_ALPHA = 0x8599, | |||||
| GL_SRC0_RGB = 0x8580, | |||||
| GL_SRC1_RGB = 0x8581, | |||||
| GL_SRC0_ALPHA = 0x8588, | |||||
| GL_SRC1_ALPHA = 0x8589, | |||||
| GL_TEXTURE0 = 0x84C0, | |||||
| GL_TEXTURE1 = 0x84C1, | |||||
| GL_TEXTURE2 = 0x84C2, | |||||
| GL_COMBINE = 0x8570, | |||||
| GL_COMBINE_RGB = 0x8571, | |||||
| GL_COMBINE_ALPHA = 0x8572, | |||||
| GL_PREVIOUS = 0x8578, | |||||
| GL_COMPILE_STATUS = 0x8B81, | |||||
| GL_LINK_STATUS = 0x8B82, | |||||
| GL_SHADING_LANGUAGE_VERSION = 0x8B8C, | |||||
| GL_FRAGMENT_SHADER = 0x8B30, | |||||
| GL_FRAMEBUFFER = 0x8D40, | |||||
| GL_RENDERBUFFER = 0x8D41, | |||||
| GL_FRAMEBUFFER_BINDING = 0x8CA6, | |||||
| GL_COLOR_ATTACHMENT0 = 0x8CE0, | |||||
| GL_DEPTH_ATTACHMENT = 0x8D00, | |||||
| GL_STENCIL_ATTACHMENT = 0x8D20, | |||||
| GL_FRAMEBUFFER_COMPLETE = 0x8CD5, | |||||
| GL_DEPTH24_STENCIL8 = 0x88F0, | |||||
| GL_RENDERBUFFER_DEPTH_SIZE = 0x8D54 | |||||
| }; | |||||
| typedef char GLchar; | |||||
| #define WGL_FUNCTION_LIST(USE_FUNCTION) \ | |||||
| USE_FUNCTION (wglChoosePixelFormatARB, BOOL, (HDC, const int*, const FLOAT*, UINT, int*, UINT*))\ | |||||
| USE_FUNCTION (wglSwapIntervalEXT, BOOL, (int))\ | |||||
| USE_FUNCTION (wglGetSwapIntervalEXT, int, ())\ | |||||
| WGL_FUNCTION_LIST (JUCE_DECLARE_GL_EXTENSION_FUNCTION) | |||||
| #endif | |||||
| #if JUCE_WINDOWS || JUCE_LINUX | |||||
| #define GL_EXTENSIONS_LIST(USE_FUNCTION) \ | |||||
| USE_FUNCTION (glActiveTexture, void, (GLenum))\ | |||||
| USE_FUNCTION (glClientActiveTexture, void, (GLenum))\ | |||||
| USE_FUNCTION (glCreateProgram, GLuint, ())\ | |||||
| USE_FUNCTION (glDeleteProgram, void, (GLuint))\ | |||||
| USE_FUNCTION (glCreateShader, GLuint, (GLenum))\ | |||||
| USE_FUNCTION (glDeleteShader, void, (GLuint))\ | |||||
| USE_FUNCTION (glShaderSource, void, (GLuint, GLsizei, const GLchar**, const GLint*))\ | |||||
| USE_FUNCTION (glCompileShader, void, (GLuint))\ | |||||
| USE_FUNCTION (glAttachShader, void, (GLuint, GLuint))\ | |||||
| USE_FUNCTION (glLinkProgram, void, (GLuint))\ | |||||
| USE_FUNCTION (glUseProgram, void, (GLuint))\ | |||||
| USE_FUNCTION (glGetShaderiv, void, (GLuint, GLenum, GLint*))\ | |||||
| USE_FUNCTION (glGetShaderInfoLog, void, (GLuint, GLsizei, GLsizei*, GLchar*))\ | |||||
| USE_FUNCTION (glGetProgramiv, void, (GLuint, GLenum, GLint*))\ | |||||
| USE_FUNCTION (glGetUniformLocation, GLint, (GLuint, const GLchar*))\ | |||||
| USE_FUNCTION (glUniform1f, void, (GLint, GLfloat))\ | |||||
| USE_FUNCTION (glUniform1i, void, (GLint, GLint))\ | |||||
| USE_FUNCTION (glUniform2f, void, (GLint, GLfloat, GLfloat))\ | |||||
| USE_FUNCTION (glUniform3f, void, (GLint, GLfloat, GLfloat, GLfloat))\ | |||||
| USE_FUNCTION (glUniform4f, void, (GLint, GLfloat, GLfloat, GLfloat, GLfloat))\ | |||||
| USE_FUNCTION (glUniform4i, void, (GLint, GLint, GLint, GLint, GLint))\ | |||||
| USE_FUNCTION (glUniform1fv, void, (GLint, GLsizei, const GLfloat*))\ | |||||
| USE_FUNCTION (glIsRenderbuffer, GLboolean, (GLuint))\ | |||||
| USE_FUNCTION (glBindRenderbuffer, void, (GLenum, GLuint))\ | |||||
| USE_FUNCTION (glDeleteRenderbuffers, void, (GLsizei, const GLuint*))\ | |||||
| USE_FUNCTION (glGenRenderbuffers, void, (GLsizei, GLuint*))\ | |||||
| USE_FUNCTION (glRenderbufferStorage, void, (GLenum, GLenum, GLsizei, GLsizei))\ | |||||
| USE_FUNCTION (glGetRenderbufferParameteriv, void, (GLenum, GLenum, GLint*))\ | |||||
| USE_FUNCTION (glIsFramebuffer, GLboolean, (GLuint))\ | |||||
| USE_FUNCTION (glBindFramebuffer, void, (GLenum, GLuint))\ | |||||
| USE_FUNCTION (glDeleteFramebuffers, void, (GLsizei, const GLuint*))\ | |||||
| USE_FUNCTION (glGenFramebuffers, void, (GLsizei, GLuint*))\ | |||||
| USE_FUNCTION (glCheckFramebufferStatus, GLenum, (GLenum))\ | |||||
| USE_FUNCTION (glFramebufferTexture1D, void, (GLenum, GLenum, GLenum, GLuint, GLint))\ | |||||
| USE_FUNCTION (glFramebufferTexture2D, void, (GLenum, GLenum, GLenum, GLuint, GLint))\ | |||||
| USE_FUNCTION (glFramebufferTexture3D, void, (GLenum, GLenum, GLenum, GLuint, GLint, GLint))\ | |||||
| USE_FUNCTION (glFramebufferRenderbuffer, void, (GLenum, GLenum, GLenum, GLuint))\ | |||||
| USE_FUNCTION (glGetFramebufferAttachmentParameteriv, void, (GLenum, GLenum, GLenum, GLint*))\ | |||||
| GL_EXTENSIONS_LIST (JUCE_DECLARE_GL_EXTENSION_FUNCTION) | |||||
| void initialiseGLExtensions() | |||||
| { | |||||
| if (glActiveTexture == nullptr) | |||||
| { | |||||
| #define FIND_FUNCTION(name, returnType, params) name = (type_ ## name) OpenGLHelpers::getExtensionFunction (#name); | |||||
| #if JUCE_WINDOWS | |||||
| WGL_FUNCTION_LIST (FIND_FUNCTION) | |||||
| #endif | |||||
| GL_EXTENSIONS_LIST (FIND_FUNCTION) | |||||
| #undef FIND_FUNCTION | |||||
| } | |||||
| } | |||||
| #undef GL_EXTENSIONS_LIST | |||||
| #undef WGL_FUNCTION_LIST | |||||
| #else | |||||
| void initialiseGLExtensions() {} | |||||
| #endif | |||||
| } | |||||
| @@ -37,6 +37,8 @@ public: | |||||
| embeddedWindow (0), | embeddedWindow (0), | ||||
| swapInterval (0) | swapInterval (0) | ||||
| { | { | ||||
| initialiseGLExtensions(); | |||||
| jassert (component != nullptr); | jassert (component != nullptr); | ||||
| ComponentPeer* const peer = component->getTopLevelComponent()->getPeer(); | ComponentPeer* const peer = component->getTopLevelComponent()->getPeer(); | ||||
| if (peer == nullptr) | if (peer == nullptr) | ||||
| @@ -123,6 +123,8 @@ public: | |||||
| NSOpenGLContext* sharedContext) | NSOpenGLContext* sharedContext) | ||||
| : renderContext (nil) | : renderContext (nil) | ||||
| { | { | ||||
| initialiseGLExtensions(); | |||||
| NSOpenGLPixelFormatAttribute attribs[] = | NSOpenGLPixelFormatAttribute attribs[] = | ||||
| { | { | ||||
| NSOpenGLPFADoubleBuffer, | NSOpenGLPFADoubleBuffer, | ||||
| @@ -23,51 +23,6 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| enum | |||||
| { | |||||
| WGL_NUMBER_PIXEL_FORMATS_ARB = 0x2000, | |||||
| WGL_DRAW_TO_WINDOW_ARB = 0x2001, | |||||
| WGL_ACCELERATION_ARB = 0x2003, | |||||
| WGL_SWAP_METHOD_ARB = 0x2007, | |||||
| WGL_SUPPORT_OPENGL_ARB = 0x2010, | |||||
| WGL_PIXEL_TYPE_ARB = 0x2013, | |||||
| WGL_DOUBLE_BUFFER_ARB = 0x2011, | |||||
| WGL_COLOR_BITS_ARB = 0x2014, | |||||
| WGL_RED_BITS_ARB = 0x2015, | |||||
| WGL_GREEN_BITS_ARB = 0x2017, | |||||
| WGL_BLUE_BITS_ARB = 0x2019, | |||||
| WGL_ALPHA_BITS_ARB = 0x201B, | |||||
| WGL_DEPTH_BITS_ARB = 0x2022, | |||||
| WGL_STENCIL_BITS_ARB = 0x2023, | |||||
| WGL_FULL_ACCELERATION_ARB = 0x2027, | |||||
| WGL_ACCUM_RED_BITS_ARB = 0x201E, | |||||
| WGL_ACCUM_GREEN_BITS_ARB = 0x201F, | |||||
| WGL_ACCUM_BLUE_BITS_ARB = 0x2020, | |||||
| WGL_ACCUM_ALPHA_BITS_ARB = 0x2021, | |||||
| WGL_STEREO_ARB = 0x2012, | |||||
| WGL_SAMPLE_BUFFERS_ARB = 0x2041, | |||||
| WGL_SAMPLES_ARB = 0x2042, | |||||
| WGL_TYPE_RGBA_ARB = 0x202B | |||||
| }; | |||||
| typedef BOOL (WINAPI* PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC, const int*, const FLOAT*, UINT, int*, UINT*); | |||||
| typedef BOOL (WINAPI* PFNWGLSWAPINTERVALEXTPROC) (int); | |||||
| typedef int (WINAPI* PFNWGLGETSWAPINTERVALEXTPROC)(); | |||||
| static PFNWGLCHOOSEPIXELFORMATARBPROC wglChoosePixelFormatARB = 0; | |||||
| static PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT = 0; | |||||
| static PFNWGLGETSWAPINTERVALEXTPROC wglGetSwapIntervalEXT = 0; | |||||
| static void initialiseGLExtensions() | |||||
| { | |||||
| if (wglChoosePixelFormatARB == 0) | |||||
| { | |||||
| wglChoosePixelFormatARB = (PFNWGLCHOOSEPIXELFORMATARBPROC) OpenGLHelpers::getExtensionFunction ("wglChoosePixelFormatARB"); | |||||
| wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC) OpenGLHelpers::getExtensionFunction ("wglSwapIntervalEXT"); | |||||
| wglGetSwapIntervalEXT = (PFNWGLGETSWAPINTERVALEXTPROC) OpenGLHelpers::getExtensionFunction ("wglGetSwapIntervalEXT"); | |||||
| } | |||||
| } | |||||
| extern ComponentPeer* createNonRepaintingEmbeddedWindowsPeer (Component* component, void* parent); | extern ComponentPeer* createNonRepaintingEmbeddedWindowsPeer (Component* component, void* parent); | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -81,6 +36,7 @@ public: | |||||
| component (component_), | component (component_), | ||||
| dc (0) | dc (0) | ||||
| { | { | ||||
| initialiseGLExtensions(); | |||||
| jassert (component != nullptr); | jassert (component != nullptr); | ||||
| createNativeWindow(); | createNativeWindow(); | ||||
| @@ -23,9 +23,6 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| BEGIN_JUCE_NAMESPACE | |||||
| //============================================================================== | //============================================================================== | ||||
| OpenGLPixelFormat::OpenGLPixelFormat (const int bitsPerRGBComponent, | OpenGLPixelFormat::OpenGLPixelFormat (const int bitsPerRGBComponent, | ||||
| const int alphaBits_, | const int alphaBits_, | ||||
| @@ -556,5 +553,3 @@ unsigned int OpenGLComponent::getFrameBufferID() const | |||||
| { | { | ||||
| return context != nullptr ? context->getFrameBufferID() : 0; | return context != nullptr ? context->getFrameBufferID() : 0; | ||||
| } | } | ||||
| END_JUCE_NAMESPACE | |||||
| @@ -23,102 +23,6 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| BEGIN_JUCE_NAMESPACE | |||||
| namespace | |||||
| { | |||||
| #if JUCE_WINDOWS | |||||
| enum | |||||
| { | |||||
| GL_FRAMEBUFFER_EXT = 0x8D40, | |||||
| GL_RENDERBUFFER_EXT = 0x8D41, | |||||
| GL_FRAMEBUFFER_BINDING_EXT = 0x8CA6, | |||||
| GL_COLOR_ATTACHMENT0_EXT = 0x8CE0, | |||||
| GL_DEPTH_ATTACHMENT_EXT = 0x8D00, | |||||
| GL_STENCIL_ATTACHMENT_EXT = 0x8D20, | |||||
| GL_FRAMEBUFFER_COMPLETE_EXT = 0x8CD5, | |||||
| GL_DEPTH24_STENCIL8_EXT = 0x88F0, | |||||
| GL_RENDERBUFFER_DEPTH_SIZE_EXT = 0x8D54 | |||||
| }; | |||||
| #endif | |||||
| #if JUCE_WINDOWS || JUCE_LINUX | |||||
| #define FRAMEBUFFER_FUNCTION_LIST(USE_FUNCTION) \ | |||||
| USE_FUNCTION (glIsRenderbufferEXT, GLboolean, (GLuint renderbuffer))\ | |||||
| USE_FUNCTION (glBindRenderbufferEXT, void, (GLenum target, GLuint renderbuffer))\ | |||||
| USE_FUNCTION (glDeleteRenderbuffersEXT, void, (GLsizei n, const GLuint *renderbuffers))\ | |||||
| USE_FUNCTION (glGenRenderbuffersEXT, void, (GLsizei n, GLuint *renderbuffers))\ | |||||
| USE_FUNCTION (glRenderbufferStorageEXT, void, (GLenum target, GLenum internalformat, GLsizei width, GLsizei height))\ | |||||
| USE_FUNCTION (glGetRenderbufferParameterivEXT, void, (GLenum target, GLenum pname, GLint* params))\ | |||||
| USE_FUNCTION (glIsFramebufferEXT, GLboolean, (GLuint framebuffer))\ | |||||
| USE_FUNCTION (glBindFramebufferEXT, void, (GLenum target, GLuint framebuffer))\ | |||||
| USE_FUNCTION (glDeleteFramebuffersEXT, void, (GLsizei n, const GLuint *framebuffers))\ | |||||
| USE_FUNCTION (glGenFramebuffersEXT, void, (GLsizei n, GLuint *framebuffers))\ | |||||
| USE_FUNCTION (glCheckFramebufferStatusEXT, GLenum, (GLenum target))\ | |||||
| USE_FUNCTION (glFramebufferTexture1DEXT, void, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level))\ | |||||
| USE_FUNCTION (glFramebufferTexture2DEXT, void, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level))\ | |||||
| USE_FUNCTION (glFramebufferTexture3DEXT, void, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset))\ | |||||
| USE_FUNCTION (glFramebufferRenderbufferEXT, void, (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer))\ | |||||
| USE_FUNCTION (glGetFramebufferAttachmentParameterivEXT, void, (GLenum target, GLenum attachment, GLenum pname, GLint *params))\ | |||||
| USE_FUNCTION (glGenerateMipmapEXT, void, (GLenum target))\ | |||||
| FRAMEBUFFER_FUNCTION_LIST (JUCE_DECLARE_GL_EXTENSION_FUNCTION) | |||||
| static bool framebufferFunctionsInitialised = false; | |||||
| void initialiseFrameBufferFunctions() | |||||
| { | |||||
| if (! framebufferFunctionsInitialised) | |||||
| { | |||||
| framebufferFunctionsInitialised = true; | |||||
| #define FIND_FUNCTION(name, returnType, params) name = (type_ ## name) OpenGLHelpers::getExtensionFunction (#name); | |||||
| FRAMEBUFFER_FUNCTION_LIST (FIND_FUNCTION) | |||||
| #undef FIND_FUNCTION | |||||
| } | |||||
| } | |||||
| #undef FRAMEBUFFER_FUNCTION_LIST | |||||
| //============================================================================== | |||||
| #elif JUCE_OPENGL_ES | |||||
| #define glIsRenderbufferEXT glIsRenderbufferOES | |||||
| #define glBindRenderbufferEXT glBindRenderbufferOES | |||||
| #define glDeleteRenderbuffersEXT glDeleteRenderbuffersOES | |||||
| #define glGenRenderbuffersEXT glGenRenderbuffersOES | |||||
| #define glRenderbufferStorageEXT glRenderbufferStorageOES | |||||
| #define glGetRenderbufferParameterivEXT glGetRenderbufferParameterivOES | |||||
| #define glIsFramebufferEXT glIsFramebufferOES | |||||
| #define glBindFramebufferEXT glBindFramebufferOES | |||||
| #define glDeleteFramebuffersEXT glDeleteFramebuffersOES | |||||
| #define glGenFramebuffersEXT glGenFramebuffersOES | |||||
| #define glCheckFramebufferStatusEXT glCheckFramebufferStatusOES | |||||
| #define glFramebufferTexture1DEXT glFramebufferTexture1DOES | |||||
| #define glFramebufferTexture2DEXT glFramebufferTexture2DOES | |||||
| #define glFramebufferTexture3DEXT glFramebufferTexture3DOES | |||||
| #define glFramebufferRenderbufferEXT glFramebufferRenderbufferOES | |||||
| #define glGetFramebufferAttachmentParameterivEXT glGetFramebufferAttachmentParameterivOES | |||||
| #define glGenerateMipmapEXT glGenerateMipmapOES | |||||
| #define GL_FRAMEBUFFER_EXT GL_FRAMEBUFFER_OES | |||||
| #define GL_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_OES | |||||
| #define GL_RGBA8 GL_RGBA | |||||
| #define GL_COLOR_ATTACHMENT0_EXT GL_COLOR_ATTACHMENT0_OES | |||||
| #define GL_RENDERBUFFER_EXT GL_RENDERBUFFER_OES | |||||
| #define GL_DEPTH24_STENCIL8_EXT GL_DEPTH24_STENCIL8_OES | |||||
| #define GL_RENDERBUFFER_DEPTH_SIZE_EXT GL_RENDERBUFFER_DEPTH_SIZE_OES | |||||
| #define GL_DEPTH_ATTACHMENT_EXT GL_DEPTH_ATTACHMENT_OES | |||||
| #define GL_STENCIL_ATTACHMENT_EXT GL_STENCIL_ATTACHMENT_OES | |||||
| #define GL_FRAMEBUFFER_COMPLETE_EXT GL_FRAMEBUFFER_COMPLETE_OES | |||||
| #define GL_FRAMEBUFFER_UNSUPPORTED_EXT GL_FRAMEBUFFER_UNSUPPORTED_OES | |||||
| #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES | |||||
| #endif | |||||
| } | |||||
| //============================================================================== | |||||
| class OpenGLFrameBuffer::Pimpl | class OpenGLFrameBuffer::Pimpl | ||||
| { | { | ||||
| public: | public: | ||||
| @@ -138,14 +42,12 @@ public: | |||||
| jassert (OpenGLHelpers::isContextActive()); | jassert (OpenGLHelpers::isContextActive()); | ||||
| #if JUCE_WINDOWS || JUCE_LINUX | #if JUCE_WINDOWS || JUCE_LINUX | ||||
| initialiseFrameBufferFunctions(); | |||||
| if (glGenFramebuffersEXT == nullptr) | |||||
| if (glGenFramebuffers == nullptr) | |||||
| return; | return; | ||||
| #endif | #endif | ||||
| glGenFramebuffersEXT (1, &frameBufferHandle); | |||||
| glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, frameBufferHandle); | |||||
| glGenFramebuffers (1, &frameBufferHandle); | |||||
| glBindFramebuffer (GL_FRAMEBUFFER, frameBufferHandle); | |||||
| glGenTextures (1, &textureID); | glGenTextures (1, &textureID); | ||||
| glBindTexture (GL_TEXTURE_2D, textureID); | glBindTexture (GL_TEXTURE_2D, textureID); | ||||
| @@ -157,16 +59,16 @@ public: | |||||
| glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); | glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); | ||||
| glFramebufferTexture2DEXT (GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, textureID, 0); | |||||
| glFramebufferTexture2D (GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textureID, 0); | |||||
| if (wantsDepthBuffer || wantsStencilBuffer) | if (wantsDepthBuffer || wantsStencilBuffer) | ||||
| { | { | ||||
| glGenRenderbuffersEXT (1, &depthOrStencilBuffer); | |||||
| glBindRenderbufferEXT (GL_RENDERBUFFER_EXT, depthOrStencilBuffer); | |||||
| jassert (glIsRenderbufferEXT (depthOrStencilBuffer)); | |||||
| glGenRenderbuffers (1, &depthOrStencilBuffer); | |||||
| glBindRenderbuffer (GL_RENDERBUFFER, depthOrStencilBuffer); | |||||
| jassert (glIsRenderbuffer (depthOrStencilBuffer)); | |||||
| glRenderbufferStorageEXT (GL_RENDERBUFFER_EXT, | |||||
| (wantsDepthBuffer && wantsStencilBuffer) ? GL_DEPTH24_STENCIL8_EXT | |||||
| glRenderbufferStorage (GL_RENDERBUFFER, | |||||
| (wantsDepthBuffer && wantsStencilBuffer) ? GL_DEPTH24_STENCIL8 | |||||
| #if JUCE_OPENGL_ES | #if JUCE_OPENGL_ES | ||||
| : GL_DEPTH_COMPONENT16, | : GL_DEPTH_COMPONENT16, | ||||
| #else | #else | ||||
| @@ -175,17 +77,17 @@ public: | |||||
| width, height); | width, height); | ||||
| GLint params = 0; | GLint params = 0; | ||||
| glGetRenderbufferParameterivEXT (GL_RENDERBUFFER_EXT, GL_RENDERBUFFER_DEPTH_SIZE_EXT, ¶ms); | |||||
| glFramebufferRenderbufferEXT (GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthOrStencilBuffer); | |||||
| glGetRenderbufferParameteriv (GL_RENDERBUFFER, GL_RENDERBUFFER_DEPTH_SIZE, ¶ms); | |||||
| glFramebufferRenderbuffer (GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthOrStencilBuffer); | |||||
| if (wantsStencilBuffer) | if (wantsStencilBuffer) | ||||
| glFramebufferRenderbufferEXT (GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthOrStencilBuffer); | |||||
| glFramebufferRenderbuffer (GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, depthOrStencilBuffer); | |||||
| hasDepthBuffer = wantsDepthBuffer; | hasDepthBuffer = wantsDepthBuffer; | ||||
| hasStencilBuffer = wantsStencilBuffer; | hasStencilBuffer = wantsStencilBuffer; | ||||
| } | } | ||||
| glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0); | |||||
| glBindFramebuffer (GL_FRAMEBUFFER, 0); | |||||
| } | } | ||||
| ~Pimpl() | ~Pimpl() | ||||
| @@ -194,14 +96,14 @@ public: | |||||
| glDeleteTextures (1, &textureID); | glDeleteTextures (1, &textureID); | ||||
| if (depthOrStencilBuffer != 0) | if (depthOrStencilBuffer != 0) | ||||
| glDeleteRenderbuffersEXT (1, &depthOrStencilBuffer); | |||||
| glDeleteRenderbuffers (1, &depthOrStencilBuffer); | |||||
| if (frameBufferHandle != 0) | if (frameBufferHandle != 0) | ||||
| glDeleteFramebuffersEXT (1, &frameBufferHandle); | |||||
| glDeleteFramebuffers (1, &frameBufferHandle); | |||||
| } | } | ||||
| void bind() { glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, frameBufferHandle); } | |||||
| void unbind() { glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0); } | |||||
| void bind() { glBindFramebuffer (GL_FRAMEBUFFER, frameBufferHandle); } | |||||
| void unbind() { glBindFramebuffer (GL_FRAMEBUFFER, 0); } | |||||
| const int width, height; | const int width, height; | ||||
| GLuint textureID, frameBufferHandle, depthOrStencilBuffer; | GLuint textureID, frameBufferHandle, depthOrStencilBuffer; | ||||
| @@ -210,10 +112,10 @@ public: | |||||
| private: | private: | ||||
| static bool checkStatus() noexcept | static bool checkStatus() noexcept | ||||
| { | { | ||||
| const GLenum status = glCheckFramebufferStatusEXT (GL_FRAMEBUFFER_EXT); | |||||
| const GLenum status = glCheckFramebufferStatus (GL_FRAMEBUFFER); | |||||
| return status == GL_NO_ERROR | return status == GL_NO_ERROR | ||||
| || status == GL_FRAMEBUFFER_COMPLETE_EXT; | |||||
| || status == GL_FRAMEBUFFER_COMPLETE; | |||||
| } | } | ||||
| JUCE_DECLARE_NON_COPYABLE (Pimpl); | JUCE_DECLARE_NON_COPYABLE (Pimpl); | ||||
| @@ -348,13 +250,13 @@ bool OpenGLFrameBuffer::makeCurrentRenderingTarget() | |||||
| void OpenGLFrameBuffer::setCurrentFrameBufferTarget (GLuint frameBufferID) | void OpenGLFrameBuffer::setCurrentFrameBufferTarget (GLuint frameBufferID) | ||||
| { | { | ||||
| glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, frameBufferID); | |||||
| glBindFramebuffer (GL_FRAMEBUFFER, frameBufferID); | |||||
| } | } | ||||
| GLuint OpenGLFrameBuffer::getCurrentFrameBufferTarget() | GLuint OpenGLFrameBuffer::getCurrentFrameBufferTarget() | ||||
| { | { | ||||
| GLint fb; | GLint fb; | ||||
| glGetIntegerv (GL_FRAMEBUFFER_BINDING_EXT, &fb); | |||||
| glGetIntegerv (GL_FRAMEBUFFER_BINDING, &fb); | |||||
| return (GLuint) fb; | return (GLuint) fb; | ||||
| } | } | ||||
| @@ -388,7 +290,7 @@ bool OpenGLFrameBuffer::readPixels (PixelARGB* target, const Rectangle<int>& are | |||||
| glPixelStorei (GL_PACK_ALIGNMENT, 4); | glPixelStorei (GL_PACK_ALIGNMENT, 4); | ||||
| glReadPixels (area.getX(), area.getY(), area.getWidth(), area.getHeight(), GL_BGRA_EXT, GL_UNSIGNED_BYTE, target); | glReadPixels (area.getX(), area.getY(), area.getWidth(), area.getHeight(), GL_BGRA_EXT, GL_UNSIGNED_BYTE, target); | ||||
| glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0); | |||||
| glBindFramebuffer (GL_FRAMEBUFFER, 0); | |||||
| glPixelStorei (GL_PACK_ALIGNMENT, 0); | glPixelStorei (GL_PACK_ALIGNMENT, 0); | ||||
| return true; | return true; | ||||
| } | } | ||||
| @@ -433,7 +335,7 @@ bool OpenGLFrameBuffer::writePixels (const PixelARGB* data, const Rectangle<int> | |||||
| OpenGLHelpers::drawTriangleStrip (vertices, textureCoords, 4, tex.getTextureID()); | OpenGLHelpers::drawTriangleStrip (vertices, textureCoords, 4, tex.getTextureID()); | ||||
| #endif | #endif | ||||
| glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0); | |||||
| glBindFramebuffer (GL_FRAMEBUFFER, 0); | |||||
| return true; | return true; | ||||
| } | } | ||||
| @@ -492,6 +394,3 @@ void OpenGLFrameBuffer::drawAt (float x1, float y1) const | |||||
| glBindTexture (GL_TEXTURE_2D, 0); | glBindTexture (GL_TEXTURE_2D, 0); | ||||
| } | } | ||||
| } | } | ||||
| END_JUCE_NAMESPACE | |||||
| @@ -23,94 +23,10 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| BEGIN_JUCE_NAMESPACE | |||||
| #if JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX | #if JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX | ||||
| // #define JUCE_USE_OPENGL_SHADERS 1 | // #define JUCE_USE_OPENGL_SHADERS 1 | ||||
| #endif | #endif | ||||
| namespace | |||||
| { | |||||
| #if JUCE_WINDOWS | |||||
| enum | |||||
| { | |||||
| GL_OPERAND0_RGB = 0x8590, | |||||
| GL_OPERAND1_RGB = 0x8591, | |||||
| GL_OPERAND0_ALPHA = 0x8598, | |||||
| GL_OPERAND1_ALPHA = 0x8599, | |||||
| GL_SRC0_RGB = 0x8580, | |||||
| GL_SRC1_RGB = 0x8581, | |||||
| GL_SRC0_ALPHA = 0x8588, | |||||
| GL_SRC1_ALPHA = 0x8589, | |||||
| GL_TEXTURE0 = 0x84C0, | |||||
| GL_TEXTURE1 = 0x84C1, | |||||
| GL_TEXTURE2 = 0x84C2, | |||||
| GL_COMBINE = 0x8570, | |||||
| GL_COMBINE_RGB = 0x8571, | |||||
| GL_COMBINE_ALPHA = 0x8572, | |||||
| GL_PREVIOUS = 0x8578, | |||||
| GL_COMPILE_STATUS = 0x8B81, | |||||
| GL_LINK_STATUS = 0x8B82, | |||||
| GL_SHADING_LANGUAGE_VERSION = 0x8B8C, | |||||
| GL_FRAGMENT_SHADER = 0x8B30 | |||||
| }; | |||||
| typedef char GLchar; | |||||
| #endif | |||||
| #if JUCE_WINDOWS || JUCE_LINUX | |||||
| #if JUCE_USE_OPENGL_SHADERS | |||||
| #define WINDOWS_GL_FUNCTION_LIST(USE_FUNCTION) \ | |||||
| USE_FUNCTION (glActiveTexture, void, (GLenum))\ | |||||
| USE_FUNCTION (glClientActiveTexture, void, (GLenum))\ | |||||
| USE_FUNCTION (glCreateProgram, GLuint, ())\ | |||||
| USE_FUNCTION (glDeleteProgram, void, (GLuint))\ | |||||
| USE_FUNCTION (glCreateShader, GLuint, (GLenum))\ | |||||
| USE_FUNCTION (glDeleteShader, void, (GLuint))\ | |||||
| USE_FUNCTION (glShaderSource, void, (GLuint, GLsizei, const GLchar**, const GLint*))\ | |||||
| USE_FUNCTION (glCompileShader, void, (GLuint))\ | |||||
| USE_FUNCTION (glAttachShader, void, (GLuint, GLuint))\ | |||||
| USE_FUNCTION (glLinkProgram, void, (GLuint))\ | |||||
| USE_FUNCTION (glUseProgram, void, (GLuint))\ | |||||
| USE_FUNCTION (glGetShaderiv, void, (GLuint, GLenum, GLint*))\ | |||||
| USE_FUNCTION (glGetShaderInfoLog, void, (GLuint, GLsizei, GLsizei*, GLchar*))\ | |||||
| USE_FUNCTION (glGetProgramiv, void, (GLuint, GLenum, GLint*))\ | |||||
| USE_FUNCTION (glGetUniformLocation, GLint, (GLuint, const GLchar*))\ | |||||
| USE_FUNCTION (glUniform1f, void, (GLint, GLfloat))\ | |||||
| USE_FUNCTION (glUniform1i, void, (GLint, GLint))\ | |||||
| USE_FUNCTION (glUniform2f, void, (GLint, GLfloat, GLfloat))\ | |||||
| USE_FUNCTION (glUniform3f, void, (GLint, GLfloat, GLfloat, GLfloat))\ | |||||
| USE_FUNCTION (glUniform4f, void, (GLint, GLfloat, GLfloat, GLfloat, GLfloat))\ | |||||
| USE_FUNCTION (glUniform4i, void, (GLint, GLint, GLint, GLint, GLint))\ | |||||
| USE_FUNCTION (glUniformMatrix2x3fv, void, (GLint, GLsizei, GLboolean, const GLfloat*))\ | |||||
| #else | |||||
| #define WINDOWS_GL_FUNCTION_LIST(USE_FUNCTION) \ | |||||
| USE_FUNCTION (glActiveTexture, void, (GLenum))\ | |||||
| USE_FUNCTION (glClientActiveTexture, void, (GLenum)) | |||||
| #endif | |||||
| WINDOWS_GL_FUNCTION_LIST (JUCE_DECLARE_GL_EXTENSION_FUNCTION) | |||||
| static bool windowsFunctionsInitialised = false; | |||||
| void initialiseWindowsExtensions() | |||||
| { | |||||
| windowsFunctionsInitialised = true; | |||||
| #define FIND_FUNCTION(name, returnType, params) name = (type_ ## name) OpenGLHelpers::getExtensionFunction (#name); | |||||
| WINDOWS_GL_FUNCTION_LIST (FIND_FUNCTION) | |||||
| #undef FIND_FUNCTION | |||||
| } | |||||
| #undef WINDOWS_GL_FUNCTION_LIST | |||||
| #else | |||||
| void initialiseWindowsExtensions() {} | |||||
| #endif | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| struct OpenGLTarget | struct OpenGLTarget | ||||
| { | { | ||||
| @@ -288,94 +204,14 @@ namespace | |||||
| //============================================================================== | //============================================================================== | ||||
| #if JUCE_USE_OPENGL_SHADERS | #if JUCE_USE_OPENGL_SHADERS | ||||
| class OpenGLShaderProgram | |||||
| { | |||||
| public: | |||||
| OpenGLShaderProgram() noexcept | |||||
| : program (glCreateProgram()) | |||||
| { | |||||
| } | |||||
| ~OpenGLShaderProgram() noexcept | |||||
| { | |||||
| glDeleteProgram (program); | |||||
| } | |||||
| void addShader (const GLchar* const code, GLenum type) | |||||
| { | |||||
| GLuint shaderID = glCreateShader (type); | |||||
| glShaderSource (shaderID, 1, (const GLchar**) &code, nullptr); | |||||
| glCompileShader (shaderID); | |||||
| #if JUCE_DEBUG | |||||
| GLint status = 0; | |||||
| glGetShaderiv (shaderID, GL_COMPILE_STATUS, &status); | |||||
| if (status == GL_FALSE) | |||||
| { | |||||
| GLchar infoLog [16384]; | |||||
| GLsizei infologLength = 0; | |||||
| glGetShaderInfoLog (shaderID, sizeof (infoLog), &infologLength, infoLog); | |||||
| DBG (String (infoLog, infologLength)); | |||||
| jassertfalse; | |||||
| } | |||||
| #endif | |||||
| glAttachShader (program, shaderID); | |||||
| glDeleteShader (shaderID); | |||||
| } | |||||
| void link() noexcept | |||||
| { | |||||
| glLinkProgram (program); | |||||
| #if JUCE_DEBUG | |||||
| GLint status = 0; | |||||
| glGetProgramiv (program, GL_LINK_STATUS, &status); | |||||
| jassert (status != GL_FALSE); | |||||
| #endif | |||||
| } | |||||
| struct Uniform | |||||
| { | |||||
| Uniform (const OpenGLShaderProgram& program, const GLchar* name) | |||||
| : uniformID (glGetUniformLocation (program.program, name)) | |||||
| { | |||||
| jassert (uniformID >= 0); | |||||
| } | |||||
| void set (GLfloat n1) const noexcept { glUniform1f (uniformID, n1); } | |||||
| void set (GLint n1) const noexcept { glUniform1i (uniformID, n1); } | |||||
| void set (GLfloat n1, GLfloat n2) const noexcept { glUniform2f (uniformID, n1, n2); } | |||||
| void set (GLfloat n1, GLfloat n2, GLfloat n3) const noexcept { glUniform3f (uniformID, n1, n2, n3); } | |||||
| void set (GLfloat n1, GLfloat n2, GLfloat n3, float n4) const noexcept { glUniform4f (uniformID, n1, n2, n3, n4); } | |||||
| void set (GLint n1, GLint n2, GLint n3, GLint n4) const noexcept { glUniform4i (uniformID, n1, n2, n3, n4); } | |||||
| void set (const AffineTransform& t) const noexcept | |||||
| { | |||||
| const GLfloat f[] = { t.mat00, t.mat01, t.mat02, t.mat10, t.mat11, t.mat12 }; | |||||
| glUniformMatrix2x3fv (uniformID, 1, false, f); | |||||
| } | |||||
| GLint uniformID; | |||||
| }; | |||||
| GLuint program; | |||||
| private: | |||||
| JUCE_DECLARE_NON_COPYABLE (OpenGLShaderProgram); | |||||
| }; | |||||
| struct ShaderPrograms | struct ShaderPrograms | ||||
| { | { | ||||
| ShaderPrograms() | ShaderPrograms() | ||||
| : areShadersSupported (OpenGLShaderProgram::getLanguageVersion() >= 1.199) | |||||
| { | { | ||||
| String v ((const char*) glGetString (GL_SHADING_LANGUAGE_VERSION)); | |||||
| v = v.upToFirstOccurrenceOf (" ", false, false); | |||||
| areShadersSupported = (v.getDoubleValue() >= 1.199); | |||||
| } | } | ||||
| bool areShadersSupported; | |||||
| const bool areShadersSupported; | |||||
| struct ShaderBase | struct ShaderBase | ||||
| { | { | ||||
| @@ -392,7 +228,7 @@ struct ShaderPrograms | |||||
| { | { | ||||
| MaskedShaderParams (const OpenGLShaderProgram& program) | MaskedShaderParams (const OpenGLShaderProgram& program) | ||||
| : maskTexture (program, "maskTexture"), | : maskTexture (program, "maskTexture"), | ||||
| maskBounds (program, "maskBounds") | |||||
| maskBounds (program, "maskBounds") | |||||
| {} | {} | ||||
| OpenGLShaderProgram::Uniform maskTexture, maskBounds; | OpenGLShaderProgram::Uniform maskTexture, maskBounds; | ||||
| @@ -407,9 +243,12 @@ struct ShaderPrograms | |||||
| void setMatrix (const Point<float>& p1, const Point<float>& p2, const Point<float>& p3) | void setMatrix (const Point<float>& p1, const Point<float>& p2, const Point<float>& p3) | ||||
| { | { | ||||
| matrix.set (AffineTransform::fromTargetPoints (p1.x, p1.y, 0.0f, 0.0f, | |||||
| p2.x, p2.y, 1.0f, 0.0f, | |||||
| p3.x, p3.y, 0.0f, 1.0f)); | |||||
| const AffineTransform t (AffineTransform::fromTargetPoints (p1.x, p1.y, 0.0f, 0.0f, | |||||
| p2.x, p2.y, 1.0f, 0.0f, | |||||
| p3.x, p3.y, 0.0f, 1.0f)); | |||||
| // const GLfloat m[] = { t.mat00, t.mat01, t.mat02, t.mat10, t.mat11, t.mat12 }; | |||||
| const GLfloat m[] = { t.mat00, t.mat01, t.mat02, t.mat10, t.mat11, t.mat12 }; | |||||
| matrix.set (m, 6); | |||||
| } | } | ||||
| OpenGLShaderProgram::Uniform gradientTexture, matrix; | OpenGLShaderProgram::Uniform gradientTexture, matrix; | ||||
| @@ -451,13 +290,13 @@ struct ShaderPrograms | |||||
| RadialGradientProgram() | RadialGradientProgram() | ||||
| : ShaderBase ("#version 120\n" | : ShaderBase ("#version 120\n" | ||||
| "uniform sampler2D gradientTexture;" | "uniform sampler2D gradientTexture;" | ||||
| "uniform mat2x3 matrix;" | |||||
| "uniform float matrix[6];" | |||||
| "const float textureY = 0.5;" | "const float textureY = 0.5;" | ||||
| "" | "" | ||||
| "void main()" | "void main()" | ||||
| "{" | "{" | ||||
| " float dist = length (vec2 (matrix[0][0] * gl_FragCoord.x + matrix[0][1] * gl_FragCoord.y + matrix[0][2]," | |||||
| " matrix[1][0] * gl_FragCoord.x + matrix[1][1] * gl_FragCoord.y + matrix[1][2]));" | |||||
| " float dist = length (vec2 (matrix[0] * gl_FragCoord.x + matrix[1] * gl_FragCoord.y + matrix[2]," | |||||
| " matrix[3] * gl_FragCoord.x + matrix[4] * gl_FragCoord.y + matrix[5]));" | |||||
| " gl_FragColor = gl_Color.w * texture2D (gradientTexture, vec2 (dist, textureY));" | " gl_FragColor = gl_Color.w * texture2D (gradientTexture, vec2 (dist, textureY));" | ||||
| "}"), | "}"), | ||||
| gradientParams (program) | gradientParams (program) | ||||
| @@ -472,15 +311,15 @@ struct ShaderPrograms | |||||
| RadialGradientMaskedProgram() | RadialGradientMaskedProgram() | ||||
| : ShaderBase ("#version 120\n" | : ShaderBase ("#version 120\n" | ||||
| "uniform sampler2D gradientTexture;" | "uniform sampler2D gradientTexture;" | ||||
| "uniform mat2x3 matrix;" | |||||
| "uniform float matrix[6];" | |||||
| "uniform sampler2D maskTexture;" | "uniform sampler2D maskTexture;" | ||||
| "uniform ivec4 maskBounds;" | "uniform ivec4 maskBounds;" | ||||
| "const float textureY = 0.5;" | "const float textureY = 0.5;" | ||||
| "" | "" | ||||
| "void main()" | "void main()" | ||||
| "{" | "{" | ||||
| " float dist = length (vec2 (matrix[0][0] * gl_FragCoord.x + matrix[0][1] * gl_FragCoord.y + matrix[0][2]," | |||||
| " matrix[1][0] * gl_FragCoord.x + matrix[1][1] * gl_FragCoord.y + matrix[1][2]));" | |||||
| " float dist = length (vec2 (matrix[0] * gl_FragCoord.x + matrix[1] * gl_FragCoord.y + matrix[2]," | |||||
| " matrix[3] * gl_FragCoord.x + matrix[4] * gl_FragCoord.y + matrix[5]));" | |||||
| " vec4 result = gl_Color.w * texture2D (gradientTexture, vec2 (dist, textureY));" | " vec4 result = gl_Color.w * texture2D (gradientTexture, vec2 (dist, textureY));" | ||||
| "" | "" | ||||
| " vec2 maskPos;" | " vec2 maskPos;" | ||||
| @@ -631,10 +470,11 @@ public: | |||||
| , activeShader (nullptr) | , activeShader (nullptr) | ||||
| #endif | #endif | ||||
| { | { | ||||
| initialiseGLExtensions(); | |||||
| // This object can only be created and used when the current thread has an active OpenGL context. | // This object can only be created and used when the current thread has an active OpenGL context. | ||||
| jassert (OpenGLHelpers::isContextActive()); | jassert (OpenGLHelpers::isContextActive()); | ||||
| initialiseWindowsExtensions(); | |||||
| target.makeActiveFor2D(); | target.makeActiveFor2D(); | ||||
| glDisableClientState (GL_COLOR_ARRAY); | glDisableClientState (GL_COLOR_ARRAY); | ||||
| glDisableClientState (GL_NORMAL_ARRAY); | glDisableClientState (GL_NORMAL_ARRAY); | ||||
| @@ -1303,7 +1143,7 @@ public: | |||||
| { | { | ||||
| flushQuads(); | flushQuads(); | ||||
| activeShader = newShader; | activeShader = newShader; | ||||
| glUseProgram (newShader != nullptr ? newShader->program : 0); | |||||
| glUseProgram (newShader != nullptr ? newShader->programID : 0); | |||||
| } | } | ||||
| } | } | ||||
| #endif | #endif | ||||
| @@ -2490,5 +2330,3 @@ void OpenGLRenderer::drawGlyph (int glyphNumber, const AffineTransform& t) | |||||
| void OpenGLRenderer::drawLine (const Line <float>& line) { stack->drawLine (line); } | void OpenGLRenderer::drawLine (const Line <float>& line) { stack->drawLine (line); } | ||||
| void OpenGLRenderer::setFont (const Font& newFont) { stack->font = newFont; } | void OpenGLRenderer::setFont (const Font& newFont) { stack->font = newFont; } | ||||
| Font OpenGLRenderer::getFont() { return stack->font; } | Font OpenGLRenderer::getFont() { return stack->font; } | ||||
| END_JUCE_NAMESPACE | |||||
| @@ -23,9 +23,6 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| BEGIN_JUCE_NAMESPACE | |||||
| //============================================================================== | |||||
| void OpenGLHelpers::resetErrorState() | void OpenGLHelpers::resetErrorState() | ||||
| { | { | ||||
| while (glGetError() != GL_NO_ERROR) {} | while (glGetError() != GL_NO_ERROR) {} | ||||
| @@ -315,6 +312,3 @@ void OpenGLRenderingTarget::prepareFor2D() | |||||
| OpenGLHelpers::prepareFor2D (getRenderingTargetWidth(), | OpenGLHelpers::prepareFor2D (getRenderingTargetWidth(), | ||||
| getRenderingTargetHeight()); | getRenderingTargetHeight()); | ||||
| } | } | ||||
| END_JUCE_NAMESPACE | |||||
| @@ -23,10 +23,7 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| BEGIN_JUCE_NAMESPACE | |||||
| //============================================================================== | |||||
| class OpenGLFrameBufferImage : public ImagePixelData | class OpenGLFrameBufferImage : public ImagePixelData | ||||
| { | { | ||||
| public: | public: | ||||
| @@ -193,5 +190,3 @@ OpenGLFrameBuffer* OpenGLImageType::getFrameBufferFrom (const Image& image) | |||||
| return glImage != nullptr ? &(glImage->frameBuffer) : nullptr; | return glImage != nullptr ? &(glImage->frameBuffer) : nullptr; | ||||
| } | } | ||||
| END_JUCE_NAMESPACE | |||||
| @@ -0,0 +1,92 @@ | |||||
| /* | |||||
| ============================================================================== | |||||
| This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
| Copyright 2004-11 by Raw Material Software Ltd. | |||||
| ------------------------------------------------------------------------------ | |||||
| JUCE can be redistributed and/or modified under the terms of the GNU General | |||||
| Public License (Version 2), as published by the Free Software Foundation. | |||||
| A copy of the license is included in the JUCE distribution, or can be found | |||||
| online at www.gnu.org/licenses. | |||||
| JUCE is distributed in the hope that it will be useful, but WITHOUT ANY | |||||
| WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | |||||
| A PARTICULAR PURPOSE. See the GNU General Public License for more details. | |||||
| ------------------------------------------------------------------------------ | |||||
| To release a closed-source product which uses JUCE, commercial licenses are | |||||
| available: visit www.rawmaterialsoftware.com/juce for more information. | |||||
| ============================================================================== | |||||
| */ | |||||
| OpenGLShaderProgram::OpenGLShaderProgram() noexcept | |||||
| { | |||||
| // This object can only be created and used when the current thread has an active OpenGL context. | |||||
| jassert (OpenGLHelpers::isContextActive()); | |||||
| programID = glCreateProgram(); | |||||
| } | |||||
| OpenGLShaderProgram::~OpenGLShaderProgram() noexcept | |||||
| { | |||||
| glDeleteProgram (programID); | |||||
| } | |||||
| double OpenGLShaderProgram::getLanguageVersion() | |||||
| { | |||||
| return String ((const char*) glGetString (GL_SHADING_LANGUAGE_VERSION)) | |||||
| .upToFirstOccurrenceOf (" ", false, false).getDoubleValue(); | |||||
| } | |||||
| void OpenGLShaderProgram::addShader (const char* const code, GLenum type) | |||||
| { | |||||
| GLuint shaderID = glCreateShader (type); | |||||
| glShaderSource (shaderID, 1, (const GLchar**) &code, nullptr); | |||||
| glCompileShader (shaderID); | |||||
| #if JUCE_DEBUG | |||||
| GLint status = 0; | |||||
| glGetShaderiv (shaderID, GL_COMPILE_STATUS, &status); | |||||
| if (status == GL_FALSE) | |||||
| { | |||||
| GLchar infoLog [16384]; | |||||
| GLsizei infologLength = 0; | |||||
| glGetShaderInfoLog (shaderID, sizeof (infoLog), &infologLength, infoLog); | |||||
| DBG (String (infoLog, infologLength)); | |||||
| jassertfalse; | |||||
| } | |||||
| #endif | |||||
| glAttachShader (programID, shaderID); | |||||
| glDeleteShader (shaderID); | |||||
| } | |||||
| void OpenGLShaderProgram::link() noexcept | |||||
| { | |||||
| glLinkProgram (programID); | |||||
| #if JUCE_DEBUG | |||||
| GLint status = 0; | |||||
| glGetProgramiv (programID, GL_LINK_STATUS, &status); | |||||
| jassert (status != GL_FALSE); | |||||
| #endif | |||||
| } | |||||
| OpenGLShaderProgram::Uniform::Uniform (const OpenGLShaderProgram& program, const char* const name) | |||||
| : uniformID (glGetUniformLocation (program.programID, name)) | |||||
| { | |||||
| jassert (uniformID >= 0); | |||||
| } | |||||
| void OpenGLShaderProgram::Uniform::set (GLfloat n1) const noexcept { glUniform1f (uniformID, n1); } | |||||
| void OpenGLShaderProgram::Uniform::set (GLint n1) const noexcept { glUniform1i (uniformID, n1); } | |||||
| void OpenGLShaderProgram::Uniform::set (GLfloat n1, GLfloat n2) const noexcept { glUniform2f (uniformID, n1, n2); } | |||||
| void OpenGLShaderProgram::Uniform::set (GLfloat n1, GLfloat n2, GLfloat n3) const noexcept { glUniform3f (uniformID, n1, n2, n3); } | |||||
| void OpenGLShaderProgram::Uniform::set (GLfloat n1, GLfloat n2, GLfloat n3, float n4) const noexcept { glUniform4f (uniformID, n1, n2, n3, n4); } | |||||
| void OpenGLShaderProgram::Uniform::set (GLint n1, GLint n2, GLint n3, GLint n4) const noexcept { glUniform4i (uniformID, n1, n2, n3, n4); } | |||||
| void OpenGLShaderProgram::Uniform::set (const GLfloat* values, GLsizei numValues) const noexcept { glUniform1fv (uniformID, numValues, values); } | |||||
| @@ -0,0 +1,111 @@ | |||||
| /* | |||||
| ============================================================================== | |||||
| This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||||
| Copyright 2004-11 by Raw Material Software Ltd. | |||||
| ------------------------------------------------------------------------------ | |||||
| JUCE can be redistributed and/or modified under the terms of the GNU General | |||||
| Public License (Version 2), as published by the Free Software Foundation. | |||||
| A copy of the license is included in the JUCE distribution, or can be found | |||||
| online at www.gnu.org/licenses. | |||||
| JUCE is distributed in the hope that it will be useful, but WITHOUT ANY | |||||
| WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | |||||
| A PARTICULAR PURPOSE. See the GNU General Public License for more details. | |||||
| ------------------------------------------------------------------------------ | |||||
| To release a closed-source product which uses JUCE, commercial licenses are | |||||
| available: visit www.rawmaterialsoftware.com/juce for more information. | |||||
| ============================================================================== | |||||
| */ | |||||
| #ifndef __JUCE_OPENGLSHADERPROGRAM_JUCEHEADER__ | |||||
| #define __JUCE_OPENGLSHADERPROGRAM_JUCEHEADER__ | |||||
| //============================================================================== | |||||
| /** | |||||
| Manages an OpenGL shader program. | |||||
| */ | |||||
| class JUCE_API OpenGLShaderProgram | |||||
| { | |||||
| public: | |||||
| OpenGLShaderProgram() noexcept; | |||||
| ~OpenGLShaderProgram() noexcept; | |||||
| /** Returns the version of GLSL that the current context supports. | |||||
| E.g. | |||||
| @code | |||||
| if (OpenGLShaderProgram::getLanguageVersion() > 1.199) | |||||
| { | |||||
| // ..do something that requires GLSL 1.2 or above.. | |||||
| } | |||||
| @endcode | |||||
| */ | |||||
| static double getLanguageVersion(); | |||||
| /** Compiles and adds a shader to this program. | |||||
| After adding all your shaders, remember to call link() to link them into | |||||
| a usable program. | |||||
| If your app is built in debug mode, this method will assert if the program | |||||
| fails to compile correctly. | |||||
| The shaderType parameter is GL_VERTEX_SHADER or GL_FRAGMENT_SHADER | |||||
| */ | |||||
| void addShader (const char* const shaderSourceCode, GLenum shaderType); | |||||
| /** Links all the compiled shaders into a usable program. | |||||
| If your app is built in debug mode, this method will assert if the program | |||||
| fails to link correctly. | |||||
| */ | |||||
| void link() noexcept; | |||||
| /** Represents an openGL uniform value. | |||||
| After a program has been linked, you can create Uniform objects to let you | |||||
| set the uniforms that your shaders use. | |||||
| Be careful not to call the set() functions unless the appropriate program | |||||
| is loaded into the current context. | |||||
| */ | |||||
| struct Uniform | |||||
| { | |||||
| /** Initialises a uniform. | |||||
| The program must have been successfully linked when this | |||||
| constructor is called. | |||||
| */ | |||||
| Uniform (const OpenGLShaderProgram& program, const char* uniformName); | |||||
| /** Sets a float uniform. */ | |||||
| void set (GLfloat n1) const noexcept; | |||||
| /** Sets an int uniform. */ | |||||
| void set (GLint n1) const noexcept; | |||||
| /** Sets a vec2 uniform. */ | |||||
| void set (GLfloat n1, GLfloat n2) const noexcept; | |||||
| /** Sets a vec3 uniform. */ | |||||
| void set (GLfloat n1, GLfloat n2, GLfloat n3) const noexcept; | |||||
| /** Sets a vec4 uniform. */ | |||||
| void set (GLfloat n1, GLfloat n2, GLfloat n3, float n4) const noexcept; | |||||
| /** Sets an ivec4 uniform. */ | |||||
| void set (GLint n1, GLint n2, GLint n3, GLint n4) const noexcept; | |||||
| /** Sets a vector float uniform. */ | |||||
| void set (const GLfloat* values, int numValues) const noexcept; | |||||
| /** The uniform's ID number. | |||||
| If the uniform couldn't be found, this value will be < 0. | |||||
| */ | |||||
| GLint uniformID; | |||||
| }; | |||||
| /** The ID number of the compiled program. */ | |||||
| GLuint programID; | |||||
| private: | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OpenGLShaderProgram); | |||||
| }; | |||||
| #endif // __JUCE_OPENGLSHADERPROGRAM_JUCEHEADER__ | |||||
| @@ -23,8 +23,6 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| BEGIN_JUCE_NAMESPACE | |||||
| OpenGLTexture::OpenGLTexture() | OpenGLTexture::OpenGLTexture() | ||||
| : textureID (0), width (0), height (0) | : textureID (0), width (0), height (0) | ||||
| @@ -178,5 +176,3 @@ void OpenGLTexture::draw3D (float x1, float y1, float z1, | |||||
| OpenGLHelpers::drawQuad3D (x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4, colour); | OpenGLHelpers::drawQuad3D (x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4, colour); | ||||
| unbind(); | unbind(); | ||||
| } | } | ||||
| END_JUCE_NAMESPACE | |||||