mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
New class: OpenGLShaderProgram, and GL clean-ups.
This commit is contained in:
parent
678b532dad
commit
bbac5a8790
29 changed files with 595 additions and 561 deletions
|
|
@ -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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
|
|
@ -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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
|
|
@ -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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
|
|
@ -1903,6 +1906,8 @@
|
|||
17422D876DAAF091ED089B8D,
|
||||
B81FA2ED22BCC03D124031ED,
|
||||
942191F317B1B2B1CFBB7C60,
|
||||
58864C3D7F369EBE01E42C5C,
|
||||
8EEB4DEB11F3DF01BA6F7528,
|
||||
FE9A5898294228EB7F439951,
|
||||
4CFB262AA9778621B8B33A7D,
|
||||
EC89003BF30329181BB3EA4B,
|
||||
|
|
@ -1912,6 +1917,7 @@
|
|||
ED9FAEA9116C568942BAD000,
|
||||
6E1CFF5227B2F2E200DD9EC7,
|
||||
AE394742FA0F2C6AA39906DD,
|
||||
8565630D87FEE505D50CE2EF,
|
||||
D66048AF1E05FF836B2A813A ); name = native; sourceTree = "<group>"; };
|
||||
7CFCB9A92FB574419734C1F5 = { isa = PBXGroup; children = (
|
||||
EB8917291F41B7345B13B53E,
|
||||
|
|
|
|||
|
|
@ -4311,6 +4311,17 @@
|
|||
<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_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">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
|
|
@ -4348,6 +4359,7 @@
|
|||
</FileConfiguration>
|
||||
</File>
|
||||
<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">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
|
|
|
|||
|
|
@ -4311,6 +4311,17 @@
|
|||
<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_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">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
|
|
@ -4348,6 +4359,7 @@
|
|||
</FileConfiguration>
|
||||
</File>
|
||||
<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">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
|
|
|
|||
|
|
@ -1157,6 +1157,9 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
|
|
@ -1607,9 +1610,11 @@
|
|||
<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_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_Quaternion.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_video\playback\juce_DirectShowComponent.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_QuickTimeMovieComponent.h"/>
|
||||
|
|
|
|||
|
|
@ -1510,6 +1510,9 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp">
|
||||
<Filter>Juce Modules\juce_opengl\opengl</Filter>
|
||||
</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">
|
||||
<Filter>Juce Modules\juce_opengl\opengl</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -2826,6 +2829,9 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h">
|
||||
<Filter>Juce Modules\juce_opengl\opengl</Filter>
|
||||
</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">
|
||||
<Filter>Juce Modules\juce_opengl\opengl</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -2835,6 +2841,9 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h">
|
||||
<Filter>Juce Modules\juce_opengl\opengl</Filter>
|
||||
</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">
|
||||
<Filter>Juce Modules\juce_opengl</Filter>
|
||||
</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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
|
|
@ -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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
|
|
@ -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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
|
|
@ -1893,6 +1896,8 @@
|
|||
17422D876DAAF091ED089B8D,
|
||||
B81FA2ED22BCC03D124031ED,
|
||||
942191F317B1B2B1CFBB7C60,
|
||||
58864C3D7F369EBE01E42C5C,
|
||||
8EEB4DEB11F3DF01BA6F7528,
|
||||
FE9A5898294228EB7F439951,
|
||||
4CFB262AA9778621B8B33A7D,
|
||||
EC89003BF30329181BB3EA4B,
|
||||
|
|
@ -1902,6 +1907,7 @@
|
|||
ED9FAEA9116C568942BAD000,
|
||||
6E1CFF5227B2F2E200DD9EC7,
|
||||
AE394742FA0F2C6AA39906DD,
|
||||
8565630D87FEE505D50CE2EF,
|
||||
D66048AF1E05FF836B2A813A ); name = native; sourceTree = "<group>"; };
|
||||
7CFCB9A92FB574419734C1F5 = { isa = PBXGroup; children = (
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
|
|
@ -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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
|
|
@ -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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
|
|
@ -1825,6 +1828,8 @@
|
|||
4CE76ABC51CC5E019AED3C2B,
|
||||
8BA1AF085755958342C9213A,
|
||||
597D5688E23397FE09F53BA3,
|
||||
DFE18134F58A9C546AD16FF7,
|
||||
442E6311FB54378E88B6811C,
|
||||
651055751E902F40B83EFD55,
|
||||
09089786B542AEB678DDE38F,
|
||||
A1DC3C215187E6DD24DD7330,
|
||||
|
|
@ -1834,6 +1839,7 @@
|
|||
6E673B706EA21387275F30FD,
|
||||
D4CC4DE44C44AEE40085ACD7,
|
||||
1668565234C6F9C31363BBE2,
|
||||
8BD67EC10CC86AB4DB096E5D,
|
||||
7916CA65827E16B3775C4952 ); name = native; sourceTree = "<group>"; };
|
||||
2C43A64E61A92F2912632BD6 = { isa = PBXGroup; children = (
|
||||
E23F6FDE88C4164420DC07F6,
|
||||
|
|
|
|||
|
|
@ -4234,6 +4234,17 @@
|
|||
<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_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">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
|
|
@ -4271,6 +4282,7 @@
|
|||
</FileConfiguration>
|
||||
</File>
|
||||
<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">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
|
|
|
|||
|
|
@ -4234,6 +4234,17 @@
|
|||
<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_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">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
|
|
@ -4271,6 +4282,7 @@
|
|||
</FileConfiguration>
|
||||
</File>
|
||||
<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">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
|
|
@ -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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
|
|
@ -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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
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"; };
|
||||
|
|
@ -1744,6 +1747,8 @@
|
|||
7251827C30AC1C4F55C3DB69,
|
||||
6D95302F8D68BA3F0538214F,
|
||||
9E067C6101B6E2D11365EBDC,
|
||||
1DC59B4A97D5DF77801ACAE8,
|
||||
F7010D646D19C704DE9D42A1,
|
||||
A0D54F01BC8018CC41FA34E9,
|
||||
53B9B6090EDB9B6E0FA8577F,
|
||||
154C4985C134E2B4A7B87025,
|
||||
|
|
@ -1753,6 +1758,7 @@
|
|||
BFBA3FCA1C3F9FD3BB8146B8,
|
||||
5DB822375EE0E803E8E448D4,
|
||||
3682BBAEC6842DE49899AEF0,
|
||||
F28767C5606E63E66146E375,
|
||||
39373A988D28974E62BE9DC5 ); name = native; sourceTree = "<group>"; };
|
||||
9CAD7248065B9A6C050F9527 = { isa = PBXGroup; children = (
|
||||
543980D718ACBB76513A4AF0,
|
||||
|
|
|
|||
|
|
@ -4125,6 +4125,17 @@
|
|||
<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_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">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
|
|
@ -4162,6 +4173,7 @@
|
|||
</FileConfiguration>
|
||||
</File>
|
||||
<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">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
|
|
|
|||
|
|
@ -1120,6 +1120,9 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLShaderProgram.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLTexture.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
|
|
@ -1553,9 +1556,11 @@
|
|||
<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_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_Quaternion.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_video\playback\juce_DirectShowComponent.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_video\playback\juce_QuickTimeMovieComponent.h"/>
|
||||
|
|
|
|||
|
|
@ -1396,6 +1396,9 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLImage.cpp">
|
||||
<Filter>Juce Modules\juce_opengl\opengl</Filter>
|
||||
</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">
|
||||
<Filter>Juce Modules\juce_opengl\opengl</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -2661,6 +2664,9 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_OpenGLRenderingTarget.h">
|
||||
<Filter>Juce Modules\juce_opengl\opengl</Filter>
|
||||
</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">
|
||||
<Filter>Juce Modules\juce_opengl\opengl</Filter>
|
||||
</ClInclude>
|
||||
|
|
@ -2670,6 +2676,9 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_opengl\opengl\juce_Vector3D.h">
|
||||
<Filter>Juce Modules\juce_opengl\opengl</Filter>
|
||||
</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">
|
||||
<Filter>Juce Modules\juce_opengl</Filter>
|
||||
</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
|
||||
};
|
||||
|
||||
struct newhuff
|
||||
struct BitsToTableMap
|
||||
{
|
||||
uint32 linbits;
|
||||
uint32 bits;
|
||||
const int16* table;
|
||||
};
|
||||
|
||||
const newhuff huffmanTables1[] =
|
||||
const BitsToTableMap huffmanTables1[] =
|
||||
{
|
||||
{ 0, huffmanTab0 }, { 0, huffmanTab1 }, { 0, huffmanTab2 }, { 0, huffmanTab3 },
|
||||
{ 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 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
|
||||
|
|
@ -443,27 +443,11 @@ struct VBRTagData
|
|||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
uint8 toc[100];
|
||||
int sampleRate, flags, frames, bytes, vbrScale;
|
||||
int headersize, encoderDelay, encoderPadding;
|
||||
int sampleRate, flags, frames, bytes, vbrScale, headersize;
|
||||
|
||||
private:
|
||||
static bool isVbrTag (const uint8* const d) noexcept
|
||||
|
|
@ -634,22 +618,14 @@ private:
|
|||
{
|
||||
if (table < decodeWin + 512 + 16)
|
||||
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()
|
||||
{
|
||||
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] =
|
||||
{
|
||||
{ 1, 0, 2 },
|
||||
|
|
@ -657,30 +633,36 @@ private:
|
|||
{ 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)
|
||||
{
|
||||
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 k = 0; k < len; ++k)
|
||||
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)
|
||||
{
|
||||
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];
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
@ -1599,7 +1581,6 @@ struct MP3Stream
|
|||
bool vbrHeaderFound;
|
||||
|
||||
private:
|
||||
int encoderDelay, encoderPadding;
|
||||
bool headerParsed, sideParsed, dataParsed, needToSyncBitStream;
|
||||
bool isFreeFormat, wasFreeFormat;
|
||||
int sideInfoSize, dataSize;
|
||||
|
|
@ -1618,7 +1599,7 @@ private:
|
|||
void reset() noexcept
|
||||
{
|
||||
headerParsed = sideParsed = dataParsed = isFreeFormat = wasFreeFormat = false;
|
||||
encoderDelay = encoderPadding = lastFrameSize = -1;
|
||||
lastFrameSize = -1;
|
||||
needToSyncBitStream = true;
|
||||
frameSize = sideInfoSize = dataSize = frameSize = bitIndex = 0;
|
||||
lastFrameSizeNoPadding = bufferSpaceIndex = 0;
|
||||
|
|
@ -1766,8 +1747,6 @@ private:
|
|||
if (vbrHeaderFound)
|
||||
{
|
||||
numFrames = vbrTagData.frames;
|
||||
encoderDelay = vbrTagData.encoderDelay;
|
||||
encoderPadding = vbrTagData.encoderPadding;
|
||||
oldPos += jmax (vbrTagData.headersize, 1);
|
||||
}
|
||||
|
||||
|
|
@ -2532,7 +2511,7 @@ private:
|
|||
|
||||
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)
|
||||
{
|
||||
|
|
@ -2572,8 +2551,8 @@ private:
|
|||
if (x == 15)
|
||||
{
|
||||
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);
|
||||
}
|
||||
else if (x)
|
||||
|
|
@ -2590,8 +2569,8 @@ private:
|
|||
if (y == 15)
|
||||
{
|
||||
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);
|
||||
}
|
||||
else if (y)
|
||||
|
|
@ -2609,7 +2588,7 @@ private:
|
|||
|
||||
for (; l3 && (part2remain > 0); --l3)
|
||||
{
|
||||
const newhuff* h = huffmanTables2 + granule.count1TableSelect;
|
||||
const BitsToTableMap* h = huffmanTables2 + granule.count1TableSelect;
|
||||
const int16* val = h->table;
|
||||
int16 a;
|
||||
|
||||
|
|
@ -2704,7 +2683,7 @@ private:
|
|||
|
||||
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)
|
||||
{
|
||||
|
|
@ -2730,8 +2709,8 @@ private:
|
|||
if (x == 15)
|
||||
{
|
||||
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);
|
||||
}
|
||||
else if (x)
|
||||
|
|
@ -2746,8 +2725,8 @@ private:
|
|||
if (y == 15)
|
||||
{
|
||||
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);
|
||||
}
|
||||
else if (y)
|
||||
|
|
@ -2763,7 +2742,7 @@ private:
|
|||
|
||||
for (; l3 && part2remain > 0; --l3)
|
||||
{
|
||||
const newhuff* h = huffmanTables2 + granule.count1TableSelect;
|
||||
const BitsToTableMap* h = huffmanTables2 + granule.count1TableSelect;
|
||||
const int16* values = h->table;
|
||||
int16 a;
|
||||
|
||||
|
|
|
|||
|
|
@ -30,10 +30,6 @@ extern AppFocusChangeCallback appFocusChangeCallback;
|
|||
typedef bool (*CheckEventBlockedByModalComps) (NSEvent*);
|
||||
extern CheckEventBlockedByModalComps isEventBlockedByModalComps;
|
||||
|
||||
#if JUCE_MODULE_AVAILABLE_juce_opengl && ! defined (JUCE_OSX_OPENGL_RENDERER)
|
||||
//#define JUCE_OSX_OPENGL_RENDERER 1
|
||||
#endif
|
||||
|
||||
//==============================================================================
|
||||
END_JUCE_NAMESPACE
|
||||
|
||||
|
|
@ -218,10 +214,6 @@ public:
|
|||
virtual bool isOpaque();
|
||||
virtual void drawRect (NSRect r);
|
||||
|
||||
#if JUCE_OSX_OPENGL_RENDERER
|
||||
virtual void drawOpenGL();
|
||||
#endif
|
||||
|
||||
virtual bool canBecomeKeyWindow();
|
||||
virtual void becomeKeyWindow();
|
||||
virtual bool windowShouldClose();
|
||||
|
|
@ -857,48 +849,6 @@ END_JUCE_NAMESPACE
|
|||
@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
|
||||
|
|
@ -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
|
||||
|| [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];
|
||||
|
|
@ -1126,11 +1072,6 @@ void NSViewComponentPeer::setBounds (int x, int y, int w, int h, bool isNowFullS
|
|||
|
||||
[window setFrame: [window frameRectForContentRect: r]
|
||||
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))));
|
||||
}
|
||||
|
||||
#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)
|
||||
{
|
||||
if (r.size.width < 1.0f || r.size.height < 1.0f)
|
||||
|
|
@ -1770,44 +1696,16 @@ StringArray NSViewComponentPeer::getAvailableRenderingEngines()
|
|||
s.add ("CoreGraphics Renderer");
|
||||
#endif
|
||||
|
||||
#if JUCE_OSX_OPENGL_RENDERER
|
||||
s.add ("OpenGL Renderer");
|
||||
#endif
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
int NSViewComponentPeer::getCurrentRenderingEngine() const
|
||||
{
|
||||
#if JUCE_OSX_OPENGL_RENDERER
|
||||
if (usingOpenGL) return 2;
|
||||
#endif
|
||||
|
||||
return usingCoreGraphics ? 1 : 0;
|
||||
}
|
||||
|
||||
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 (usingCoreGraphics != (index > 0))
|
||||
{
|
||||
|
|
@ -1928,14 +1826,8 @@ void NSViewComponentPeer::repaint (const Rectangle<int>& area)
|
|||
}
|
||||
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>
|
||||
#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
|
||||
|
|
@ -150,14 +130,15 @@
|
|||
#include "opengl/juce_OpenGLGraphicsContext.cpp"
|
||||
#include "opengl/juce_OpenGLHelpers.cpp"
|
||||
#include "opengl/juce_OpenGLImage.cpp"
|
||||
#include "opengl/juce_OpenGLShaderProgram.cpp"
|
||||
#include "opengl/juce_OpenGLTexture.cpp"
|
||||
// END_AUTOINCLUDE
|
||||
|
||||
END_JUCE_NAMESPACE
|
||||
using namespace juce;
|
||||
|
||||
//==============================================================================
|
||||
BEGIN_JUCE_NAMESPACE
|
||||
|
||||
//==============================================================================
|
||||
#if JUCE_MAC || JUCE_IOS
|
||||
#include "../juce_core/native/juce_osx_ObjCHelpers.h"
|
||||
#include "../juce_core/native/juce_mac_ObjCSuffix.h"
|
||||
|
|
|
|||
|
|
@ -101,6 +101,9 @@ BEGIN_JUCE_NAMESPACE
|
|||
#ifndef __JUCE_OPENGLRENDERINGTARGET_JUCEHEADER__
|
||||
#include "opengl/juce_OpenGLRenderingTarget.h"
|
||||
#endif
|
||||
#ifndef __JUCE_OPENGLSHADERPROGRAM_JUCEHEADER__
|
||||
#include "opengl/juce_OpenGLShaderProgram.h"
|
||||
#endif
|
||||
#ifndef __JUCE_OPENGLTEXTURE_JUCEHEADER__
|
||||
#include "opengl/juce_OpenGLTexture.h"
|
||||
#endif
|
||||
|
|
|
|||
187
modules/juce_opengl/native/juce_OpenGLExtensions.h
Normal file
187
modules/juce_opengl/native/juce_OpenGLExtensions.h
Normal file
|
|
@ -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),
|
||||
swapInterval (0)
|
||||
{
|
||||
initialiseGLExtensions();
|
||||
|
||||
jassert (component != nullptr);
|
||||
ComponentPeer* const peer = component->getTopLevelComponent()->getPeer();
|
||||
if (peer == nullptr)
|
||||
|
|
|
|||
|
|
@ -123,6 +123,8 @@ public:
|
|||
NSOpenGLContext* sharedContext)
|
||||
: renderContext (nil)
|
||||
{
|
||||
initialiseGLExtensions();
|
||||
|
||||
NSOpenGLPixelFormatAttribute attribs[] =
|
||||
{
|
||||
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);
|
||||
|
||||
//==============================================================================
|
||||
|
|
@ -81,6 +36,7 @@ public:
|
|||
component (component_),
|
||||
dc (0)
|
||||
{
|
||||
initialiseGLExtensions();
|
||||
jassert (component != nullptr);
|
||||
|
||||
createNativeWindow();
|
||||
|
|
|
|||
|
|
@ -23,9 +23,6 @@
|
|||
==============================================================================
|
||||
*/
|
||||
|
||||
BEGIN_JUCE_NAMESPACE
|
||||
|
||||
|
||||
//==============================================================================
|
||||
OpenGLPixelFormat::OpenGLPixelFormat (const int bitsPerRGBComponent,
|
||||
const int alphaBits_,
|
||||
|
|
@ -556,5 +553,3 @@ unsigned int OpenGLComponent::getFrameBufferID() const
|
|||
{
|
||||
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
|
||||
{
|
||||
public:
|
||||
|
|
@ -138,14 +42,12 @@ public:
|
|||
jassert (OpenGLHelpers::isContextActive());
|
||||
|
||||
#if JUCE_WINDOWS || JUCE_LINUX
|
||||
initialiseFrameBufferFunctions();
|
||||
|
||||
if (glGenFramebuffersEXT == nullptr)
|
||||
if (glGenFramebuffers == nullptr)
|
||||
return;
|
||||
#endif
|
||||
|
||||
glGenFramebuffersEXT (1, &frameBufferHandle);
|
||||
glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, frameBufferHandle);
|
||||
glGenFramebuffers (1, &frameBufferHandle);
|
||||
glBindFramebuffer (GL_FRAMEBUFFER, frameBufferHandle);
|
||||
|
||||
glGenTextures (1, &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);
|
||||
|
||||
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)
|
||||
{
|
||||
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
|
||||
: GL_DEPTH_COMPONENT16,
|
||||
#else
|
||||
|
|
@ -175,17 +77,17 @@ public:
|
|||
width, height);
|
||||
|
||||
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)
|
||||
glFramebufferRenderbufferEXT (GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthOrStencilBuffer);
|
||||
glFramebufferRenderbuffer (GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, depthOrStencilBuffer);
|
||||
|
||||
hasDepthBuffer = wantsDepthBuffer;
|
||||
hasStencilBuffer = wantsStencilBuffer;
|
||||
}
|
||||
|
||||
glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0);
|
||||
glBindFramebuffer (GL_FRAMEBUFFER, 0);
|
||||
}
|
||||
|
||||
~Pimpl()
|
||||
|
|
@ -194,14 +96,14 @@ public:
|
|||
glDeleteTextures (1, &textureID);
|
||||
|
||||
if (depthOrStencilBuffer != 0)
|
||||
glDeleteRenderbuffersEXT (1, &depthOrStencilBuffer);
|
||||
glDeleteRenderbuffers (1, &depthOrStencilBuffer);
|
||||
|
||||
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;
|
||||
GLuint textureID, frameBufferHandle, depthOrStencilBuffer;
|
||||
|
|
@ -210,10 +112,10 @@ public:
|
|||
private:
|
||||
static bool checkStatus() noexcept
|
||||
{
|
||||
const GLenum status = glCheckFramebufferStatusEXT (GL_FRAMEBUFFER_EXT);
|
||||
const GLenum status = glCheckFramebufferStatus (GL_FRAMEBUFFER);
|
||||
|
||||
return status == GL_NO_ERROR
|
||||
|| status == GL_FRAMEBUFFER_COMPLETE_EXT;
|
||||
|| status == GL_FRAMEBUFFER_COMPLETE;
|
||||
}
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE (Pimpl);
|
||||
|
|
@ -348,13 +250,13 @@ bool OpenGLFrameBuffer::makeCurrentRenderingTarget()
|
|||
|
||||
void OpenGLFrameBuffer::setCurrentFrameBufferTarget (GLuint frameBufferID)
|
||||
{
|
||||
glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, frameBufferID);
|
||||
glBindFramebuffer (GL_FRAMEBUFFER, frameBufferID);
|
||||
}
|
||||
|
||||
GLuint OpenGLFrameBuffer::getCurrentFrameBufferTarget()
|
||||
{
|
||||
GLint fb;
|
||||
glGetIntegerv (GL_FRAMEBUFFER_BINDING_EXT, &fb);
|
||||
glGetIntegerv (GL_FRAMEBUFFER_BINDING, &fb);
|
||||
return (GLuint) fb;
|
||||
}
|
||||
|
||||
|
|
@ -388,7 +290,7 @@ bool OpenGLFrameBuffer::readPixels (PixelARGB* target, const Rectangle<int>& are
|
|||
|
||||
glPixelStorei (GL_PACK_ALIGNMENT, 4);
|
||||
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);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -433,7 +335,7 @@ bool OpenGLFrameBuffer::writePixels (const PixelARGB* data, const Rectangle<int>
|
|||
OpenGLHelpers::drawTriangleStrip (vertices, textureCoords, 4, tex.getTextureID());
|
||||
#endif
|
||||
|
||||
glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0);
|
||||
glBindFramebuffer (GL_FRAMEBUFFER, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -492,6 +394,3 @@ void OpenGLFrameBuffer::drawAt (float x1, float y1) const
|
|||
glBindTexture (GL_TEXTURE_2D, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
END_JUCE_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -23,94 +23,10 @@
|
|||
==============================================================================
|
||||
*/
|
||||
|
||||
BEGIN_JUCE_NAMESPACE
|
||||
|
||||
#if JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX
|
||||
// #define JUCE_USE_OPENGL_SHADERS 1
|
||||
#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
|
||||
{
|
||||
|
|
@ -288,94 +204,14 @@ namespace
|
|||
|
||||
//==============================================================================
|
||||
#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
|
||||
{
|
||||
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
|
||||
{
|
||||
|
|
@ -392,7 +228,7 @@ struct ShaderPrograms
|
|||
{
|
||||
MaskedShaderParams (const OpenGLShaderProgram& program)
|
||||
: maskTexture (program, "maskTexture"),
|
||||
maskBounds (program, "maskBounds")
|
||||
maskBounds (program, "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)
|
||||
{
|
||||
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;
|
||||
|
|
@ -451,13 +290,13 @@ struct ShaderPrograms
|
|||
RadialGradientProgram()
|
||||
: ShaderBase ("#version 120\n"
|
||||
"uniform sampler2D gradientTexture;"
|
||||
"uniform mat2x3 matrix;"
|
||||
"uniform float matrix[6];"
|
||||
"const float textureY = 0.5;"
|
||||
""
|
||||
"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));"
|
||||
"}"),
|
||||
gradientParams (program)
|
||||
|
|
@ -472,15 +311,15 @@ struct ShaderPrograms
|
|||
RadialGradientMaskedProgram()
|
||||
: ShaderBase ("#version 120\n"
|
||||
"uniform sampler2D gradientTexture;"
|
||||
"uniform mat2x3 matrix;"
|
||||
"uniform float matrix[6];"
|
||||
"uniform sampler2D maskTexture;"
|
||||
"uniform ivec4 maskBounds;"
|
||||
"const float textureY = 0.5;"
|
||||
""
|
||||
"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));"
|
||||
""
|
||||
" vec2 maskPos;"
|
||||
|
|
@ -631,10 +470,11 @@ public:
|
|||
, activeShader (nullptr)
|
||||
#endif
|
||||
{
|
||||
initialiseGLExtensions();
|
||||
|
||||
// This object can only be created and used when the current thread has an active OpenGL context.
|
||||
jassert (OpenGLHelpers::isContextActive());
|
||||
|
||||
initialiseWindowsExtensions();
|
||||
target.makeActiveFor2D();
|
||||
glDisableClientState (GL_COLOR_ARRAY);
|
||||
glDisableClientState (GL_NORMAL_ARRAY);
|
||||
|
|
@ -1303,7 +1143,7 @@ public:
|
|||
{
|
||||
flushQuads();
|
||||
activeShader = newShader;
|
||||
glUseProgram (newShader != nullptr ? newShader->program : 0);
|
||||
glUseProgram (newShader != nullptr ? newShader->programID : 0);
|
||||
}
|
||||
}
|
||||
#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::setFont (const Font& newFont) { stack->font = newFont; }
|
||||
Font OpenGLRenderer::getFont() { return stack->font; }
|
||||
|
||||
END_JUCE_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -23,9 +23,6 @@
|
|||
==============================================================================
|
||||
*/
|
||||
|
||||
BEGIN_JUCE_NAMESPACE
|
||||
|
||||
//==============================================================================
|
||||
void OpenGLHelpers::resetErrorState()
|
||||
{
|
||||
while (glGetError() != GL_NO_ERROR) {}
|
||||
|
|
@ -315,6 +312,3 @@ void OpenGLRenderingTarget::prepareFor2D()
|
|||
OpenGLHelpers::prepareFor2D (getRenderingTargetWidth(),
|
||||
getRenderingTargetHeight());
|
||||
}
|
||||
|
||||
|
||||
END_JUCE_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -23,10 +23,7 @@
|
|||
==============================================================================
|
||||
*/
|
||||
|
||||
BEGIN_JUCE_NAMESPACE
|
||||
|
||||
|
||||
//==============================================================================
|
||||
class OpenGLFrameBufferImage : public ImagePixelData
|
||||
{
|
||||
public:
|
||||
|
|
@ -193,5 +190,3 @@ OpenGLFrameBuffer* OpenGLImageType::getFrameBufferFrom (const Image& image)
|
|||
|
||||
return glImage != nullptr ? &(glImage->frameBuffer) : nullptr;
|
||||
}
|
||||
|
||||
END_JUCE_NAMESPACE
|
||||
|
|
|
|||
92
modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp
Normal file
92
modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp
Normal file
|
|
@ -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); }
|
||||
111
modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h
Normal file
111
modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h
Normal file
|
|
@ -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()
|
||||
: 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);
|
||||
unbind();
|
||||
}
|
||||
|
||||
END_JUCE_NAMESPACE
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue