Continuation of support for ES3/WebGL2 (#3107)
* Continuation of support for ES3/WebGL2 * GetTouchPointState() * Amends to the WebGL2 PR --------- Co-authored-by: root <root@DESKTOP-GLOV9QV> Co-authored-by: chemguerra <online@chemaguerra.com>
This commit is contained in:
parent
2e00d16f3d
commit
f385d0ce1c
@ -246,6 +246,7 @@ endif
|
||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||
# On HTML5 OpenGL ES 2.0 is used, emscripten translates it to WebGL 1.0
|
||||
GRAPHICS = GRAPHICS_API_OPENGL_ES2
|
||||
#GRAPHICS = GRAPHICS_API_OPENGL_ES3 # Uncomment to use ES3/WebGL2 (preliminary support).
|
||||
endif
|
||||
ifeq ($(PLATFORM),PLATFORM_ANDROID)
|
||||
# By default use OpenGL ES 2.0 on Android
|
||||
|
52
src/rlgl.h
52
src/rlgl.h
@ -148,7 +148,8 @@
|
||||
!defined(GRAPHICS_API_OPENGL_21) && \
|
||||
!defined(GRAPHICS_API_OPENGL_33) && \
|
||||
!defined(GRAPHICS_API_OPENGL_43) && \
|
||||
!defined(GRAPHICS_API_OPENGL_ES2)
|
||||
!defined(GRAPHICS_API_OPENGL_ES2) && \
|
||||
!defined(GRAPHICS_API_OPENGL_ES3)
|
||||
#define GRAPHICS_API_OPENGL_33
|
||||
#endif
|
||||
|
||||
@ -1711,7 +1712,7 @@ void rlDisableFramebuffer(void)
|
||||
// NOTE: One color buffer is always active by default
|
||||
void rlActiveDrawBuffers(int count)
|
||||
{
|
||||
#if (defined(GRAPHICS_API_OPENGL_33) && defined(RLGL_RENDER_TEXTURES_HINT))
|
||||
#if ((defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES3)) && defined(RLGL_RENDER_TEXTURES_HINT))
|
||||
// NOTE: Maximum number of draw buffers supported is implementation dependant,
|
||||
// it can be queried with glGet*() but it must be at least 8
|
||||
//GLint maxDrawBuffers = 0;
|
||||
@ -1723,6 +1724,16 @@ void rlActiveDrawBuffers(int count)
|
||||
else
|
||||
{
|
||||
unsigned int buffers[8] = {
|
||||
#if defined(GRAPHICS_API_OPENGL_ES3)
|
||||
GL_COLOR_ATTACHMENT0_EXT,
|
||||
GL_COLOR_ATTACHMENT1_EXT,
|
||||
GL_COLOR_ATTACHMENT2_EXT,
|
||||
GL_COLOR_ATTACHMENT3_EXT,
|
||||
GL_COLOR_ATTACHMENT4_EXT,
|
||||
GL_COLOR_ATTACHMENT5_EXT,
|
||||
GL_COLOR_ATTACHMENT6_EXT,
|
||||
GL_COLOR_ATTACHMENT7_EXT,
|
||||
#else
|
||||
GL_COLOR_ATTACHMENT0,
|
||||
GL_COLOR_ATTACHMENT1,
|
||||
GL_COLOR_ATTACHMENT2,
|
||||
@ -1731,9 +1742,14 @@ void rlActiveDrawBuffers(int count)
|
||||
GL_COLOR_ATTACHMENT5,
|
||||
GL_COLOR_ATTACHMENT6,
|
||||
GL_COLOR_ATTACHMENT7,
|
||||
#endif
|
||||
};
|
||||
|
||||
#if defined(GRAPHICS_API_OPENGL_ES3)
|
||||
glDrawBuffersEXT(count, buffers);
|
||||
#else
|
||||
glDrawBuffers(count, buffers);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else TRACELOG(LOG_WARNING, "GL: One color buffer active by default");
|
||||
@ -2201,7 +2217,29 @@ void rlLoadExtensions(void *loader)
|
||||
|
||||
#endif // GRAPHICS_API_OPENGL_33
|
||||
|
||||
#if defined(GRAPHICS_API_OPENGL_ES2)
|
||||
#if defined(GRAPHICS_API_OPENGL_ES3)
|
||||
// Register supported extensions flags
|
||||
// OpenGL ES 3.0 extensions supported by default
|
||||
RLGL.ExtSupported.vao = true;
|
||||
RLGL.ExtSupported.instancing = true;
|
||||
RLGL.ExtSupported.texNPOT = true;
|
||||
RLGL.ExtSupported.texFloat32 = true;
|
||||
RLGL.ExtSupported.texDepth = true;
|
||||
RLGL.ExtSupported.texDepthWebGL = true;
|
||||
RLGL.ExtSupported.maxDepthBits = 24;
|
||||
RLGL.ExtSupported.texAnisoFilter = true;
|
||||
RLGL.ExtSupported.texMirrorClamp = true;
|
||||
// TODO: Make sure that the ones above are actually present by default
|
||||
// TODO: Check for these...
|
||||
// RLGL.ExtSupported.texCompDXT
|
||||
// RLGL.ExtSupported.texCompETC1
|
||||
// RLGL.ExtSupported.texCompETC2
|
||||
// RLGL.ExtSupported.texCompPVRT
|
||||
// RLGL.ExtSupported.texCompASTC
|
||||
// RLGL.ExtSupported.computeShader
|
||||
// RLGL.ExtSupported.ssbo
|
||||
// RLGL.ExtSupported.maxAnisotropyLevel
|
||||
#elif defined(GRAPHICS_API_OPENGL_ES2)
|
||||
|
||||
#if defined(PLATFORM_DESKTOP)
|
||||
// TODO: Support OpenGL ES 3.0
|
||||
@ -3057,7 +3095,7 @@ unsigned int rlLoadTextureDepth(int width, int height, bool useRenderBuffer)
|
||||
// Possible formats: GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24, GL_DEPTH_COMPONENT32 and GL_DEPTH_COMPONENT32F
|
||||
unsigned int glInternalFormat = GL_DEPTH_COMPONENT;
|
||||
|
||||
#if defined(GRAPHICS_API_OPENGL_ES2)
|
||||
#if (defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_ES3))
|
||||
// WARNING: WebGL platform requires unsized internal format definition (GL_DEPTH_COMPONENT)
|
||||
// while other platforms using OpenGL ES 2.0 require/support sized internal formats depending on the GPU capabilities
|
||||
if (!RLGL.ExtSupported.texDepthWebGL || useRenderBuffer)
|
||||
@ -3214,10 +3252,16 @@ void rlGetGlTextureFormats(int format, unsigned int *glInternalFormat, unsigned
|
||||
case RL_PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_SHORT_4_4_4_4; break;
|
||||
case RL_PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_UNSIGNED_BYTE; break;
|
||||
#if !defined(GRAPHICS_API_OPENGL_11)
|
||||
#if defined(GRAPHICS_API_OPENGL_ES3)
|
||||
case RL_PIXELFORMAT_UNCOMPRESSED_R32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_R32F_EXT; *glFormat = GL_RED_EXT; *glType = GL_FLOAT; break;
|
||||
case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGB32F_EXT; *glFormat = GL_RGB; *glType = GL_FLOAT; break;
|
||||
case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGBA32F_EXT; *glFormat = GL_RGBA; *glType = GL_FLOAT; break;
|
||||
#else
|
||||
case RL_PIXELFORMAT_UNCOMPRESSED_R32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_LUMINANCE; *glFormat = GL_LUMINANCE; *glType = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float
|
||||
case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGB; *glFormat = GL_RGB; *glType = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float
|
||||
case RL_PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: if (RLGL.ExtSupported.texFloat32) *glInternalFormat = GL_RGBA; *glFormat = GL_RGBA; *glType = GL_FLOAT; break; // NOTE: Requires extension OES_texture_float
|
||||
#endif
|
||||
#endif
|
||||
#elif defined(GRAPHICS_API_OPENGL_33)
|
||||
case RL_PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: *glInternalFormat = GL_R8; *glFormat = GL_RED; *glType = GL_UNSIGNED_BYTE; break;
|
||||
case RL_PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: *glInternalFormat = GL_RG8; *glFormat = GL_RG; *glType = GL_UNSIGNED_BYTE; break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user