You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

302 lines
16 KiB

5 years ago
1 year ago
2 months ago
2 months ago
7 months ago
3 months ago
  1. /**********************************************************************************************
  2. *
  3. * raylib configuration flags
  4. *
  5. * This file defines all the configuration flags for the different raylib modules
  6. *
  7. * LICENSE: zlib/libpng
  8. *
  9. * Copyright (c) 2018-2024 Ahmad Fatoum & Ramon Santamaria (@raysan5)
  10. *
  11. * This software is provided "as-is", without any express or implied warranty. In no event
  12. * will the authors be held liable for any damages arising from the use of this software.
  13. *
  14. * Permission is granted to anyone to use this software for any purpose, including commercial
  15. * applications, and to alter it and redistribute it freely, subject to the following restrictions:
  16. *
  17. * 1. The origin of this software must not be misrepresented; you must not claim that you
  18. * wrote the original software. If you use this software in a product, an acknowledgment
  19. * in the product documentation would be appreciated but is not required.
  20. *
  21. * 2. Altered source versions must be plainly marked as such, and must not be misrepresented
  22. * as being the original software.
  23. *
  24. * 3. This notice may not be removed or altered from any source distribution.
  25. *
  26. **********************************************************************************************/
  27. #ifndef CONFIG_H
  28. #define CONFIG_H
  29. //------------------------------------------------------------------------------------
  30. // Module selection - Some modules could be avoided
  31. // Mandatory modules: rcore, rlgl, utils
  32. //------------------------------------------------------------------------------------
  33. #define SUPPORT_MODULE_RSHAPES 1
  34. #define SUPPORT_MODULE_RTEXTURES 1
  35. #define SUPPORT_MODULE_RTEXT 1 // WARNING: It requires SUPPORT_MODULE_RTEXTURES to load sprite font textures
  36. #define SUPPORT_MODULE_RMODELS 1
  37. #define SUPPORT_MODULE_RAUDIO 1
  38. //------------------------------------------------------------------------------------
  39. // Module: rcore - Configuration Flags
  40. //------------------------------------------------------------------------------------
  41. // Camera module is included (rcamera.h) and multiple predefined cameras are available: free, 1st/3rd person, orbital
  42. #define SUPPORT_CAMERA_SYSTEM 1
  43. // Gestures module is included (rgestures.h) to support gestures detection: tap, hold, swipe, drag
  44. #define SUPPORT_GESTURES_SYSTEM 1
  45. // Include pseudo-random numbers generator (rprand.h), based on Xoshiro128** and SplitMix64
  46. #define SUPPORT_RPRAND_GENERATOR 1
  47. // Mouse gestures are directly mapped like touches and processed by gestures system
  48. #define SUPPORT_MOUSE_GESTURES 1
  49. // Reconfigure standard input to receive key inputs, works with SSH connection.
  50. #define SUPPORT_SSH_KEYBOARD_RPI 1
  51. // Setting a higher resolution can improve the accuracy of time-out intervals in wait functions.
  52. // However, it can also reduce overall system performance, because the thread scheduler switches tasks more often.
  53. #define SUPPORT_WINMM_HIGHRES_TIMER 1
  54. // Use busy wait loop for timing sync, if not defined, a high-resolution timer is set up and used
  55. //#define SUPPORT_BUSY_WAIT_LOOP 1
  56. // Use a partial-busy wait loop, in this case frame sleeps for most of the time, but then runs a busy loop at the end for accuracy
  57. #define SUPPORT_PARTIALBUSY_WAIT_LOOP 1
  58. // Allow automatic screen capture of current screen pressing F12, defined in KeyCallback()
  59. #define SUPPORT_SCREEN_CAPTURE 1
  60. // Allow automatic gif recording of current screen pressing CTRL+F12, defined in KeyCallback()
  61. #define SUPPORT_GIF_RECORDING 1
  62. // Support CompressData() and DecompressData() functions
  63. #define SUPPORT_COMPRESSION_API 1
  64. // Support automatic generated events, loading and recording of those events when required
  65. #define SUPPORT_AUTOMATION_EVENTS 1
  66. // Support custom frame control, only for advanced users
  67. // By default EndDrawing() does this job: draws everything + SwapScreenBuffer() + manage frame timing + PollInputEvents()
  68. // Enabling this flag allows manual control of the frame processes, use at your own risk
  69. //#define SUPPORT_CUSTOM_FRAME_CONTROL 1
  70. // Support for clipboard image loading
  71. // NOTE: Only working on SDL3, GLFW (Windows) and RGFW (Windows)
  72. #define SUPPORT_CLIPBOARD_IMAGE 1
  73. // NOTE: Clipboard image loading requires support for some image file formats
  74. // TODO: Those defines should probably be removed from here, I prefer to let the user manage them
  75. #if defined(SUPPORT_CLIPBOARD_IMAGE)
  76. #ifndef SUPPORT_MODULE_RTEXTURES
  77. #define SUPPORT_MODULE_RTEXTURES 1
  78. #endif
  79. #ifndef STBI_REQUIRED
  80. #define STBI_REQUIRED
  81. #endif
  82. #ifndef SUPPORT_FILEFORMAT_BMP // For clipboard image on Windows
  83. #define SUPPORT_FILEFORMAT_BMP 1
  84. #endif
  85. #ifndef SUPPORT_FILEFORMAT_PNG // Wayland uses png for prints, at least it was on 22 LTS ubuntu
  86. #define SUPPORT_FILEFORMAT_PNG 1
  87. #endif
  88. #ifndef SUPPORT_FILEFORMAT_JPG
  89. #define SUPPORT_FILEFORMAT_JPG 1
  90. #endif
  91. #endif
  92. // rcore: Configuration values
  93. //------------------------------------------------------------------------------------
  94. #define MAX_FILEPATH_CAPACITY 8192 // Maximum file paths capacity
  95. #define MAX_FILEPATH_LENGTH 4096 // Maximum length for filepaths (Linux PATH_MAX default value)
  96. #define MAX_KEYBOARD_KEYS 512 // Maximum number of keyboard keys supported
  97. #define MAX_MOUSE_BUTTONS 8 // Maximum number of mouse buttons supported
  98. #define MAX_GAMEPADS 4 // Maximum number of gamepads supported
  99. #define MAX_GAMEPAD_AXIS 8 // Maximum number of axis supported (per gamepad)
  100. #define MAX_GAMEPAD_BUTTONS 32 // Maximum number of buttons supported (per gamepad)
  101. #define MAX_GAMEPAD_VIBRATION_TIME 2.0f // Maximum vibration time in seconds
  102. #define MAX_TOUCH_POINTS 8 // Maximum number of touch points supported
  103. #define MAX_KEY_PRESSED_QUEUE 16 // Maximum number of keys in the key input queue
  104. #define MAX_CHAR_PRESSED_QUEUE 16 // Maximum number of characters in the char input queue
  105. #define MAX_DECOMPRESSION_SIZE 64 // Max size allocated for decompression in MB
  106. #define MAX_AUTOMATION_EVENTS 16384 // Maximum number of automation events to record
  107. //------------------------------------------------------------------------------------
  108. // Module: rlgl - Configuration values
  109. //------------------------------------------------------------------------------------
  110. // Enable OpenGL Debug Context (only available on OpenGL 4.3)
  111. //#define RLGL_ENABLE_OPENGL_DEBUG_CONTEXT 1
  112. // Show OpenGL extensions and capabilities detailed logs on init
  113. //#define RLGL_SHOW_GL_DETAILS_INFO 1
  114. #define RL_SUPPORT_MESH_GPU_SKINNING 1 // GPU skinning, comment if your GPU does not support more than 8 VBOs
  115. //#define RL_DEFAULT_BATCH_BUFFER_ELEMENTS 4096 // Default internal render batch elements limits
  116. #define RL_DEFAULT_BATCH_BUFFERS 1 // Default number of batch buffers (multi-buffering)
  117. #define RL_DEFAULT_BATCH_DRAWCALLS 256 // Default number of batch draw calls (by state changes: mode, texture)
  118. #define RL_DEFAULT_BATCH_MAX_TEXTURE_UNITS 4 // Maximum number of textures units that can be activated on batch drawing (SetShaderValueTexture())
  119. #define RL_MAX_MATRIX_STACK_SIZE 32 // Maximum size of internal Matrix stack
  120. #define RL_MAX_SHADER_LOCATIONS 32 // Maximum number of shader locations supported
  121. #define RL_CULL_DISTANCE_NEAR 0.01 // Default projection matrix near cull distance
  122. #define RL_CULL_DISTANCE_FAR 1000.0 // Default projection matrix far cull distance
  123. // Default shader vertex attribute locations
  124. #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION 0
  125. #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD 1
  126. #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL 2
  127. #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_COLOR 3
  128. #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_TANGENT 4
  129. #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD2 5
  130. #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_INDICES 6
  131. #if defined(RL_SUPPORT_MESH_GPU_SKINNING)
  132. #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEIDS 7
  133. #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_BONEWEIGHTS 8
  134. #endif
  135. #define RL_DEFAULT_SHADER_ATTRIB_LOCATION_INSTANCE_TX 9
  136. // Default shader vertex attribute names to set location points
  137. // NOTE: When a new shader is loaded, the following locations are tried to be set for convenience
  138. #define RL_DEFAULT_SHADER_ATTRIB_NAME_POSITION "vertexPosition" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_POSITION
  139. #define RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD "vertexTexCoord" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD
  140. #define RL_DEFAULT_SHADER_ATTRIB_NAME_NORMAL "vertexNormal" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_NORMAL
  141. #define RL_DEFAULT_SHADER_ATTRIB_NAME_COLOR "vertexColor" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_COLOR
  142. #define RL_DEFAULT_SHADER_ATTRIB_NAME_TANGENT "vertexTangent" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_TANGENT
  143. #define RL_DEFAULT_SHADER_ATTRIB_NAME_TEXCOORD2 "vertexTexCoord2" // Bound by default to shader location: RL_DEFAULT_SHADER_ATTRIB_LOCATION_TEXCOORD2
  144. #define RL_DEFAULT_SHADER_UNIFORM_NAME_MVP "mvp" // model-view-projection matrix
  145. #define RL_DEFAULT_SHADER_UNIFORM_NAME_VIEW "matView" // view matrix
  146. #define RL_DEFAULT_SHADER_UNIFORM_NAME_PROJECTION "matProjection" // projection matrix
  147. #define RL_DEFAULT_SHADER_UNIFORM_NAME_MODEL "matModel" // model matrix
  148. #define RL_DEFAULT_SHADER_UNIFORM_NAME_NORMAL "matNormal" // normal matrix (transpose(inverse(matModelView))
  149. #define RL_DEFAULT_SHADER_UNIFORM_NAME_COLOR "colDiffuse" // color diffuse (base tint color, multiplied by texture color)
  150. #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE0 "texture0" // texture0 (texture slot active 0)
  151. #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE1 "texture1" // texture1 (texture slot active 1)
  152. #define RL_DEFAULT_SHADER_SAMPLER2D_NAME_TEXTURE2 "texture2" // texture2 (texture slot active 2)
  153. //------------------------------------------------------------------------------------
  154. // Module: rshapes - Configuration Flags
  155. //------------------------------------------------------------------------------------
  156. // Use QUADS instead of TRIANGLES for drawing when possible
  157. // Some lines-based shapes could still use lines
  158. #define SUPPORT_QUADS_DRAW_MODE 1
  159. // rshapes: Configuration values
  160. //------------------------------------------------------------------------------------
  161. #define SPLINE_SEGMENT_DIVISIONS 24 // Spline segments subdivisions
  162. //------------------------------------------------------------------------------------
  163. // Module: rtextures - Configuration Flags
  164. //------------------------------------------------------------------------------------
  165. // Selecte desired fileformats to be supported for image data loading
  166. #define SUPPORT_FILEFORMAT_PNG 1
  167. //#define SUPPORT_FILEFORMAT_BMP 1
  168. //#define SUPPORT_FILEFORMAT_TGA 1
  169. //#define SUPPORT_FILEFORMAT_JPG 1
  170. #define SUPPORT_FILEFORMAT_GIF 1
  171. #define SUPPORT_FILEFORMAT_QOI 1
  172. //#define SUPPORT_FILEFORMAT_PSD 1
  173. #define SUPPORT_FILEFORMAT_DDS 1
  174. //#define SUPPORT_FILEFORMAT_HDR 1
  175. //#define SUPPORT_FILEFORMAT_PIC 1
  176. //#define SUPPORT_FILEFORMAT_KTX 1
  177. //#define SUPPORT_FILEFORMAT_ASTC 1
  178. //#define SUPPORT_FILEFORMAT_PKM 1
  179. //#define SUPPORT_FILEFORMAT_PVR 1
  180. // Support image export functionality (.png, .bmp, .tga, .jpg, .qoi)
  181. #define SUPPORT_IMAGE_EXPORT 1
  182. // Support procedural image generation functionality (gradient, spot, perlin-noise, cellular)
  183. #define SUPPORT_IMAGE_GENERATION 1
  184. // Support multiple image editing functions to scale, adjust colors, flip, draw on images, crop...
  185. // If not defined, still some functions are supported: ImageFormat(), ImageCrop(), ImageToPOT()
  186. #define SUPPORT_IMAGE_MANIPULATION 1
  187. //------------------------------------------------------------------------------------
  188. // Module: rtext - Configuration Flags
  189. //------------------------------------------------------------------------------------
  190. // Default font is loaded on window initialization to be available for the user to render simple text
  191. // NOTE: If enabled, uses external module functions to load default raylib font
  192. #define SUPPORT_DEFAULT_FONT 1
  193. // Selected desired font fileformats to be supported for loading
  194. #define SUPPORT_FILEFORMAT_TTF 1
  195. #define SUPPORT_FILEFORMAT_FNT 1
  196. //#define SUPPORT_FILEFORMAT_BDF 1
  197. // Support text management functions
  198. // If not defined, still some functions are supported: TextLength(), TextFormat()
  199. #define SUPPORT_TEXT_MANIPULATION 1
  200. // On font atlas image generation [GenImageFontAtlas()], add a 3x3 pixels white rectangle
  201. // at the bottom-right corner of the atlas. It can be useful to for shapes drawing, to allow
  202. // drawing text and shapes with a single draw call [SetShapesTexture()].
  203. #define SUPPORT_FONT_ATLAS_WHITE_REC 1
  204. // rtext: Configuration values
  205. //------------------------------------------------------------------------------------
  206. #define MAX_TEXT_BUFFER_LENGTH 1024 // Size of internal static buffers used on some functions:
  207. // TextFormat(), TextSubtext(), TextToUpper(), TextToLower(), TextToPascal(), TextSplit()
  208. #define MAX_TEXTSPLIT_COUNT 128 // Maximum number of substrings to split: TextSplit()
  209. //------------------------------------------------------------------------------------
  210. // Module: rmodels - Configuration Flags
  211. //------------------------------------------------------------------------------------
  212. // Selected desired model fileformats to be supported for loading
  213. #define SUPPORT_FILEFORMAT_OBJ 1
  214. #define SUPPORT_FILEFORMAT_MTL 1
  215. #define SUPPORT_FILEFORMAT_IQM 1
  216. #define SUPPORT_FILEFORMAT_GLTF 1
  217. #define SUPPORT_FILEFORMAT_VOX 1
  218. #define SUPPORT_FILEFORMAT_M3D 1
  219. // Support procedural mesh generation functions, uses external par_shapes.h library
  220. // NOTE: Some generated meshes DO NOT include generated texture coordinates
  221. #define SUPPORT_MESH_GENERATION 1
  222. // rmodels: Configuration values
  223. //------------------------------------------------------------------------------------
  224. #define MAX_MATERIAL_MAPS 12 // Maximum number of shader maps supported
  225. #ifdef RL_SUPPORT_MESH_GPU_SKINNING
  226. #define MAX_MESH_VERTEX_BUFFERS 9 // Maximum vertex buffers (VBO) per mesh
  227. #else
  228. #define MAX_MESH_VERTEX_BUFFERS 7 // Maximum vertex buffers (VBO) per mesh
  229. #endif
  230. //------------------------------------------------------------------------------------
  231. // Module: raudio - Configuration Flags
  232. //------------------------------------------------------------------------------------
  233. // Desired audio fileformats to be supported for loading
  234. #define SUPPORT_FILEFORMAT_WAV 1
  235. #define SUPPORT_FILEFORMAT_OGG 1
  236. #define SUPPORT_FILEFORMAT_MP3 1
  237. #define SUPPORT_FILEFORMAT_QOA 1
  238. //#define SUPPORT_FILEFORMAT_FLAC 1
  239. #define SUPPORT_FILEFORMAT_XM 1
  240. #define SUPPORT_FILEFORMAT_MOD 1
  241. // raudio: Configuration values
  242. //------------------------------------------------------------------------------------
  243. #define AUDIO_DEVICE_FORMAT ma_format_f32 // Device output format (miniaudio: float-32bit)
  244. #define AUDIO_DEVICE_CHANNELS 2 // Device output channels: stereo
  245. #define AUDIO_DEVICE_SAMPLE_RATE 0 // Device sample rate (device default)
  246. #define MAX_AUDIO_BUFFER_POOL_CHANNELS 16 // Maximum number of audio pool channels
  247. //------------------------------------------------------------------------------------
  248. // Module: utils - Configuration Flags
  249. //------------------------------------------------------------------------------------
  250. // Standard file io library (stdio.h) included
  251. #define SUPPORT_STANDARD_FILEIO 1
  252. // Show TRACELOG() output messages
  253. // NOTE: By default LOG_DEBUG traces not shown
  254. #define SUPPORT_TRACELOG 1
  255. //#define SUPPORT_TRACELOG_DEBUG 1
  256. // utils: Configuration values
  257. //------------------------------------------------------------------------------------
  258. #define MAX_TRACELOG_MSG_LENGTH 256 // Max length of one trace-log message
  259. #endif // CONFIG_H