mirror of
https://github.com/raysan5/raylib.git
synced 2026-04-10 01:09:10 -04:00
REVIEWED: Software renderer flag, renamed to GRAPHICS_API_OPENGL_SOFTWARE
Dropped the `11` relative to OpenGL 1.1 because latest `rlsw 1.5` also includes support for FBOs and could potentially implemented other higher level features in the feature, discerning from OpenGL 1.1 limitations
This commit is contained in:
@ -60,7 +60,7 @@
|
|||||||
#include "SDL.h"
|
#include "SDL.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if !defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
#if defined(GRAPHICS_API_OPENGL_ES2)
|
#if defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
// It seems it does not need to be included to work
|
// It seems it does not need to be included to work
|
||||||
//#include "SDL_opengles2.h"
|
//#include "SDL_opengles2.h"
|
||||||
@ -1259,7 +1259,7 @@ void DisableCursor(void)
|
|||||||
// Swap back buffer with front buffer (screen drawing)
|
// Swap back buffer with front buffer (screen drawing)
|
||||||
void SwapScreenBuffer(void)
|
void SwapScreenBuffer(void)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
// NOTE: Using a preprocessor condition here because rlCopyFramebuffer() is only declared for software rendering
|
// NOTE: Using a preprocessor condition here because rlCopyFramebuffer() is only declared for software rendering
|
||||||
SDL_Surface *surface = SDL_GetWindowSurface(platform.window);
|
SDL_Surface *surface = SDL_GetWindowSurface(platform.window);
|
||||||
rlCopyFramebuffer(0, 0, CORE.Window.render.width, CORE.Window.render.height, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, surface->pixels);
|
rlCopyFramebuffer(0, 0, CORE.Window.render.width, CORE.Window.render.height, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, surface->pixels);
|
||||||
@ -1981,7 +1981,7 @@ int InitPlatform(void)
|
|||||||
|
|
||||||
// NOTE: Some OpenGL context attributes must be set before window creation
|
// NOTE: Some OpenGL context attributes must be set before window creation
|
||||||
|
|
||||||
if (rlGetVersion() != RL_OPENGL_11_SOFTWARE)
|
if (rlGetVersion() != RL_OPENGL_SOFTWARE)
|
||||||
{
|
{
|
||||||
// Add the flag telling the window to use an OpenGL context
|
// Add the flag telling the window to use an OpenGL context
|
||||||
flags |= SDL_WINDOW_OPENGL;
|
flags |= SDL_WINDOW_OPENGL;
|
||||||
@ -2044,12 +2044,12 @@ int InitPlatform(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Init OpenGL context
|
// Init OpenGL context
|
||||||
if (rlGetVersion() != RL_OPENGL_11_SOFTWARE)
|
if (rlGetVersion() != RL_OPENGL_SOFTWARE)
|
||||||
{
|
{
|
||||||
platform.glContext = SDL_GL_CreateContext(platform.window);
|
platform.glContext = SDL_GL_CreateContext(platform.window);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((platform.window != NULL) && ((rlGetVersion() == RL_OPENGL_11_SOFTWARE) || (platform.glContext != NULL)))
|
if ((platform.window != NULL) && ((rlGetVersion() == RL_OPENGL_SOFTWARE) || (platform.glContext != NULL)))
|
||||||
{
|
{
|
||||||
CORE.Window.ready = true;
|
CORE.Window.ready = true;
|
||||||
|
|
||||||
|
|||||||
@ -71,7 +71,7 @@
|
|||||||
|
|
||||||
#include <malloc.h> // Required for alloca()
|
#include <malloc.h> // Required for alloca()
|
||||||
|
|
||||||
#if !defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if !defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
#include <GL/gl.h>
|
#include <GL/gl.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1218,7 +1218,7 @@ void SwapScreenBuffer(void)
|
|||||||
{
|
{
|
||||||
if (!platform.hdc) abort();
|
if (!platform.hdc) abort();
|
||||||
|
|
||||||
#if defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
// Update framebuffer
|
// Update framebuffer
|
||||||
rlCopyFramebuffer(0, 0, CORE.Window.render.width, CORE.Window.render.height, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, platform.pixels);
|
rlCopyFramebuffer(0, 0, CORE.Window.render.width, CORE.Window.render.height, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, platform.pixels);
|
||||||
|
|
||||||
@ -1603,7 +1603,7 @@ int InitPlatform(void)
|
|||||||
// NOTE: Windows GDI object that represents a drawing surface
|
// NOTE: Windows GDI object that represents a drawing surface
|
||||||
platform.hdc = GetDC(platform.hwnd);
|
platform.hdc = GetDC(platform.hwnd);
|
||||||
|
|
||||||
if (rlGetVersion() == RL_OPENGL_11_SOFTWARE) // Using software renderer
|
if (rlGetVersion() == RL_OPENGL_SOFTWARE) // Using software renderer
|
||||||
{
|
{
|
||||||
// Initialize software framebuffer
|
// Initialize software framebuffer
|
||||||
BITMAPINFO bmi = { 0 };
|
BITMAPINFO bmi = { 0 };
|
||||||
@ -1649,11 +1649,11 @@ int InitPlatform(void)
|
|||||||
TRACELOG(LOG_INFO, " > Render size: %i x %i", CORE.Window.render.width, CORE.Window.render.height);
|
TRACELOG(LOG_INFO, " > Render size: %i x %i", CORE.Window.render.width, CORE.Window.render.height);
|
||||||
TRACELOG(LOG_INFO, " > Viewport offsets: %i, %i", CORE.Window.renderOffset.x, CORE.Window.renderOffset.y);
|
TRACELOG(LOG_INFO, " > Viewport offsets: %i, %i", CORE.Window.renderOffset.x, CORE.Window.renderOffset.y);
|
||||||
|
|
||||||
if (rlGetVersion() == RL_OPENGL_11_SOFTWARE) // Using software renderer
|
if (rlGetVersion() == RL_OPENGL_SOFTWARE) // Using software renderer
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_INFO, "GL: OpenGL device information:");
|
TRACELOG(LOG_INFO, "GL: OpenGL device information:");
|
||||||
TRACELOG(LOG_INFO, " > Vendor: %s", "raylib");
|
TRACELOG(LOG_INFO, " > Vendor: %s", "raylib");
|
||||||
TRACELOG(LOG_INFO, " > Renderer: %s", "rlsw - OpenGL 1.1 Software Renderer");
|
TRACELOG(LOG_INFO, " > Renderer: %s", "rlsw - OpenGL Software Renderer");
|
||||||
TRACELOG(LOG_INFO, " > Version: %s", "1.0");
|
TRACELOG(LOG_INFO, " > Version: %s", "1.0");
|
||||||
TRACELOG(LOG_INFO, " > GLSL: %s", "NOT SUPPORTED");
|
TRACELOG(LOG_INFO, " > GLSL: %s", "NOT SUPPORTED");
|
||||||
}
|
}
|
||||||
@ -1719,7 +1719,7 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpara
|
|||||||
case WM_DESTROY:
|
case WM_DESTROY:
|
||||||
{
|
{
|
||||||
// Clean up for window destruction
|
// Clean up for window destruction
|
||||||
if (rlGetVersion() == RL_OPENGL_11_SOFTWARE) // Using software renderer
|
if (rlGetVersion() == RL_OPENGL_SOFTWARE) // Using software renderer
|
||||||
{
|
{
|
||||||
if (platform.hdcmem)
|
if (platform.hdcmem)
|
||||||
{
|
{
|
||||||
@ -1935,7 +1935,7 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpara
|
|||||||
} break;
|
} break;
|
||||||
case WM_PAINT:
|
case WM_PAINT:
|
||||||
{
|
{
|
||||||
if (rlGetVersion() == RL_OPENGL_11_SOFTWARE) // Using software renderer
|
if (rlGetVersion() == RL_OPENGL_SOFTWARE) // Using software renderer
|
||||||
{
|
{
|
||||||
PAINTSTRUCT ps = { 0 };
|
PAINTSTRUCT ps = { 0 };
|
||||||
HDC hdc = BeginPaint(hwnd, &ps);
|
HDC hdc = BeginPaint(hwnd, &ps);
|
||||||
|
|||||||
@ -65,7 +65,7 @@
|
|||||||
#include <xf86drm.h> // Direct Rendering Manager user-level library interface
|
#include <xf86drm.h> // Direct Rendering Manager user-level library interface
|
||||||
#include <xf86drmMode.h> // Direct Rendering Manager mode setting (KMS) interface
|
#include <xf86drmMode.h> // Direct Rendering Manager mode setting (KMS) interface
|
||||||
|
|
||||||
#if !defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if !defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
#include <gbm.h> // Generic Buffer Management (native platform for EGL on DRM)
|
#include <gbm.h> // Generic Buffer Management (native platform for EGL on DRM)
|
||||||
#include "EGL/egl.h" // Native platform windowing system interface
|
#include "EGL/egl.h" // Native platform windowing system interface
|
||||||
#include "EGL/eglext.h" // EGL extensions
|
#include "EGL/eglext.h" // EGL extensions
|
||||||
@ -111,7 +111,7 @@ typedef struct {
|
|||||||
int modeIndex; // Index of the used mode of connector->modes
|
int modeIndex; // Index of the used mode of connector->modes
|
||||||
uint32_t prevFB; // Previous DRM framebufer (during frame swapping)
|
uint32_t prevFB; // Previous DRM framebufer (during frame swapping)
|
||||||
|
|
||||||
#if !defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if !defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
struct gbm_device *gbmDevice; // GBM device
|
struct gbm_device *gbmDevice; // GBM device
|
||||||
struct gbm_surface *gbmSurface; // GBM surface
|
struct gbm_surface *gbmSurface; // GBM surface
|
||||||
struct gbm_bo *prevBO; // Previous GBM buffer object (during frame swapping)
|
struct gbm_bo *prevBO; // Previous GBM buffer object (during frame swapping)
|
||||||
@ -796,7 +796,7 @@ void SwapScreenBuffer()
|
|||||||
// Swap back buffer with front buffer (screen drawing)
|
// Swap back buffer with front buffer (screen drawing)
|
||||||
void SwapScreenBuffer(void)
|
void SwapScreenBuffer(void)
|
||||||
{
|
{
|
||||||
#if !defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if !defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
// Hardware rendering buffer swap with EGL
|
// Hardware rendering buffer swap with EGL
|
||||||
eglSwapBuffers(platform.device, platform.surface);
|
eglSwapBuffers(platform.device, platform.surface);
|
||||||
|
|
||||||
@ -1140,7 +1140,7 @@ int InitPlatform(void)
|
|||||||
platform.crtc = NULL;
|
platform.crtc = NULL;
|
||||||
platform.prevFB = 0;
|
platform.prevFB = 0;
|
||||||
|
|
||||||
#if !defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if !defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
platform.gbmDevice = NULL;
|
platform.gbmDevice = NULL;
|
||||||
platform.gbmSurface = NULL;
|
platform.gbmSurface = NULL;
|
||||||
platform.prevBO = NULL;
|
platform.prevBO = NULL;
|
||||||
@ -1224,7 +1224,7 @@ int InitPlatform(void)
|
|||||||
// WARNING: Accept CONNECTED, UNKNOWN and even those without encoder_id connectors for software mode
|
// WARNING: Accept CONNECTED, UNKNOWN and even those without encoder_id connectors for software mode
|
||||||
if (((con->connection == DRM_MODE_CONNECTED) || (con->connection == DRM_MODE_UNKNOWNCONNECTION)) && (con->count_modes > 0))
|
if (((con->connection == DRM_MODE_CONNECTED) || (con->connection == DRM_MODE_UNKNOWNCONNECTION)) && (con->count_modes > 0))
|
||||||
{
|
{
|
||||||
#if !defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if !defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
// For hardware rendering, an encoder_id is needed
|
// For hardware rendering, an encoder_id is needed
|
||||||
if (con->encoder_id)
|
if (con->encoder_id)
|
||||||
{
|
{
|
||||||
@ -1256,7 +1256,7 @@ int InitPlatform(void)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if !defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
drmModeEncoder *enc = drmModeGetEncoder(platform.fd, platform.connector->encoder_id);
|
drmModeEncoder *enc = drmModeGetEncoder(platform.fd, platform.connector->encoder_id);
|
||||||
if (!enc)
|
if (!enc)
|
||||||
{
|
{
|
||||||
@ -1367,7 +1367,7 @@ int InitPlatform(void)
|
|||||||
drmModeFreeResources(res);
|
drmModeFreeResources(res);
|
||||||
res = NULL;
|
res = NULL;
|
||||||
|
|
||||||
#if !defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if !defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
// Hardware rendering initialization with EGL
|
// Hardware rendering initialization with EGL
|
||||||
platform.gbmDevice = gbm_create_device(platform.fd);
|
platform.gbmDevice = gbm_create_device(platform.fd);
|
||||||
if (!platform.gbmDevice)
|
if (!platform.gbmDevice)
|
||||||
@ -1657,7 +1657,7 @@ void ClosePlatform(void)
|
|||||||
platform.prevFB = 0;
|
platform.prevFB = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if !defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
if (platform.prevBO)
|
if (platform.prevBO)
|
||||||
{
|
{
|
||||||
gbm_surface_release_buffer(platform.gbmSurface, platform.prevBO);
|
gbm_surface_release_buffer(platform.gbmSurface, platform.prevBO);
|
||||||
@ -1697,7 +1697,7 @@ void ClosePlatform(void)
|
|||||||
platform.fd = -1;
|
platform.fd = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if !defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
// Close surface, context and display
|
// Close surface, context and display
|
||||||
if (platform.device != EGL_NO_DISPLAY)
|
if (platform.device != EGL_NO_DISPLAY)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -486,9 +486,9 @@ void PollInputEvents(void)
|
|||||||
int InitPlatform(void)
|
int InitPlatform(void)
|
||||||
{
|
{
|
||||||
// Memory framebuffer can only work with software renderer
|
// Memory framebuffer can only work with software renderer
|
||||||
if (rlGetVersion() != RL_OPENGL_11_SOFTWARE)
|
if (rlGetVersion() != RL_OPENGL_SOFTWARE)
|
||||||
{
|
{
|
||||||
TRACELOG(LOG_WARNING, "DISPLAY: Memory platform requires software renderer (GRAPHICS_API_OPENGL_11_SOFTWARE)");
|
TRACELOG(LOG_WARNING, "DISPLAY: Memory platform requires software renderer (GRAPHICS_API_OPENGL_SOFTWARE)");
|
||||||
TRACELOG(LOG_FATAL, "PLATFORM: Failed to initialize graphics device");
|
TRACELOG(LOG_FATAL, "PLATFORM: Failed to initialize graphics device");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -77,7 +77,7 @@ typedef struct {
|
|||||||
char canvasId[64]; // Keep current canvas id where wasm app is running
|
char canvasId[64]; // Keep current canvas id where wasm app is running
|
||||||
// NOTE: Useful when trying to run multiple wasms in different canvases in same webpage
|
// NOTE: Useful when trying to run multiple wasms in different canvases in same webpage
|
||||||
|
|
||||||
#if defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
unsigned int *pixels; // Pointer to pixel data buffer (RGBA 32bit format)
|
unsigned int *pixels; // Pointer to pixel data buffer (RGBA 32bit format)
|
||||||
#endif
|
#endif
|
||||||
} PlatformData;
|
} PlatformData;
|
||||||
@ -949,7 +949,7 @@ void DisableCursor(void)
|
|||||||
// Swap back buffer with front buffer (screen drawing)
|
// Swap back buffer with front buffer (screen drawing)
|
||||||
void SwapScreenBuffer(void)
|
void SwapScreenBuffer(void)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
// Update framebuffer
|
// Update framebuffer
|
||||||
rlCopyFramebuffer(0, 0, CORE.Window.render.width, CORE.Window.render.height, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, platform.pixels);
|
rlCopyFramebuffer(0, 0, CORE.Window.render.width, CORE.Window.render.height, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, platform.pixels);
|
||||||
|
|
||||||
@ -1306,7 +1306,7 @@ int InitPlatform(void)
|
|||||||
// Init fullscreen toggle required var:
|
// Init fullscreen toggle required var:
|
||||||
platform.ourFullscreen = false;
|
platform.ourFullscreen = false;
|
||||||
|
|
||||||
#if defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
// Avoid creating a WebGL canvas, avoid calling glfwCreateWindow()
|
// Avoid creating a WebGL canvas, avoid calling glfwCreateWindow()
|
||||||
emscripten_set_canvas_element_size(platform.canvasId, CORE.Window.screen.width, CORE.Window.screen.height);
|
emscripten_set_canvas_element_size(platform.canvasId, CORE.Window.screen.width, CORE.Window.screen.height);
|
||||||
EM_ASM({
|
EM_ASM({
|
||||||
|
|||||||
@ -927,7 +927,7 @@ void DisableCursor(void)
|
|||||||
// Swap back buffer with front buffer (screen drawing)
|
// Swap back buffer with front buffer (screen drawing)
|
||||||
void SwapScreenBuffer(void)
|
void SwapScreenBuffer(void)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
// Update framebuffer
|
// Update framebuffer
|
||||||
rlCopyFramebuffer(0, 0, CORE.Window.render.width, CORE.Window.render.height, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, platform.pixels);
|
rlCopyFramebuffer(0, 0, CORE.Window.render.width, CORE.Window.render.height, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8, platform.pixels);
|
||||||
|
|
||||||
@ -1188,7 +1188,7 @@ int InitPlatform(void)
|
|||||||
if (FLAG_IS_SET(CORE.Window.flags, FLAG_MSAA_4X_HINT)) attribs.antialias = EM_TRUE;
|
if (FLAG_IS_SET(CORE.Window.flags, FLAG_MSAA_4X_HINT)) attribs.antialias = EM_TRUE;
|
||||||
|
|
||||||
// Check selection OpenGL version
|
// Check selection OpenGL version
|
||||||
if (rlGetVersion() == RL_OPENGL_11_SOFTWARE)
|
if (rlGetVersion() == RL_OPENGL_SOFTWARE)
|
||||||
{
|
{
|
||||||
// Avoid creating a WebGL canvas, create 2d canvas for software rendering
|
// Avoid creating a WebGL canvas, create 2d canvas for software rendering
|
||||||
emscripten_set_canvas_element_size(platform.canvasId, CORE.Window.screen.width, CORE.Window.screen.height);
|
emscripten_set_canvas_element_size(platform.canvasId, CORE.Window.screen.width, CORE.Window.screen.height);
|
||||||
|
|||||||
42
src/rlgl.h
42
src/rlgl.h
@ -21,7 +21,7 @@
|
|||||||
* Internal buffer (and resources) must be manually unloaded calling rlglClose()
|
* Internal buffer (and resources) must be manually unloaded calling rlglClose()
|
||||||
*
|
*
|
||||||
* CONFIGURATION:
|
* CONFIGURATION:
|
||||||
* #define GRAPHICS_API_OPENGL_11_SOFTWARE
|
* #define GRAPHICS_API_OPENGL_SOFTWARE
|
||||||
* #define GRAPHICS_API_OPENGL_11
|
* #define GRAPHICS_API_OPENGL_11
|
||||||
* #define GRAPHICS_API_OPENGL_21
|
* #define GRAPHICS_API_OPENGL_21
|
||||||
* #define GRAPHICS_API_OPENGL_33
|
* #define GRAPHICS_API_OPENGL_33
|
||||||
@ -145,7 +145,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Security check in case no GRAPHICS_API_OPENGL_* defined
|
// Security check in case no GRAPHICS_API_OPENGL_* defined
|
||||||
#if !defined(GRAPHICS_API_OPENGL_11_SOFTWARE) && \
|
#if !defined(GRAPHICS_API_OPENGL_SOFTWARE) && \
|
||||||
!defined(GRAPHICS_API_OPENGL_11) && \
|
!defined(GRAPHICS_API_OPENGL_11) && \
|
||||||
!defined(GRAPHICS_API_OPENGL_21) && \
|
!defined(GRAPHICS_API_OPENGL_21) && \
|
||||||
!defined(GRAPHICS_API_OPENGL_33) && \
|
!defined(GRAPHICS_API_OPENGL_33) && \
|
||||||
@ -156,7 +156,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Security check in case multiple GRAPHICS_API_OPENGL_* defined
|
// Security check in case multiple GRAPHICS_API_OPENGL_* defined
|
||||||
#if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
#if defined(GRAPHICS_API_OPENGL_21)
|
#if defined(GRAPHICS_API_OPENGL_21)
|
||||||
#undef GRAPHICS_API_OPENGL_21
|
#undef GRAPHICS_API_OPENGL_21
|
||||||
#endif
|
#endif
|
||||||
@ -172,7 +172,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Software implementation uses OpenGL 1.1 functionality
|
// Software implementation uses OpenGL 1.1 functionality
|
||||||
#if defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
#define GRAPHICS_API_OPENGL_11
|
#define GRAPHICS_API_OPENGL_11
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -423,7 +423,7 @@ typedef struct rlRenderBatch {
|
|||||||
|
|
||||||
// OpenGL version
|
// OpenGL version
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RL_OPENGL_11_SOFTWARE = 0, // Software rendering
|
RL_OPENGL_SOFTWARE = 0, // Software rendering
|
||||||
RL_OPENGL_11, // OpenGL 1.1
|
RL_OPENGL_11, // OpenGL 1.1
|
||||||
RL_OPENGL_21, // OpenGL 2.1 (GLSL 120)
|
RL_OPENGL_21, // OpenGL 2.1 (GLSL 120)
|
||||||
RL_OPENGL_33, // OpenGL 3.3 (GLSL 330)
|
RL_OPENGL_33, // OpenGL 3.3 (GLSL 330)
|
||||||
@ -835,7 +835,7 @@ RLAPI void rlLoadDrawQuad(void); // Load and draw a quad
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(GRAPHICS_API_OPENGL_11)
|
#if defined(GRAPHICS_API_OPENGL_11)
|
||||||
#if defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
#define RLSW_IMPLEMENTATION
|
#define RLSW_IMPLEMENTATION
|
||||||
#define SW_MALLOC(sz) RL_MALLOC(sz)
|
#define SW_MALLOC(sz) RL_MALLOC(sz)
|
||||||
#define SW_CALLOC(n,sz) RL_CALLOC(n, sz)
|
#define SW_CALLOC(n,sz) RL_CALLOC(n, sz)
|
||||||
@ -1858,7 +1858,7 @@ void rlDisableShader(void)
|
|||||||
// Enable rendering to texture (fbo)
|
// Enable rendering to texture (fbo)
|
||||||
void rlEnableFramebuffer(unsigned int id)
|
void rlEnableFramebuffer(unsigned int id)
|
||||||
{
|
{
|
||||||
#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_11_SOFTWARE))
|
#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_SOFTWARE))
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, id);
|
glBindFramebuffer(GL_FRAMEBUFFER, id);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -1867,7 +1867,7 @@ void rlEnableFramebuffer(unsigned int id)
|
|||||||
unsigned int rlGetActiveFramebuffer(void)
|
unsigned int rlGetActiveFramebuffer(void)
|
||||||
{
|
{
|
||||||
GLint fboId = 0;
|
GLint fboId = 0;
|
||||||
#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES3) || defined(GRAPHICS_API_OPENGL_11_SOFTWARE))
|
#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES3) || defined(GRAPHICS_API_OPENGL_SOFTWARE))
|
||||||
glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &fboId);
|
glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &fboId);
|
||||||
#endif
|
#endif
|
||||||
return fboId;
|
return fboId;
|
||||||
@ -1876,7 +1876,7 @@ unsigned int rlGetActiveFramebuffer(void)
|
|||||||
// Disable rendering to texture
|
// Disable rendering to texture
|
||||||
void rlDisableFramebuffer(void)
|
void rlDisableFramebuffer(void)
|
||||||
{
|
{
|
||||||
#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_11_SOFTWARE))
|
#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_SOFTWARE))
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -1892,7 +1892,7 @@ void rlBlitFramebuffer(int srcX, int srcY, int srcWidth, int srcHeight, int dstX
|
|||||||
// Bind framebuffer object (fbo)
|
// Bind framebuffer object (fbo)
|
||||||
void rlBindFramebuffer(unsigned int target, unsigned int framebuffer)
|
void rlBindFramebuffer(unsigned int target, unsigned int framebuffer)
|
||||||
{
|
{
|
||||||
#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_11_SOFTWARE))
|
#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_SOFTWARE))
|
||||||
glBindFramebuffer(target, framebuffer);
|
glBindFramebuffer(target, framebuffer);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -2325,7 +2325,7 @@ void rlglInit(int width, int height)
|
|||||||
RLGL.State.currentMatrix = &RLGL.State.modelview;
|
RLGL.State.currentMatrix = &RLGL.State.modelview;
|
||||||
#endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2
|
#endif // GRAPHICS_API_OPENGL_33 || GRAPHICS_API_OPENGL_ES2
|
||||||
|
|
||||||
#if defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
// Initialize software renderer backend
|
// Initialize software renderer backend
|
||||||
int result = swInit(width, height);
|
int result = swInit(width, height);
|
||||||
if (result == 0)
|
if (result == 0)
|
||||||
@ -2387,7 +2387,7 @@ void rlglClose(void)
|
|||||||
TRACELOG(RL_LOG_INFO, "TEXTURE: [ID %i] Default texture unloaded successfully", RLGL.State.defaultTextureId);
|
TRACELOG(RL_LOG_INFO, "TEXTURE: [ID %i] Default texture unloaded successfully", RLGL.State.defaultTextureId);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
swClose(); // Unload sofware renderer resources
|
swClose(); // Unload sofware renderer resources
|
||||||
#endif
|
#endif
|
||||||
isGpuReady = false;
|
isGpuReady = false;
|
||||||
@ -2702,8 +2702,8 @@ int rlGetVersion(void)
|
|||||||
{
|
{
|
||||||
int glVersion = 0;
|
int glVersion = 0;
|
||||||
|
|
||||||
#if defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
glVersion = RL_OPENGL_11_SOFTWARE;
|
glVersion = RL_OPENGL_SOFTWARE;
|
||||||
#elif defined(GRAPHICS_API_OPENGL_11)
|
#elif defined(GRAPHICS_API_OPENGL_11)
|
||||||
glVersion = RL_OPENGL_11;
|
glVersion = RL_OPENGL_11;
|
||||||
#endif
|
#endif
|
||||||
@ -3472,7 +3472,7 @@ unsigned int rlLoadTextureDepth(int width, int height, bool useRenderBuffer)
|
|||||||
|
|
||||||
TRACELOG(RL_LOG_INFO, "TEXTURE: [ID %i] Depth renderbuffer loaded successfully (%i bits)", id, (RLGL.ExtSupported.maxDepthBits >= 24)? RLGL.ExtSupported.maxDepthBits : 16);
|
TRACELOG(RL_LOG_INFO, "TEXTURE: [ID %i] Depth renderbuffer loaded successfully (%i bits)", id, (RLGL.ExtSupported.maxDepthBits >= 24)? RLGL.ExtSupported.maxDepthBits : 16);
|
||||||
}
|
}
|
||||||
#elif defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#elif defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
// NOTE: Renderbuffers are the same type of object as textures in rlsw
|
// NOTE: Renderbuffers are the same type of object as textures in rlsw
|
||||||
// WARNING: Ensure that the depth format is the one specified at rlsw compilation
|
// WARNING: Ensure that the depth format is the one specified at rlsw compilation
|
||||||
glGenRenderbuffers(1, &id);
|
glGenRenderbuffers(1, &id);
|
||||||
@ -3776,7 +3776,7 @@ void *rlReadTexturePixels(unsigned int id, int width, int height, int format)
|
|||||||
// Copy framebuffer pixel data to internal buffer
|
// Copy framebuffer pixel data to internal buffer
|
||||||
void rlCopyFramebuffer(int x, int y, int width, int height, int format, void *pixels)
|
void rlCopyFramebuffer(int x, int y, int width, int height, int format, void *pixels)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
unsigned int glInternalFormat, glFormat, glType;
|
unsigned int glInternalFormat, glFormat, glType;
|
||||||
rlGetGlTextureFormats(format, &glInternalFormat, &glFormat, &glType); // Get OpenGL texture format
|
rlGetGlTextureFormats(format, &glInternalFormat, &glFormat, &glType); // Get OpenGL texture format
|
||||||
swReadPixels(x, y, width, height, glFormat, glType, pixels);
|
swReadPixels(x, y, width, height, glFormat, glType, pixels);
|
||||||
@ -3786,7 +3786,7 @@ void rlCopyFramebuffer(int x, int y, int width, int height, int format, void *pi
|
|||||||
// Resize internal framebuffer
|
// Resize internal framebuffer
|
||||||
void rlResizeFramebuffer(int width, int height)
|
void rlResizeFramebuffer(int width, int height)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
swResize(width, height);
|
swResize(width, height);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -3837,7 +3837,7 @@ unsigned int rlLoadFramebuffer(void)
|
|||||||
unsigned int fboId = 0;
|
unsigned int fboId = 0;
|
||||||
if (!isGpuReady) { TRACELOG(RL_LOG_WARNING, "GL: GPU is not ready to load data, trying to load before InitWindow()?"); return fboId; }
|
if (!isGpuReady) { TRACELOG(RL_LOG_WARNING, "GL: GPU is not ready to load data, trying to load before InitWindow()?"); return fboId; }
|
||||||
|
|
||||||
#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_11_SOFTWARE))
|
#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_SOFTWARE))
|
||||||
glGenFramebuffers(1, &fboId); // Create the framebuffer object
|
glGenFramebuffers(1, &fboId); // Create the framebuffer object
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, 0); // Unbind any framebuffer
|
glBindFramebuffer(GL_FRAMEBUFFER, 0); // Unbind any framebuffer
|
||||||
#endif
|
#endif
|
||||||
@ -3849,7 +3849,7 @@ unsigned int rlLoadFramebuffer(void)
|
|||||||
// NOTE: Attach type: 0-Color, 1-Depth renderbuffer, 2-Depth texture
|
// NOTE: Attach type: 0-Color, 1-Depth renderbuffer, 2-Depth texture
|
||||||
void rlFramebufferAttach(unsigned int id, unsigned int texId, int attachType, int texType, int mipLevel)
|
void rlFramebufferAttach(unsigned int id, unsigned int texId, int attachType, int texType, int mipLevel)
|
||||||
{
|
{
|
||||||
#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_11_SOFTWARE))
|
#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_SOFTWARE))
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, id);
|
glBindFramebuffer(GL_FRAMEBUFFER, id);
|
||||||
|
|
||||||
switch (attachType)
|
switch (attachType)
|
||||||
@ -3889,7 +3889,7 @@ bool rlFramebufferComplete(unsigned int id)
|
|||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
|
|
||||||
#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_11_SOFTWARE))
|
#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_SOFTWARE))
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, id);
|
glBindFramebuffer(GL_FRAMEBUFFER, id);
|
||||||
|
|
||||||
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
|
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
|
||||||
@ -3920,7 +3920,7 @@ bool rlFramebufferComplete(unsigned int id)
|
|||||||
// NOTE: All attached textures/cubemaps/renderbuffers are also deleted
|
// NOTE: All attached textures/cubemaps/renderbuffers are also deleted
|
||||||
void rlUnloadFramebuffer(unsigned int id)
|
void rlUnloadFramebuffer(unsigned int id)
|
||||||
{
|
{
|
||||||
#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_11_SOFTWARE))
|
#if (defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) || defined(GRAPHICS_API_OPENGL_SOFTWARE))
|
||||||
// Query depth attachment to automatically delete texture/renderbuffer
|
// Query depth attachment to automatically delete texture/renderbuffer
|
||||||
int depthType = 0;
|
int depthType = 0;
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, id); // Bind framebuffer to query depth texture type
|
glBindFramebuffer(GL_FRAMEBUFFER, id); // Bind framebuffer to query depth texture type
|
||||||
|
|||||||
@ -1430,7 +1430,7 @@ void UpdateMeshBuffer(Mesh mesh, int index, const void *data, int dataSize, int
|
|||||||
// Draw a 3d mesh with material and transform
|
// Draw a 3d mesh with material and transform
|
||||||
void DrawMesh(Mesh mesh, Material material, Matrix transform)
|
void DrawMesh(Mesh mesh, Material material, Matrix transform)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_11_SOFTWARE)
|
#if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_SOFTWARE)
|
||||||
#define GL_VERTEX_ARRAY 0x8074
|
#define GL_VERTEX_ARRAY 0x8074
|
||||||
#define GL_NORMAL_ARRAY 0x8075
|
#define GL_NORMAL_ARRAY 0x8075
|
||||||
#define GL_COLOR_ARRAY 0x8076
|
#define GL_COLOR_ARRAY 0x8076
|
||||||
|
|||||||
Reference in New Issue
Block a user