|
|
@ -17,7 +17,9 @@ |
|
|
|
* #define GRAPHICS_API_OPENGL_21 |
|
|
|
* #define GRAPHICS_API_OPENGL_33 |
|
|
|
* #define GRAPHICS_API_OPENGL_ES2 |
|
|
|
* Use selected OpenGL backend |
|
|
|
* Use selected OpenGL graphics backend, should be supported by platform |
|
|
|
* Those preprocessor defines are only used on rlgl module, if OpenGL version is |
|
|
|
* required by any other module, use rlGetVersion() tocheck it |
|
|
|
* |
|
|
|
* #define RLGL_STANDALONE |
|
|
|
* Use rlgl as standalone library (no raylib dependency) |
|
|
@ -57,11 +59,8 @@ |
|
|
|
#ifndef RLGL_H |
|
|
|
#define RLGL_H |
|
|
|
|
|
|
|
//#define RLGL_STANDALONE // NOTE: To use rlgl as standalone lib, just uncomment this line |
|
|
|
|
|
|
|
#ifndef RLGL_STANDALONE |
|
|
|
#include "raylib.h" // Required for: Model, Shader, Texture2D |
|
|
|
#include "utils.h" // Required for: TraceLog() |
|
|
|
#include "raylib.h" // Required for: Model, Shader, Texture2D, TraceLog() |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifdef RLGL_STANDALONE |
|
|
@ -70,15 +69,6 @@ |
|
|
|
|
|
|
|
#include "raymath.h" // Required for: Vector3, Matrix |
|
|
|
|
|
|
|
// Select desired OpenGL version |
|
|
|
// NOTE: Those preprocessor defines are only used on rlgl module, |
|
|
|
// if OpenGL version is required by any other module, it uses rlGetVersion() |
|
|
|
|
|
|
|
// Choose opengl version here or just define it at compile time: -DGRAPHICS_API_OPENGL_33 |
|
|
|
//#define GRAPHICS_API_OPENGL_11 // Only available on PLATFORM_DESKTOP |
|
|
|
//#define GRAPHICS_API_OPENGL_33 // Only available on PLATFORM_DESKTOP and RLGL_OCULUS_SUPPORT |
|
|
|
//#define GRAPHICS_API_OPENGL_ES2 // Only available on PLATFORM_ANDROID or PLATFORM_RPI or PLATFORM_WEB |
|
|
|
|
|
|
|
// Security check in case no GRAPHICS_API_OPENGL_* defined |
|
|
|
#if !defined(GRAPHICS_API_OPENGL_11) && !defined(GRAPHICS_API_OPENGL_21) && !defined(GRAPHICS_API_OPENGL_33) && !defined(GRAPHICS_API_OPENGL_ES2) |
|
|
|
#define GRAPHICS_API_OPENGL_11 |
|
|
@ -165,28 +155,23 @@ typedef unsigned char byte; |
|
|
|
unsigned char b; |
|
|
|
unsigned char a; |
|
|
|
} Color; |
|
|
|
|
|
|
|
// Texture2D type |
|
|
|
// NOTE: Data stored in GPU memory |
|
|
|
typedef struct Texture2D { |
|
|
|
unsigned int id; // OpenGL texture id |
|
|
|
int width; // Texture base width |
|
|
|
int height; // Texture base height |
|
|
|
int mipmaps; // Mipmap levels, 1 by default |
|
|
|
int format; // Data format (TextureFormat) |
|
|
|
} Texture2D; |
|
|
|
|
|
|
|
// Texture formats (support depends on OpenGL version) |
|
|
|
typedef enum { |
|
|
|
UNCOMPRESSED_GRAYSCALE = 1, // 8 bit per pixel (no alpha) |
|
|
|
UNCOMPRESSED_GRAY_ALPHA, |
|
|
|
UNCOMPRESSED_R5G6B5, // 16 bpp |
|
|
|
UNCOMPRESSED_R8G8B8, // 24 bpp |
|
|
|
UNCOMPRESSED_R5G5B5A1, // 16 bpp (1 bit alpha) |
|
|
|
UNCOMPRESSED_R4G4B4A4, // 16 bpp (4 bit alpha) |
|
|
|
UNCOMPRESSED_R8G8B8A8, // 32 bpp |
|
|
|
COMPRESSED_DXT1_RGB, // 4 bpp (no alpha) |
|
|
|
COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha) |
|
|
|
COMPRESSED_DXT3_RGBA, // 8 bpp |
|
|
|
COMPRESSED_DXT5_RGBA, // 8 bpp |
|
|
|
COMPRESSED_ETC1_RGB, // 4 bpp |
|
|
|
COMPRESSED_ETC2_RGB, // 4 bpp |
|
|
|
COMPRESSED_ETC2_EAC_RGBA, // 8 bpp |
|
|
|
COMPRESSED_PVRT_RGB, // 4 bpp |
|
|
|
COMPRESSED_PVRT_RGBA, // 4 bpp |
|
|
|
COMPRESSED_ASTC_4x4_RGBA, // 8 bpp |
|
|
|
COMPRESSED_ASTC_8x8_RGBA // 2 bpp |
|
|
|
} TextureFormat; |
|
|
|
// RenderTexture2D type, for texture rendering |
|
|
|
typedef struct RenderTexture2D { |
|
|
|
unsigned int id; // Render texture (fbo) id |
|
|
|
Texture2D texture; // Color buffer attachment texture |
|
|
|
Texture2D depth; // Depth buffer attachment texture |
|
|
|
} RenderTexture2D; |
|
|
|
|
|
|
|
// Vertex data definning a mesh |
|
|
|
typedef struct Mesh { |
|
|
@ -228,23 +213,6 @@ typedef unsigned char byte; |
|
|
|
int mapTexture2Loc; // Map texture uniform location point (default-texture-unit = 2) |
|
|
|
} Shader; |
|
|
|
|
|
|
|
// Texture2D type |
|
|
|
// NOTE: Data stored in GPU memory |
|
|
|
typedef struct Texture2D { |
|
|
|
unsigned int id; // OpenGL texture id |
|
|
|
int width; // Texture base width |
|
|
|
int height; // Texture base height |
|
|
|
int mipmaps; // Mipmap levels, 1 by default |
|
|
|
int format; // Data format (TextureFormat) |
|
|
|
} Texture2D; |
|
|
|
|
|
|
|
// RenderTexture2D type, for texture rendering |
|
|
|
typedef struct RenderTexture2D { |
|
|
|
unsigned int id; // Render texture (fbo) id |
|
|
|
Texture2D texture; // Color buffer attachment texture |
|
|
|
Texture2D depth; // Depth buffer attachment texture |
|
|
|
} RenderTexture2D; |
|
|
|
|
|
|
|
// Material type |
|
|
|
typedef struct Material { |
|
|
|
Shader shader; // Standard shader (supports 3 map types: diffuse, normal, specular) |
|
|
@ -267,6 +235,37 @@ typedef unsigned char byte; |
|
|
|
Vector3 up; // Camera up vector (rotation over its axis) |
|
|
|
float fovy; // Camera field-of-view apperture in Y (degrees) |
|
|
|
} Camera; |
|
|
|
|
|
|
|
// TraceLog message types |
|
|
|
typedef enum { |
|
|
|
INFO = 0, |
|
|
|
ERROR, |
|
|
|
WARNING, |
|
|
|
DEBUG, |
|
|
|
OTHER |
|
|
|
} TraceLogType; |
|
|
|
|
|
|
|
// Texture formats (support depends on OpenGL version) |
|
|
|
typedef enum { |
|
|
|
UNCOMPRESSED_GRAYSCALE = 1, // 8 bit per pixel (no alpha) |
|
|
|
UNCOMPRESSED_GRAY_ALPHA, |
|
|
|
UNCOMPRESSED_R5G6B5, // 16 bpp |
|
|
|
UNCOMPRESSED_R8G8B8, // 24 bpp |
|
|
|
UNCOMPRESSED_R5G5B5A1, // 16 bpp (1 bit alpha) |
|
|
|
UNCOMPRESSED_R4G4B4A4, // 16 bpp (4 bit alpha) |
|
|
|
UNCOMPRESSED_R8G8B8A8, // 32 bpp |
|
|
|
COMPRESSED_DXT1_RGB, // 4 bpp (no alpha) |
|
|
|
COMPRESSED_DXT1_RGBA, // 4 bpp (1 bit alpha) |
|
|
|
COMPRESSED_DXT3_RGBA, // 8 bpp |
|
|
|
COMPRESSED_DXT5_RGBA, // 8 bpp |
|
|
|
COMPRESSED_ETC1_RGB, // 4 bpp |
|
|
|
COMPRESSED_ETC2_RGB, // 4 bpp |
|
|
|
COMPRESSED_ETC2_EAC_RGBA, // 8 bpp |
|
|
|
COMPRESSED_PVRT_RGB, // 4 bpp |
|
|
|
COMPRESSED_PVRT_RGBA, // 4 bpp |
|
|
|
COMPRESSED_ASTC_4x4_RGBA, // 8 bpp |
|
|
|
COMPRESSED_ASTC_8x8_RGBA // 2 bpp |
|
|
|
} TextureFormat; |
|
|
|
|
|
|
|
// Texture parameters: filter mode |
|
|
|
// NOTE 1: Filtering considers mipmaps if available in the texture |
|
|
@ -281,13 +280,18 @@ typedef unsigned char byte; |
|
|
|
} TextureFilterMode; |
|
|
|
|
|
|
|
// Texture parameters: wrap mode |
|
|
|
typedef enum { WRAP_REPEAT = 0, WRAP_CLAMP, WRAP_MIRROR } TextureWrapMode; |
|
|
|
typedef enum { |
|
|
|
WRAP_REPEAT = 0, |
|
|
|
WRAP_CLAMP, |
|
|
|
WRAP_MIRROR |
|
|
|
} TextureWrapMode; |
|
|
|
|
|
|
|
// Color blending modes (pre-defined) |
|
|
|
typedef enum { BLEND_ALPHA = 0, BLEND_ADDITIVE, BLEND_MULTIPLIED } BlendMode; |
|
|
|
|
|
|
|
// TraceLog message types |
|
|
|
typedef enum { INFO = 0, ERROR, WARNING, DEBUG, OTHER } TraceLogType; |
|
|
|
typedef enum { |
|
|
|
BLEND_ALPHA = 0, |
|
|
|
BLEND_ADDITIVE, |
|
|
|
BLEND_MULTIPLIED |
|
|
|
} BlendMode; |
|
|
|
|
|
|
|
// VR Head Mounted Display devices |
|
|
|
typedef enum { |
|
|
|