25bd5d8adb
subrepo: subdir: "deps/juce" merged: "b13f9084e" upstream: origin: "https://github.com/essej/JUCE.git" branch: "sono6good" commit: "b13f9084e" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596"
141 lines
4.7 KiB
C++
141 lines
4.7 KiB
C++
/*
|
|
==============================================================================
|
|
|
|
This file is part of the JUCE library.
|
|
Copyright (c) 2020 - Raw Material Software Limited
|
|
|
|
JUCE is an open source library subject to commercial or open-source
|
|
licensing.
|
|
|
|
By using JUCE, you agree to the terms of both the JUCE 6 End-User License
|
|
Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020).
|
|
|
|
End User License Agreement: www.juce.com/juce-6-licence
|
|
Privacy Policy: www.juce.com/juce-privacy-policy
|
|
|
|
Or: You may also use this code under the terms of the GPL v3 (see
|
|
www.gnu.org/licenses).
|
|
|
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
|
DISCLAIMED.
|
|
|
|
==============================================================================
|
|
*/
|
|
|
|
namespace juce
|
|
{
|
|
|
|
/** @internal This macro contains a list of GL extension functions that need to be dynamically loaded on Windows/Linux.
|
|
@see OpenGLExtensionFunctions
|
|
*/
|
|
#define JUCE_GL_BASE_FUNCTIONS \
|
|
X (glActiveTexture) \
|
|
X (glBindBuffer) \
|
|
X (glDeleteBuffers) \
|
|
X (glGenBuffers) \
|
|
X (glBufferData) \
|
|
X (glBufferSubData) \
|
|
X (glCreateProgram) \
|
|
X (glDeleteProgram) \
|
|
X (glCreateShader) \
|
|
X (glDeleteShader) \
|
|
X (glShaderSource) \
|
|
X (glCompileShader) \
|
|
X (glAttachShader) \
|
|
X (glLinkProgram) \
|
|
X (glUseProgram) \
|
|
X (glGetShaderiv) \
|
|
X (glGetShaderInfoLog) \
|
|
X (glGetProgramInfoLog) \
|
|
X (glGetProgramiv) \
|
|
X (glGetUniformLocation) \
|
|
X (glGetAttribLocation) \
|
|
X (glVertexAttribPointer) \
|
|
X (glEnableVertexAttribArray) \
|
|
X (glDisableVertexAttribArray) \
|
|
X (glUniform1f) \
|
|
X (glUniform1i) \
|
|
X (glUniform2f) \
|
|
X (glUniform3f) \
|
|
X (glUniform4f) \
|
|
X (glUniform4i) \
|
|
X (glUniform1fv) \
|
|
X (glUniformMatrix2fv) \
|
|
X (glUniformMatrix3fv) \
|
|
X (glUniformMatrix4fv) \
|
|
X (glBindAttribLocation)
|
|
|
|
/** @internal This macro contains a list of GL extension functions that need to be dynamically loaded on Windows/Linux.
|
|
@see OpenGLExtensionFunctions
|
|
*/
|
|
#define JUCE_GL_EXTENSION_FUNCTIONS \
|
|
X (glIsRenderbuffer) \
|
|
X (glBindRenderbuffer) \
|
|
X (glDeleteRenderbuffers) \
|
|
X (glGenRenderbuffers) \
|
|
X (glRenderbufferStorage) \
|
|
X (glGetRenderbufferParameteriv) \
|
|
X (glIsFramebuffer) \
|
|
X (glBindFramebuffer) \
|
|
X (glDeleteFramebuffers) \
|
|
X (glGenFramebuffers) \
|
|
X (glCheckFramebufferStatus) \
|
|
X (glFramebufferTexture2D) \
|
|
X (glFramebufferRenderbuffer) \
|
|
X (glGetFramebufferAttachmentParameteriv)
|
|
|
|
/** @internal This macro contains a list of GL extension functions that need to be dynamically loaded on Windows/Linux.
|
|
@see OpenGLExtensionFunctions
|
|
*/
|
|
#define JUCE_GL_VERTEXBUFFER_FUNCTIONS \
|
|
X (glGenVertexArrays) \
|
|
X (glDeleteVertexArrays) \
|
|
X (glBindVertexArray)
|
|
|
|
/** This class contains a generated list of OpenGL extension functions, which are either dynamically loaded
|
|
for a specific GL context, or simply call-through to the appropriate OS function where available.
|
|
|
|
This class is provided for backwards compatibility. In new code, you should prefer to use
|
|
functions from the juce::gl namespace. By importing all these symbols with
|
|
`using namespace ::juce::gl;`, all GL enumerations and functions will be made available at
|
|
global scope. This may be helpful if you need to write code with C source compatibility, or
|
|
which is compatible with a different extension-loading library.
|
|
All the normal guidance about `using namespace` should still apply - don't do this in a header,
|
|
or at all if you can possibly avoid it!
|
|
|
|
@tags{OpenGL}
|
|
*/
|
|
struct OpenGLExtensionFunctions
|
|
{
|
|
//==============================================================================
|
|
#ifndef DOXYGEN
|
|
[[deprecated ("A more complete set of GL commands can be found in the juce::gl namespace. "
|
|
"You should use juce::gl::loadFunctions() to load GL functions.")]]
|
|
static void initialise();
|
|
#endif
|
|
|
|
#if JUCE_WINDOWS && ! defined (DOXYGEN)
|
|
typedef char GLchar;
|
|
typedef pointer_sized_int GLsizeiptr;
|
|
typedef pointer_sized_int GLintptr;
|
|
#endif
|
|
|
|
#define X(name) static decltype (::juce::gl::name)& name;
|
|
JUCE_GL_BASE_FUNCTIONS
|
|
JUCE_GL_EXTENSION_FUNCTIONS
|
|
JUCE_GL_VERTEXBUFFER_FUNCTIONS
|
|
#undef X
|
|
};
|
|
|
|
enum MissingOpenGLDefinitions
|
|
{
|
|
#if JUCE_ANDROID
|
|
JUCE_RGBA_FORMAT = ::juce::gl::GL_RGBA,
|
|
#else
|
|
JUCE_RGBA_FORMAT = ::juce::gl::GL_BGRA_EXT,
|
|
#endif
|
|
};
|
|
|
|
} // namespace juce
|