Browse Source

New class: OpenGLShaderProgram, and GL clean-ups.

tags/2021-05-28
jules 14 years ago
parent
commit
bbac5a8790
29 changed files with 595 additions and 561 deletions
  1. +6
    -0
      extras/JuceDemo/Builds/MacOSX/Juce Demo.xcodeproj/project.pbxproj
  2. +12
    -0
      extras/JuceDemo/Builds/VisualStudio2005/Juce Demo.vcproj
  3. +12
    -0
      extras/JuceDemo/Builds/VisualStudio2008/Juce Demo.vcproj
  4. +5
    -0
      extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj
  5. +9
    -0
      extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj.filters
  6. +6
    -0
      extras/JuceDemo/Builds/iOS/Juce Demo.xcodeproj/project.pbxproj
  7. +6
    -0
      extras/audio plugin host/Builds/MacOSX/Plugin Host.xcodeproj/project.pbxproj
  8. +12
    -0
      extras/audio plugin host/Builds/VisualStudio2005/Plugin Host.vcproj
  9. +12
    -0
      extras/audio plugin host/Builds/VisualStudio2008/Plugin Host.vcproj
  10. +6
    -0
      extras/static library/Builds/MacOSX/juce.xcodeproj/project.pbxproj
  11. +12
    -0
      extras/static library/Builds/VisualStudio2008/juce.vcproj
  12. +5
    -0
      extras/static library/Builds/VisualStudio2010/juce.vcxproj
  13. +9
    -0
      extras/static library/Builds/VisualStudio2010/juce.vcxproj.filters
  14. +36
    -57
      modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp
  15. +3
    -111
      modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm
  16. +5
    -24
      modules/juce_opengl/juce_opengl.cpp
  17. +3
    -0
      modules/juce_opengl/juce_opengl.h
  18. +187
    -0
      modules/juce_opengl/native/juce_OpenGLExtensions.h
  19. +2
    -0
      modules/juce_opengl/native/juce_linux_OpenGLComponent.cpp
  20. +2
    -0
      modules/juce_opengl/native/juce_mac_OpenGLComponent.mm
  21. +1
    -45
      modules/juce_opengl/native/juce_win32_OpenGLComponent.cpp
  22. +0
    -5
      modules/juce_opengl/opengl/juce_OpenGLComponent.cpp
  23. +23
    -124
      modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp
  24. +18
    -180
      modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp
  25. +0
    -6
      modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp
  26. +0
    -5
      modules/juce_opengl/opengl/juce_OpenGLImage.cpp
  27. +92
    -0
      modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp
  28. +111
    -0
      modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h
  29. +0
    -4
      modules/juce_opengl/opengl/juce_OpenGLTexture.cpp

+ 6
- 0
extras/JuceDemo/Builds/MacOSX/Juce Demo.xcodeproj/project.pbxproj View File

@@ -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,


+ 12
- 0
extras/JuceDemo/Builds/VisualStudio2005/Juce Demo.vcproj View File

@@ -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">


+ 12
- 0
extras/JuceDemo/Builds/VisualStudio2008/Juce Demo.vcproj View File

@@ -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">


+ 5
- 0
extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj View File

@@ -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"/>


+ 9
- 0
extras/JuceDemo/Builds/VisualStudio2010/Juce Demo.vcxproj.filters View File

@@ -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>


+ 6
- 0
extras/JuceDemo/Builds/iOS/Juce Demo.xcodeproj/project.pbxproj View File

@@ -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,


+ 6
- 0
extras/audio plugin host/Builds/MacOSX/Plugin Host.xcodeproj/project.pbxproj View File

@@ -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,


+ 12
- 0
extras/audio plugin host/Builds/VisualStudio2005/Plugin Host.vcproj View File

@@ -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">


+ 12
- 0
extras/audio plugin host/Builds/VisualStudio2008/Plugin Host.vcproj View File

@@ -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">


+ 6
- 0
extras/static library/Builds/MacOSX/juce.xcodeproj/project.pbxproj View File

@@ -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,


+ 12
- 0
extras/static library/Builds/VisualStudio2008/juce.vcproj View File

@@ -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">


+ 5
- 0
extras/static library/Builds/VisualStudio2010/juce.vcxproj View File

@@ -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"/>


+ 9
- 0
extras/static library/Builds/VisualStudio2010/juce.vcxproj.filters View File

@@ -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>


+ 36
- 57
modules/juce_audio_formats/codecs/juce_MP3AudioFormat.cpp View File

@@ -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;


+ 3
- 111
modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm View File

@@ -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())];
}
}


+ 5
- 24
modules/juce_opengl/juce_opengl.cpp View File

@@ -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"


+ 3
- 0
modules/juce_opengl/juce_opengl.h View File

@@ -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
- 0
modules/juce_opengl/native/juce_OpenGLExtensions.h View 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
}

+ 2
- 0
modules/juce_opengl/native/juce_linux_OpenGLComponent.cpp View File

@@ -37,6 +37,8 @@ public:
embeddedWindow (0),
swapInterval (0)
{
initialiseGLExtensions();
jassert (component != nullptr);
ComponentPeer* const peer = component->getTopLevelComponent()->getPeer();
if (peer == nullptr)


+ 2
- 0
modules/juce_opengl/native/juce_mac_OpenGLComponent.mm View File

@@ -123,6 +123,8 @@ public:
NSOpenGLContext* sharedContext)
: renderContext (nil)
{
initialiseGLExtensions();
NSOpenGLPixelFormatAttribute attribs[] =
{
NSOpenGLPFADoubleBuffer,


+ 1
- 45
modules/juce_opengl/native/juce_win32_OpenGLComponent.cpp View File

@@ -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();


+ 0
- 5
modules/juce_opengl/opengl/juce_OpenGLComponent.cpp View File

@@ -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
- 124
modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp View File

@@ -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, &params);
glFramebufferRenderbufferEXT (GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthOrStencilBuffer);
glGetRenderbufferParameteriv (GL_RENDERBUFFER, GL_RENDERBUFFER_DEPTH_SIZE, &params);
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

+ 18
- 180
modules/juce_opengl/opengl/juce_OpenGLGraphicsContext.cpp View File

@@ -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

+ 0
- 6
modules/juce_opengl/opengl/juce_OpenGLHelpers.cpp View File

@@ -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

+ 0
- 5
modules/juce_opengl/opengl/juce_OpenGLImage.cpp View File

@@ -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
- 0
modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp View 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
- 0
modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h View 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__

+ 0
- 4
modules/juce_opengl/opengl/juce_OpenGLTexture.cpp View File

@@ -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…
Cancel
Save