commit
53280a56e3
140 changed files with 7512 additions and 9300 deletions
27
.gitignore
vendored
27
.gitignore
vendored
|
|
@ -6,13 +6,6 @@
|
||||||
*.swo
|
*.swo
|
||||||
*~
|
*~
|
||||||
|
|
||||||
# Ignore Android generated files and folders
|
|
||||||
src_android/obj/
|
|
||||||
templates/android_project/bin/
|
|
||||||
templates/android_project/obj/
|
|
||||||
templates/android_project/libs/
|
|
||||||
local.properties
|
|
||||||
|
|
||||||
# Ignore thumbnails created by windows
|
# Ignore thumbnails created by windows
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
|
|
||||||
|
|
@ -42,7 +35,7 @@ Thumbs.db
|
||||||
*.sbr
|
*.sbr
|
||||||
*.sdf
|
*.sdf
|
||||||
obj/
|
obj/
|
||||||
[Rr]elease/
|
[R]elease/
|
||||||
[Rr]elease.win32/
|
[Rr]elease.win32/
|
||||||
_ReSharper*/
|
_ReSharper*/
|
||||||
[Tt]est[Rr]esult*
|
[Tt]est[Rr]esult*
|
||||||
|
|
@ -89,7 +82,6 @@ xcschememanagement.plist
|
||||||
._.*
|
._.*
|
||||||
xcuserdata/
|
xcuserdata/
|
||||||
DerivedData/
|
DerivedData/
|
||||||
*.dll
|
|
||||||
|
|
||||||
# external libraries DLLs
|
# external libraries DLLs
|
||||||
!src/external/glfw3/lib/win32/glfw3.dll
|
!src/external/glfw3/lib/win32/glfw3.dll
|
||||||
|
|
@ -119,16 +111,6 @@ docs/examples/web/*/*.html
|
||||||
!docs/examples/web/shaders/loader.html
|
!docs/examples/web/shaders/loader.html
|
||||||
!docs/examples/web/models/loader.html
|
!docs/examples/web/models/loader.html
|
||||||
|
|
||||||
# raylib release libs
|
|
||||||
src/libraylib.a
|
|
||||||
src/libraylib.bc
|
|
||||||
!release/android/armeabi-v7a/libraylib.a
|
|
||||||
!release/android/armeabi-v7a/libraylib.so
|
|
||||||
!release/linux/libraylib.a
|
|
||||||
!release/linux/libraylib.so
|
|
||||||
!release/rpi/libraylib.a
|
|
||||||
!release/win32/mingw32/raylib.dll
|
|
||||||
|
|
||||||
# Meson build system
|
# Meson build system
|
||||||
builddir/
|
builddir/
|
||||||
|
|
||||||
|
|
@ -149,8 +131,5 @@ build
|
||||||
!examples/CMakeLists.txt
|
!examples/CMakeLists.txt
|
||||||
!games/CMakeLists.txt
|
!games/CMakeLists.txt
|
||||||
|
|
||||||
# binaries made from raylib
|
# Ignore Android generated files and folders
|
||||||
libraylib.a
|
templates/android_project/output
|
||||||
libraylib.so
|
|
||||||
libraylib.dylib
|
|
||||||
libraylib.dll
|
|
||||||
|
|
|
||||||
50
.travis.yml
Normal file
50
.travis.yml
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
language: c
|
||||||
|
sudo: required
|
||||||
|
dist: trusty
|
||||||
|
|
||||||
|
git:
|
||||||
|
depth: 3
|
||||||
|
|
||||||
|
os:
|
||||||
|
- osx
|
||||||
|
- linux
|
||||||
|
|
||||||
|
env:
|
||||||
|
global:
|
||||||
|
- VERBOSE=1
|
||||||
|
matrix:
|
||||||
|
- CFLAGS=-m64
|
||||||
|
- CFLAGS=-m32
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- export CFLAGS="-std=gnu99 $CFLAGS"
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then
|
||||||
|
sudo apt-get install -y gcc-multilib
|
||||||
|
libopenal-dev
|
||||||
|
libxcursor-dev libxinerama-dev
|
||||||
|
mesa-common-dev libx11-dev libxrandr-dev libxi-dev xorg-dev libgl1-mesa-dev libglu1-mesa-dev libglew-dev;
|
||||||
|
wget 'https://github.com/a3f/GLFW-3.2.1-Debian-binary-package/releases/download/v3.2.1/GLFW-3.2.1-Linux.deb' && sudo dpkg -i GLFW-3.2.1-Linux.deb;
|
||||||
|
fi
|
||||||
|
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew update; brew install glfw; fi
|
||||||
|
- "$CC --version"
|
||||||
|
|
||||||
|
script:
|
||||||
|
- mkdir build
|
||||||
|
- cd build
|
||||||
|
- cmake -DBUILD_EXAMPLES=OFF -DBUILD_GAMES=OFF ..
|
||||||
|
- make
|
||||||
|
# - make package
|
||||||
|
# - sudo make install
|
||||||
|
#
|
||||||
|
#deploy:
|
||||||
|
# provider: releases
|
||||||
|
# api_key:
|
||||||
|
# secure: XXX
|
||||||
|
# file_glob: true
|
||||||
|
# file: raylib-*.tar.gz
|
||||||
|
# skip_cleanup: true
|
||||||
|
# on:
|
||||||
|
# branch: master
|
||||||
|
# tags: true
|
||||||
107
CHANGELOG
107
CHANGELOG
|
|
@ -7,16 +7,16 @@ Current Release: raylib 1.8.0 (Oct 2017)
|
||||||
Release: raylib 1.8.0 (Oct 2017)
|
Release: raylib 1.8.0 (Oct 2017)
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
NOTE:
|
NOTE:
|
||||||
In this release, multiple parts of the library have been reviewed again for consistency and simplification.
|
In this release, multiple parts of the library have been reviewed (again) for consistency and simplification.
|
||||||
It exposes more than 20 new functions in comparison with previous version and it improves overall programming experience.
|
It exposes more than 30 new functions in comparison with previous version and it improves overall programming experience.
|
||||||
|
|
||||||
BIG CHANGES:
|
BIG CHANGES:
|
||||||
- Image generation functions: Gradient, Checked, Noise, Cellular...
|
- New Image generation functions: Gradient, Checked, Noise, Cellular...
|
||||||
- Mesh generation functions: Cube, Sphere, Cylinder, Torus, Knot...
|
- New Mesh generation functions: Cube, Sphere, Cylinder, Torus, Knot...
|
||||||
- New Shaders and Materials systems to support PBR materials
|
- New Shaders and Materials systems to support PBR materials
|
||||||
- Custom Android toolchain for APK building with simple Makefile
|
- Custom Android APK build pipeline with simple Makefile
|
||||||
- Complete review of raymath functionality (Matrix, Quaternion)
|
|
||||||
- Complete review of rlgl layer functionality
|
- Complete review of rlgl layer functionality
|
||||||
|
- Complete review of raymath functionality
|
||||||
|
|
||||||
detailed changes:
|
detailed changes:
|
||||||
[rlgl] RENAMED: rlglLoadTexture() to rlLoadTexture()
|
[rlgl] RENAMED: rlglLoadTexture() to rlLoadTexture()
|
||||||
|
|
@ -35,54 +35,63 @@ detailed changes:
|
||||||
[rlgl] RENAMED: LoadDefaultShader() to LoadShaderDefault()
|
[rlgl] RENAMED: LoadDefaultShader() to LoadShaderDefault()
|
||||||
[rlgl] RENAMED: LoadDefaultShaderLocations() to SetShaderDefaultLocations()
|
[rlgl] RENAMED: LoadDefaultShaderLocations() to SetShaderDefaultLocations()
|
||||||
[rlgl] RENAMED: UnloadDefaultShader() to UnLoadShaderDefault()
|
[rlgl] RENAMED: UnloadDefaultShader() to UnLoadShaderDefault()
|
||||||
// Texture maps generation (PBR)
|
[rlgl] ADDED: rlGenMapCubemap(), Generate cubemap texture map from HDR texture
|
||||||
[rlgl] ADDED: rlGenMapCubemap(Texture2D skyHDR, int size); // Generate cubemap texture map from HDR texture
|
[rlgl] ADDED: rlGenMapIrradiance(), Generate irradiance texture map
|
||||||
[rlgl] ADDED: rlGenMapIrradiance(Texture2D cubemap, int size); // Generate irradiance texture map
|
[rlgl] ADDED: rlGenMapPrefilter(), Generate prefilter texture map
|
||||||
[rlgl] ADDED: rlGenMapPrefilter(Texture2D cubemap, int size); // Generate prefilter texture map
|
[rlgl] ADDED: rlGenMapBRDF(), Generate BRDF texture map
|
||||||
[rlgl] ADDED: rlGenMapBRDF(Texture2D cubemap, int size); // Generate BRDF texture map
|
[rlgl] ADDED: GetVrDeviceInfo(), Get VR device information for some standard devices
|
||||||
[core] ADDED: SetWindowTitle()
|
[rlgl] REVIEWED: InitVrSimulator(), to accept device parameters as input
|
||||||
[core] ADDED: GetExtension()
|
[core] ADDED: SetWindowTitle(), Set title for window (only PLATFORM_DESKTOP)
|
||||||
[textures] ADDED: SaveImageAs()
|
[core] ADDED: GetExtension(), Get file extension
|
||||||
? [textures] ADDED: DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // Draw a gradient-filled rectangle with custom vertex colors
|
[shapes] REMOVED: DrawRectangleGradient(), replaced by DrawRectangleGradientV() and DrawRectangleGradientH()
|
||||||
? [textures] ADDED: DrawRectangleT(int posX, int posY, int width, int height, Color color); // Draw rectangle using text character
|
[shapes] ADDED: DrawRectangleGradientV(), Draw a vertical-gradient-filled rectangle
|
||||||
// Image generation functions
|
[shapes] ADDED: DrawRectangleGradientH(), Draw a horizontal-gradient-filled rectangle
|
||||||
[textures] ADDED: GenImageGradientV(int width, int height, Color top, Color bottom); // Generate image: vertical gradient
|
[shapes] ADDED: DrawRectangleGradientEx(), Draw a gradient-filled rectangle with custom vertex colors
|
||||||
[textures] ADDED: GenImageGradientH(int width, int height, Color left, Color right); // Generate image: horizontal gradient
|
[shapes] ADDED: DrawRectangleT(), Draw rectangle using text character
|
||||||
[textures] ADDED: GenImageGradientRadial(int width, int height, float density, Color inner, Color outer); // Generate image: radial gradient
|
[textures] ADDED: SaveImageAs(), Save image as PNG file
|
||||||
[textures] ADDED: GenImageChecked(int width, int height, int checksX, int checksY, Color col1, Color col2); // Generate image: checked
|
[textures] ADDED: GenImageGradientV(), Generate image: vertical gradient
|
||||||
[textures] ADDED: GenImageWhiteNoise(int width, int height, float factor); // Generate image: white noise
|
[textures] ADDED: GenImageGradientH(), Generate image: horizontal gradient
|
||||||
[textures] ADDED: GenImagePerlinNoise(int width, int height, float scale); // Generate image: perlin noise
|
[textures] ADDED: GenImageGradientRadial(), Generate image: radial gradient
|
||||||
[textures] ADDED: GenImageCellular(int width, int height, int tileSize); // Generate image: cellular algorithm. Bigger tileSize means bigger cells
|
[textures] ADDED: GenImageChecked(), Generate image: checked
|
||||||
// Texture maps generation (PBR)
|
[textures] ADDED: GenImageWhiteNoise(), Generate image: white noise
|
||||||
[textures] ADDED: GenTextureCubemap(Shader shader, Texture2D skyHDR, int size); // Generate cubemap texture from HDR texture
|
[textures] ADDED: GenImagePerlinNoise(), Generate image: perlin noise
|
||||||
[textures] ADDED: GenTextureIrradiance(Shader shader, Texture2D cubemap, int size); // Generate irradiance texture using cubemap data
|
[textures] ADDED: GenImageCellular(), Generate image: cellular algorithm. Bigger tileSize means bigger cells
|
||||||
[textures] ADDED: GenTexturePrefilter(Shader shader, Texture2D cubemap, int size); // Generate prefilter texture using cubemap data
|
[textures] ADDED: GenTextureCubemap(), Generate cubemap texture from HDR texture
|
||||||
[textures] ADDED: GenTextureBRDF(Shader shader, Texture2D cubemap, int size); // Generate BRDF texture using cubemap data
|
[textures] ADDED: GenTextureIrradiance(), Generate irradiance texture using cubemap data
|
||||||
[models] REMOVED: LoadMeshEx()
|
[textures] ADDED: GenTexturePrefilter(), Generate prefilter texture using cubemap data
|
||||||
[models] REMOVED: UpdateMesh()
|
[textures] ADDED: GenTextureBRDF(), Generate BRDF texture using cubemap data
|
||||||
[models] REMOVED: LoadHeightmap()
|
[models] REMOVED: LoadMeshEx(), Mesh struct variables can be directly accessed
|
||||||
[models] REMOVED: LoadCubicmap()
|
[models] REMOVED: UpdateMesh(), very ineficient
|
||||||
|
[models] REMOVED: LoadHeightmap(), use GenMeshHeightmap() and LoadModelFromMesh()
|
||||||
|
[models] REMOVED: LoadCubicmap(), use GenMeshCubicmap() and LoadModelFromMesh()
|
||||||
[models] RENAMED: LoadDefaultMaterial() to LoadMaterialDefault()
|
[models] RENAMED: LoadDefaultMaterial() to LoadMaterialDefault()
|
||||||
// Mesh generation functions
|
[models] ADDED: GenMeshPlane(), Generate plane mesh (with subdivisions)
|
||||||
[models] ADDED: GenMeshPlane()
|
[models] ADDED: GenMeshCube(), Generate cuboid mesh
|
||||||
[models] ADDED: GenMeshCube()
|
[models] ADDED: GenMeshSphere(), Generate sphere mesh (standard sphere)
|
||||||
[models] ADDED: GenMeshSphere()
|
[models] ADDED: GenMeshHemiSphere(), Generate half-sphere mesh (no bottom cap)
|
||||||
[models] ADDED: GenMeshHemiSphere(float radius, int rings, int slices); // Generate half-sphere mesh (no bottom cap)
|
[models] ADDED: GenMeshCylinder(), Generate cylinder mesh
|
||||||
[models] ADDED: GenMeshCylinder(float radius, float height, int slices); // Generate cylinder mesh
|
[models] ADDED: GenMeshTorus(), Generate torus mesh
|
||||||
[models] ADDED: GenMeshTorus(float radius, float size, int radSeg, int sides); // Generate torus mesh
|
[models] ADDED: GenMeshKnot(), Generate trefoil knot mesh
|
||||||
[models] ADDED: GenMeshKnot(float radius, float size, int radSeg, int sides); // Generate trefoil knot mesh
|
[models] ADDED: GenMeshHeightmap(), Generate heightmap mesh from image data
|
||||||
[models] ADDED: GenMeshHeightmap(Image heightmap, Vector3 size); // Generate heightmap mesh from image data
|
[models] ADDED: GenMeshCubicmap(), Generate cubes-based map mesh from image data
|
||||||
[models] ADDED: GenMeshCubicmap(Image cubicmap, Vector3 cubeSize); // Generate cubes-based map mesh from image data
|
[raymath] REVIEWED: full Matrix functionality to align with GLM in usage
|
||||||
|
[raymath] RENAMED: Vector3 functions for consistency: Vector*() renamed to Vector3*()
|
||||||
[raymath] Reviewed full Matrix functionality
|
|
||||||
[raymath] Renamed Vector3 functions for consistency
|
|
||||||
[build] Integrate Android APK building into examples Makefile
|
[build] Integrate Android APK building into examples Makefile
|
||||||
[example] ADDED:
|
[build] Integrate Android APK building into templates Makefiles
|
||||||
[example] ADDED:
|
[build] Improved Visual Studio 2015 project, folders, references...
|
||||||
[example] ADDED:
|
[templates] Reviewed the full pack to support Android building
|
||||||
|
[examples] Reviewed full collection to adapt to raylib changes
|
||||||
|
[examples] [textures] ADDED: textures_image_generation
|
||||||
|
[examples] [models] ADDED: models_mesh_generation
|
||||||
|
[examples] [models] ADDED: models_material_pbr
|
||||||
|
[examples] [models] ADDED: models_skybox
|
||||||
|
[examples] [models] ADDED: models_yaw_pitch_roll
|
||||||
|
[examples] [others] REVIEWED: rlgl_standalone
|
||||||
|
[examples] [others] REVIEWED: audio_standalone
|
||||||
[github] Moved raylib webpage to own repo: github.com/raysan5/raylib.com
|
[github] Moved raylib webpage to own repo: github.com/raysan5/raylib.com
|
||||||
[games] Reviewed game: Koala Seasons
|
[games] Reviewed game: Koala Seasons
|
||||||
[*] Updated STB libraries to latest version
|
[*] Updated STB libraries to latest version
|
||||||
|
[*] Multiple bugs corrected (check github issues)
|
||||||
|
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
Release: raylib 1.7.0 (20 May 2017)
|
Release: raylib 1.7.0 (20 May 2017)
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ contributing (in some way or another) to make raylib project better. Huge thanks
|
||||||
- Daniel Moreno for testing and using raylib on a real product ([Koala Seasons](http://www.koalaseasons.com))
|
- Daniel Moreno for testing and using raylib on a real product ([Koala Seasons](http://www.koalaseasons.com))
|
||||||
- Daniel Gomez for testing and using raylib on a real product ([Koala Seasons](http://www.koalaseasons.com))
|
- Daniel Gomez for testing and using raylib on a real product ([Koala Seasons](http://www.koalaseasons.com))
|
||||||
- [Sergio Martinez](https://github.com/anidealgift) for helping on raygui development and tools development (raygui_styler).
|
- [Sergio Martinez](https://github.com/anidealgift) for helping on raygui development and tools development (raygui_styler).
|
||||||
- [Victor Fisac](https://github.com/victorfisac) for developing physics raylib module (physac) and implementing materials and lighting systems... among multiple other improvements and multiple tools and games.
|
- [Victor Fisac](https://github.com/victorfisac) for developing physics raylib module (physac) and implementing PBR materials and lighting systems... among multiple other improvements and multiple tools and games.
|
||||||
- Albert Martos for helping on raygui and porting examples and game-templates to Android and HTML5.
|
- Albert Martos for helping on raygui and porting examples and game-templates to Android and HTML5.
|
||||||
- Ian Eito for helping on raygui and porting examples and game-templates to Android and HTML5.
|
- Ian Eito for helping on raygui and porting examples and game-templates to Android and HTML5.
|
||||||
- [procedural](https://github.com/procedural) for testing raylib on Linux, correcting some bugs and adding several mouse functions.
|
- [procedural](https://github.com/procedural) for testing raylib on Linux, correcting some bugs and adding several mouse functions.
|
||||||
|
|
@ -28,7 +28,8 @@ contributing (in some way or another) to make raylib project better. Huge thanks
|
||||||
- [Joel Davis](https://github.com/joeld42) for adding raycast picking utilities and a [great example](https://github.com/raysan5/raylib/blob/master/examples/models/models_mesh_picking.c)
|
- [Joel Davis](https://github.com/joeld42) for adding raycast picking utilities and a [great example](https://github.com/raysan5/raylib/blob/master/examples/models/models_mesh_picking.c)
|
||||||
- [Richard Goodwin](https://github.com/AudioMorphology) for adding RPI touchscreen support
|
- [Richard Goodwin](https://github.com/AudioMorphology) for adding RPI touchscreen support
|
||||||
- [Milan Nikolic](https://github.com/gen2brain) for adding Android build support with custom standalone toolchain
|
- [Milan Nikolic](https://github.com/gen2brain) for adding Android build support with custom standalone toolchain
|
||||||
|
- [Michael Vetter](https://github.com/jubalh) for improvements on build system and adding meson support for Linux
|
||||||
** TODO **
|
- [Wilhem Barbier](https://github.com/nounoursheureux) for adding Image generation functions and some fixes
|
||||||
|
- [Benjamin Summerton](https://github.com/define-private-public) for improving OSX building and his amazing work on CMake build sytem
|
||||||
|
|
||||||
Please, if I forget someone in this list, excuse me and write me an email to remind me to add you!
|
Please, if I forget someone in this list, excuse me and write me an email to remind me to add you!
|
||||||
|
|
|
||||||
20
HISTORY.md
20
HISTORY.md
|
|
@ -182,3 +182,23 @@ Some other features: Gamepad support on HTML5, RPI touch screen support, 32bit a
|
||||||
|
|
||||||
And here it is another version of **raylib, a simple and easy-to-use library to learn videogames programming**. Enjoy it.
|
And here it is another version of **raylib, a simple and easy-to-use library to learn videogames programming**. Enjoy it.
|
||||||
|
|
||||||
|
notes on raylib 1.8
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
October 2017, around 5 months after latest raylib version, another release is published: raylib 1.8. Again, several modules of the library have been reviewed and some new functionality added. Main changes of this new release are:
|
||||||
|
|
||||||
|
[Procedural image generation](https://github.com/raysan5/raylib/blob/develop/examples/textures/textures_image_generation.c) function, a set of new functions have been added to generate gradients, checked, noise and cellular images from scratch. Image generation could be useful for certain textures or learning pourpouses.
|
||||||
|
|
||||||
|
[Parametric mesh generation](https://github.com/raysan5/raylib/blob/develop/examples/models/models_mesh_generation.c) functions, create 3d meshes from scratch just defining a set of parameters, meshes like cube, sphere, cylinder, torus, knot and more can be very useful for prototyping or for lighting and texture testing.
|
||||||
|
|
||||||
|
PBR Materials support, a completely redesigned shaders and material system allows advance materials definition and usage, with fully customizable shaders. Some new functions have been added to generate the environment textures required for PBR shading and a a new complete [PBR material example](https://github.com/raysan5/raylib/blob/develop/examples/models/models_material_pbr.c) is also provided for reference.
|
||||||
|
|
||||||
|
Custom Android APK build pipeline with [simple Makefile](https://github.com/raysan5/raylib/blob/develop/templates/simple_game/Makefile). Actually, full code building mechanism based on plain Makefile has been completely reviewed and Android building has been added for sources and also for examples and templates building into final APK package. This way, raylib Android building has been greatly simplified and integrated seamlessly into standard build scripts.
|
||||||
|
|
||||||
|
[rlgl](https://github.com/raysan5/raylib/blob/develop/src/rlgl.c) module has been completely reviewed and most of the functions renamed for consistency. This way, standalone usage of rlgl is promoted, with a [complete example provided](https://github.com/raysan5/raylib/blob/develop/examples/others/rlgl_standalone.c). rlgl offers a pseudo-OpenGL 1.1 immediate-mode programming-style layer, with backends to multiple OpenGL versions.
|
||||||
|
|
||||||
|
[raymath](https://github.com/raysan5/raylib/blob/develop/src/rlgl.c) library has been also reviewed to align with other advance math libraries like [GLM](https://github.com/g-truc/glm). Matrix math has been improved and simplified, some new Quaternion functions have been added and Vector3 functions have been renamed all around the library for consistency with new Vector2 functionality.
|
||||||
|
|
||||||
|
Additionally, as always, examples and templates have been reviewed to work with new version (some new examples have been added), all external libraries have been updated to latest stable version and latest Notepad++ and MinGW have been configured to work with new raylib. For a full list of changes, just check [CHANGELOG](CHANGELOG).
|
||||||
|
|
||||||
|
New installer provided, web updated, examples re-builded, documentation reviewed... **new raylib 1.8 published**. Enjoy coding games.
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@ NOTE for ADVENTURERS: raylib is a programming library to learn videogames progra
|
||||||
no fancy interface, no visual helpers, no auto-debugging... just coding in the most
|
no fancy interface, no visual helpers, no auto-debugging... just coding in the most
|
||||||
pure spartan-programmers way. Are you ready to learn? Jump to [code examples!](http://www.raylib.com/examples.html)
|
pure spartan-programmers way. Are you ready to learn? Jump to [code examples!](http://www.raylib.com/examples.html)
|
||||||
|
|
||||||
|
[](https://travis-ci.org/raysan5/raylib)
|
||||||
|
|
||||||
features
|
features
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,13 @@ Note that [raylib source code](https://github.com/raysan5/raylib/tree/develop/sr
|
||||||
- [ ] Basic GPU stats sytem (memory, draws, time...)
|
- [ ] Basic GPU stats sytem (memory, draws, time...)
|
||||||
- [ ] Improved custom file-format (.rres) and packaging tool
|
- [ ] Improved custom file-format (.rres) and packaging tool
|
||||||
- [ ] Touch-based camera controls for Android
|
- [ ] Touch-based camera controls for Android
|
||||||
|
- [ ] Quaternions-based camera system
|
||||||
|
|
||||||
**raylib 1.8**
|
**raylib 1.8**
|
||||||
- [x] Improved Materials system with PBR support
|
- [x] Improved Materials system with PBR support
|
||||||
- [x] Procedural image generation functions (spot, gradient, noise...)
|
- [x] Procedural image generation functions (spot, gradient, noise...)
|
||||||
- [x] Procedural mesh generation functions (cube, sphere...)
|
- [x] Procedural mesh generation functions (cube, sphere...)
|
||||||
|
- [x] Custom Android APK build pipeline (default Makefile)
|
||||||
|
|
||||||
**raylib 1.7**
|
**raylib 1.7**
|
||||||
- [x] Support configuration flags
|
- [x] Support configuration flags
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
#**************************************************************************************************
|
#**************************************************************************************************
|
||||||
#
|
#
|
||||||
# raylib makefile for desktop platforms, Raspberry Pi and HTML5 (emscripten)
|
# raylib makefile for Desktop platforms, Raspberry Pi, Android and HTML5
|
||||||
#
|
|
||||||
# NOTE: By default examples are compiled using raylib static library and OpenAL Soft shared library
|
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2017 Ramon Santamaria (@raysan5)
|
# Copyright (c) 2013-2017 Ramon Santamaria (@raysan5)
|
||||||
#
|
#
|
||||||
|
|
@ -25,19 +23,34 @@
|
||||||
|
|
||||||
.PHONY: all clean
|
.PHONY: all clean
|
||||||
|
|
||||||
# define raylib platform to compile for
|
# Define required raylib variables
|
||||||
# possible platforms: PLATFORM_DESKTOP PLATFORM_RPI PLATFORM_WEB
|
|
||||||
# WARNING: To compile to HTML5, code must be redesigned to use emscripten.h and emscripten_set_main_loop()
|
# WARNING: To compile to HTML5, code must be redesigned to use emscripten.h and emscripten_set_main_loop()
|
||||||
PLATFORM ?= PLATFORM_DESKTOP
|
PLATFORM ?= PLATFORM_DESKTOP
|
||||||
|
RAYLIB_PATH ?= ..
|
||||||
|
PROJECT_NAME ?= raylib_example
|
||||||
|
|
||||||
# determine PLATFORM_OS in case PLATFORM_DESKTOP selected
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
|
RAYLIB_PATH ?= /home/pi/raylib
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Library type used for raylib and OpenAL Soft: STATIC (.a) or SHARED (.so/.dll)
|
||||||
|
# NOTE: Libraries should be provided in the selected form
|
||||||
|
RAYLIB_LIBTYPE ?= STATIC
|
||||||
|
OPENAL_LIBTYPE ?= STATIC
|
||||||
|
|
||||||
|
# On PLATFORM_WEB force OpenAL Soft shared library
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
|
OPENAL_LIBTYPE = SHARED
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Determine PLATFORM_OS in case PLATFORM_DESKTOP selected
|
||||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
# No uname.exe on MinGW!, but OS=Windows_NT on Windows! ifeq ($(UNAME),Msys) -> Windows
|
# No uname.exe on MinGW!, but OS=Windows_NT on Windows! ifeq ($(UNAME),Msys) -> Windows
|
||||||
ifeq ($(OS),Windows_NT)
|
ifeq ($(OS),Windows_NT)
|
||||||
PLATFORM_OS=WINDOWS
|
PLATFORM_OS=WINDOWS
|
||||||
LIBPATH=win32
|
LIBPATH=win32
|
||||||
else
|
else
|
||||||
UNAMEOS:=$(shell uname)
|
UNAMEOS=$(shell uname)
|
||||||
ifeq ($(UNAMEOS),Linux)
|
ifeq ($(UNAMEOS),Linux)
|
||||||
PLATFORM_OS=LINUX
|
PLATFORM_OS=LINUX
|
||||||
LIBPATH=linux
|
LIBPATH=linux
|
||||||
|
|
@ -50,46 +63,72 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# define default raylib path for include and library search
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
|
# RPI cross-compiler
|
||||||
|
RPI_CROSS_COMPILE ?= NO
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
|
# Emscripten required variables
|
||||||
|
EMSDK_PATH = C:/emsdk
|
||||||
|
EMSCRIPTEN_VERSION = 1.37.9
|
||||||
|
CLANG_VERSION=e1.37.9_64bit
|
||||||
|
PYTHON_VERSION=2.7.5.3_64bit
|
||||||
|
NODE_VERSION=4.1.1_64bit
|
||||||
|
export PATH=$(EMSDK_PATH);$(EMSDK_PATH)\clang\$(CLANG_VERSION);$(EMSDK_PATH)\node\$(NODE_VERSION)\bin;$(EMSDK_PATH)\python\$(PYTHON_VERSION);$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION);C:\raylib\MinGW\bin:$$(PATH)
|
||||||
|
EMSCRIPTEN=$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Define raylib release directory for compiled library
|
||||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
ifeq ($(PLATFORM_OS),WINDOWS)
|
ifeq ($(PLATFORM_OS),WINDOWS)
|
||||||
RAYLIB_PATH ?= C:\raylib\raylib
|
RAYLIB_RELEASE = $(RAYLIB_PATH)/release/libs/win32/mingw32
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM_OS),LINUX)
|
ifeq ($(PLATFORM_OS),LINUX)
|
||||||
RAYLIB_PATH ?= ..
|
RAYLIB_RELEASE = $(RAYLIB_PATH)/release/libs/linux
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM_OS),OSX)
|
ifeq ($(PLATFORM_OS),OSX)
|
||||||
RAYLIB_PATH ?= ..
|
RAYLIB_RELEASE = $(RAYLIB_PATH)/release/libs/osx
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
|
RAYLIB_RELEASE = $(RAYLIB_PATH)/release/libs/html5
|
||||||
|
endif
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
|
RAYLIB_RELEASE = $(RAYLIB_PATH)/release/libs/rpi
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Define default C compiler: gcc
|
||||||
|
CC = gcc
|
||||||
|
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
|
ifeq ($(PLATFORM_OS),OSX)
|
||||||
|
# OSX default compiler
|
||||||
|
CC = clang
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
|
ifeq ($(RPI_CROSS_COMPILE),YES)
|
||||||
|
# RPI cross-compiler
|
||||||
|
CC = armv6j-hardfloat-linux-gnueabi-gcc
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
|
# HTML5 emscripten compiler
|
||||||
|
CC = emcc
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Define default make program: Mingw32-make
|
||||||
|
MAKE = mingw32-make
|
||||||
|
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
|
ifeq ($(PLATFORM_OS),LINUX)
|
||||||
|
MAKE = make
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
# Define compiler flags:
|
||||||
RAYLIB_PATH ?= /home/pi/raylib
|
# -O1 defines optimization level
|
||||||
endif
|
|
||||||
|
|
||||||
# define NO to use OpenAL Soft as static library (shared by default)
|
|
||||||
SHARED_OPENAL ?= NO
|
|
||||||
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
|
||||||
SHARED_OPENAL = NO
|
|
||||||
endif
|
|
||||||
|
|
||||||
# define compiler: gcc for C program, define as g++ for C++
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
|
||||||
# define emscripten compiler
|
|
||||||
CC = emcc
|
|
||||||
else
|
|
||||||
ifeq ($(PLATFORM_OS),OSX)
|
|
||||||
# define llvm compiler for mac
|
|
||||||
CC = clang
|
|
||||||
else
|
|
||||||
# define default gcc compiler
|
|
||||||
CC = gcc
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
# define compiler flags:
|
|
||||||
# -O2 defines optimization level
|
|
||||||
# -Og enable debugging
|
# -Og enable debugging
|
||||||
# -s strip unnecessary data from build
|
# -s strip unnecessary data from build
|
||||||
# -Wall turns on most, but not all, compiler warnings
|
# -Wall turns on most, but not all, compiler warnings
|
||||||
|
|
@ -98,144 +137,100 @@ endif
|
||||||
# -fgnu89-inline declaring inline functions support (GCC optimized)
|
# -fgnu89-inline declaring inline functions support (GCC optimized)
|
||||||
# -Wno-missing-braces ignore invalid warning (GCC bug 53119)
|
# -Wno-missing-braces ignore invalid warning (GCC bug 53119)
|
||||||
# -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec
|
# -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec
|
||||||
|
CFLAGS += -O1 -s -Wall -std=c99 -D_DEFAULT_SOURCE -fgnu89-inline -Wno-missing-braces
|
||||||
|
|
||||||
|
# Additional flags for compiler (if desired)
|
||||||
|
#CFLAGS += -Wextra -Wmissing-prototypes -Wstrict-prototypes
|
||||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
ifeq ($(PLATFORM_OS),WINDOWS)
|
ifeq ($(PLATFORM_OS),WINDOWS)
|
||||||
CFLAGS = -O2 -s -Wall -std=c99
|
# resources file contains windows exe icon
|
||||||
|
# -Wl,--subsystem,windows hides the console window
|
||||||
|
CFLAGS += $(RAYLIB_PATH)/src/resources -Wl,--subsystem,windows
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM_OS),LINUX)
|
ifeq ($(PLATFORM_OS),LINUX)
|
||||||
CFLAGS = -O2 -s -Wall -std=c99 -no-pie -D_DEFAULT_SOURCE
|
CFLAGS += -no-pie -D_DEFAULT_SOURCE
|
||||||
endif
|
|
||||||
ifeq ($(PLATFORM_OS),OSX)
|
|
||||||
CFLAGS = -O2 -s -Wall -std=c99
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
|
CFLAGS += -std=gnu99
|
||||||
|
endif
|
||||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
CFLAGS = -O1 -Wall -std=c99 -D_DEFAULT_SOURCE -s USE_GLFW=3 -s ASSERTIONS=1 --profiling
|
# -O2 # if used, also set --memory-init-file 0
|
||||||
# -O2 # if used, also set --memory-init-file 0
|
# --memory-init-file 0 # to avoid an external memory initialization code file (.mem)
|
||||||
# --memory-init-file 0 # to avoid an external memory initialization code file (.mem)
|
# -s ALLOW_MEMORY_GROWTH=1 # to allow memory resizing
|
||||||
# -s ALLOW_MEMORY_GROWTH=1 # to allow memory resizing
|
# -s TOTAL_MEMORY=16777216 # to specify heap memory size (default = 16MB)
|
||||||
# -s TOTAL_MEMORY=16777216 # to specify heap memory size (default = 16MB)
|
# -s USE_PTHREADS=1 # multithreading support
|
||||||
# --preload-file file.res # embbed file.res resource into .data file
|
CFLAGS += -s USE_GLFW=3 -s ASSERTIONS=1 --profiling TOTAL_MEMORY=16777216 --preload-file resources
|
||||||
endif
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
|
||||||
CFLAGS = -O2 -s -Wall -std=gnu99 -fgnu89-inline
|
|
||||||
endif
|
|
||||||
#CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes
|
|
||||||
|
|
||||||
# define raylib release directory for compiled library
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
|
||||||
ifeq ($(PLATFORM_OS),WINDOWS)
|
|
||||||
RAYLIB_RELEASE = $(RAYLIB_PATH)/release/win32/mingw32
|
|
||||||
endif
|
|
||||||
ifeq ($(PLATFORM_OS),LINUX)
|
|
||||||
RAYLIB_RELEASE = $(RAYLIB_PATH)/release/linux
|
|
||||||
endif
|
|
||||||
ifeq ($(PLATFORM_OS),OSX)
|
|
||||||
RAYLIB_RELEASE = $(RAYLIB_PATH)/release/osx
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
|
||||||
RAYLIB_RELEASE = $(RAYLIB_PATH)/release/html5
|
|
||||||
endif
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
|
||||||
RAYLIB_RELEASE = $(RAYLIB_PATH)/release/rpi
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# define any directories containing required header files
|
# Define include paths for required headers
|
||||||
INCLUDES = -I. -I$(RAYLIB_RELEASE) -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external
|
# NOTE: Several external required libraries (stb and others)
|
||||||
|
INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/release/include -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external
|
||||||
|
|
||||||
|
# Define additional directories containing required header files
|
||||||
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
|
# RPI requried libraries
|
||||||
|
INCLUDE_PATHS += -I/opt/vc/include
|
||||||
|
INCLUDE_PATHS += -I/opt/vc/include/interface/vmcs_host/linux
|
||||||
|
INCLUDE_PATHS += -I/opt/vc/include/interface/vcos/pthreads
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Define library paths containing required libs
|
||||||
|
LDFLAGS = -L. -L$(RAYLIB_RELEASE) -L$(RAYLIB_PATH)/src
|
||||||
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
INCLUDES += -I../src -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads
|
LDFLAGS += -L/opt/vc/lib
|
||||||
endif
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
|
||||||
ifeq ($(PLATFORM_OS),WINDOWS)
|
|
||||||
# external libraries headers
|
|
||||||
# GLFW3
|
|
||||||
INCLUDES += -I$(RAYLIB_PATH)/src/external/glfw3/include
|
|
||||||
# OpenAL Soft
|
|
||||||
INCLUDES += -I$(RAYLIB_PATH)/src/external/openal_soft/include
|
|
||||||
endif
|
|
||||||
ifeq ($(PLATFORM_OS),LINUX)
|
|
||||||
# you may optionally create this directory and install raylib
|
|
||||||
# and related headers there. Edit ../src/Makefile appropriately.
|
|
||||||
INCLUDES += -I/usr/local/include/raylib
|
|
||||||
endif
|
|
||||||
ifeq ($(PLATFORM_OS),OSX)
|
|
||||||
# additional directories for MacOS
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# define library paths containing required libs
|
# Define any libraries required on linking
|
||||||
LFLAGS = -L. -L$(RAYLIB_RELEASE) -L$(RAYLIB_PATH)/src
|
|
||||||
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
|
||||||
LFLAGS += -L/opt/vc/lib
|
|
||||||
endif
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
|
||||||
# add standard directories for GNU/Linux
|
|
||||||
ifeq ($(PLATFORM_OS),WINDOWS)
|
|
||||||
# external libraries to link with
|
|
||||||
# GLFW3
|
|
||||||
LFLAGS += -L$(RAYLIB_PATH)/src/external/glfw3/lib/$(LIBPATH)
|
|
||||||
# OpenAL Soft
|
|
||||||
LFLAGS += -L$(RAYLIB_PATH)/src/external/openal_soft/lib/$(LIBPATH)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
# define any libraries to link into executable
|
|
||||||
# if you want to link libraries (libname.so or libname.a), use the -lname
|
# if you want to link libraries (libname.so or libname.a), use the -lname
|
||||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
ifeq ($(PLATFORM_OS),LINUX)
|
ifeq ($(PLATFORM_OS),WINDOWS)
|
||||||
# libraries for Debian GNU/Linux desktop compiling
|
# Libraries for Windows desktop compiling
|
||||||
# requires the following packages:
|
|
||||||
# libglfw3-dev libopenal-dev libegl1-mesa-dev
|
|
||||||
LIBS = -lraylib -lglfw -lGL -lopenal -lm -lpthread -ldl
|
|
||||||
# on XWindow requires also below libraries
|
|
||||||
LIBS += -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor
|
|
||||||
else
|
|
||||||
ifeq ($(PLATFORM_OS),OSX)
|
|
||||||
# libraries for OS X 10.9 desktop compiling
|
|
||||||
# requires the following packages:
|
|
||||||
# libglfw3-dev libopenal-dev libegl1-mesa-dev
|
|
||||||
LIBS = -lraylib -lglfw -framework OpenGL -framework OpenAL -framework Cocoa
|
|
||||||
else
|
|
||||||
# libraries for Windows desktop compiling
|
|
||||||
# NOTE: GLFW3 and OpenAL Soft libraries should be installed
|
# NOTE: GLFW3 and OpenAL Soft libraries should be installed
|
||||||
LIBS = -lraylib -lglfw3 -lopengl32 -lgdi32
|
LDLIBS = -lraylib -lglfw3 -lopengl32 -lgdi32
|
||||||
# if static OpenAL Soft required, define the corresponding libs
|
|
||||||
ifeq ($(SHARED_OPENAL),NO)
|
# Define required flags and libs for OpenAL Soft STATIC/SHARED usage
|
||||||
LIBS += -lopenal32 -lwinmm
|
# NOTE: ALLIBS flag only required for raylib Win32 SHARED library building
|
||||||
CFLAGS += -Wl,-allow-multiple-definition
|
ifeq ($(OPENAL_LIBTYPE),STATIC)
|
||||||
|
LDLIBS += -lopenal32 -lwinmm
|
||||||
|
CFLAGS += -DAL_LIBTYPE_STATIC -Wl,-allow-multiple-definition
|
||||||
else
|
else
|
||||||
LIBS += -lopenal32dll
|
LDLIBS += -lopenal32dll
|
||||||
endif
|
endif
|
||||||
PHYSAC_LIBS = -static -lpthread
|
PHYSAC_LIBS = -static -lpthread
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(PLATFORM_OS),LINUX)
|
||||||
|
# Libraries for Debian GNU/Linux desktop compiling
|
||||||
|
# NOTE: Required packages: libglfw3-dev libopenal-dev libegl1-mesa-dev
|
||||||
|
LDLIBS = -lraylib -lglfw3 -lGL -lopenal -lm -lpthread -ldl
|
||||||
|
|
||||||
|
# On XWindow requires also below libraries
|
||||||
|
LDLIBS += -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor
|
||||||
|
endif
|
||||||
|
ifeq ($(PLATFORM_OS),OSX)
|
||||||
|
# Libraries for OSX 10.9 desktop compiling
|
||||||
|
# NOTE: Required packages: libglfw3-dev libopenal-dev libegl1-mesa-dev
|
||||||
|
LDLIBS = -lraylib -lglfw -framework OpenGL -framework OpenAL -framework Cocoa
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
# libraries for Raspberry Pi compiling
|
# Libraries for Raspberry Pi compiling
|
||||||
# NOTE: OpenAL Soft library should be installed (libopenal1 package)
|
# NOTE: Required packages: libopenal1
|
||||||
LIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lbcm_host -lopenal
|
LDLIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lbcm_host -lopenal
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
# NOTE: Set the correct path to libraylib.bc
|
# Libraries for web (HTML5) compiling
|
||||||
LIBS = $(RAYLIB_RELEASE)/libraylib.bc
|
LDLIBS = $(RAYLIB_RELEASE)/libraylib.bc
|
||||||
endif
|
|
||||||
|
|
||||||
# define additional parameters and flags for windows
|
|
||||||
ifeq ($(PLATFORM_OS),WINDOWS)
|
|
||||||
# resources file contains windows exe icon
|
|
||||||
# -Wl,--subsystem,windows hides the console window
|
|
||||||
WINFLAGS = $(RAYLIB_PATH)/src/resources -Wl,--subsystem,windows
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Define output extension to generate a .html file using provided shell
|
||||||
ifeq ($(PLATFORM),PLATFORM_WEB)
|
ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
EXT = .html
|
EXT = .html
|
||||||
WEB_SHELL = --shell-file $(RAYLIB_PATH)\templates\web_shell\shell.html
|
WEB_SHELL = --shell-file $(RAYLIB_PATH)\templates\web_shell\shell.html
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# define all object files required
|
# Define all object files required
|
||||||
EXAMPLES = \
|
EXAMPLES = \
|
||||||
core/core_basic_window \
|
core/core_basic_window \
|
||||||
core/core_input_keys \
|
core/core_input_keys \
|
||||||
|
|
@ -268,6 +263,7 @@ EXAMPLES = \
|
||||||
textures/textures_particles_blending \
|
textures/textures_particles_blending \
|
||||||
textures/textures_image_processing \
|
textures/textures_image_processing \
|
||||||
textures/textures_image_drawing \
|
textures/textures_image_drawing \
|
||||||
|
textures/textures_image_generation \
|
||||||
text/text_sprite_fonts \
|
text/text_sprite_fonts \
|
||||||
text/text_bmfont_ttf \
|
text/text_bmfont_ttf \
|
||||||
text/text_raylib_fonts \
|
text/text_raylib_fonts \
|
||||||
|
|
@ -283,6 +279,10 @@ EXAMPLES = \
|
||||||
models/models_heightmap \
|
models/models_heightmap \
|
||||||
models/models_cubicmap \
|
models/models_cubicmap \
|
||||||
models/models_mesh_picking \
|
models/models_mesh_picking \
|
||||||
|
models/models_mesh_generation \
|
||||||
|
models/models_yaw_pitch_roll \
|
||||||
|
models/models_material_pbr \
|
||||||
|
models/models_skybox \
|
||||||
shaders/shaders_model_shader \
|
shaders/shaders_model_shader \
|
||||||
shaders/shaders_shapes_textures \
|
shaders/shaders_shapes_textures \
|
||||||
shaders/shaders_custom_uniform \
|
shaders/shaders_custom_uniform \
|
||||||
|
|
@ -298,49 +298,50 @@ EXAMPLES = \
|
||||||
physac/physics_shatter \
|
physac/physics_shatter \
|
||||||
fix_dylib \
|
fix_dylib \
|
||||||
|
|
||||||
|
CURRENT_MAKEFILE = $(lastword $(MAKEFILE_LIST))
|
||||||
|
|
||||||
# typing 'make' will invoke the default target entry
|
# Default target entry
|
||||||
all: examples
|
all: examples
|
||||||
|
|
||||||
# generic compilation pattern
|
# Generic compilation pattern
|
||||||
%: %.c
|
%: %.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile all examples
|
# Compile all examples
|
||||||
examples: $(EXAMPLES)
|
examples: $(EXAMPLES)
|
||||||
|
|
||||||
# compile [core] example - basic window
|
# compile [core] example - basic window
|
||||||
core/core_basic_window: core/core_basic_window.c
|
core/core_basic_window: core/core_basic_window.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [core] example - keyboard input
|
# compile [core] example - keyboard input
|
||||||
core/core_input_keys: core/core_input_keys.c
|
core/core_input_keys: core/core_input_keys.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [core] example - mouse input
|
# compile [core] example - mouse input
|
||||||
core/core_input_mouse: core/core_input_mouse.c
|
core/core_input_mouse: core/core_input_mouse.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [core] example - mouse wheel
|
# compile [core] example - mouse wheel
|
||||||
core/core_mouse_wheel: core/core_mouse_wheel.c
|
core/core_mouse_wheel: core/core_mouse_wheel.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [core] example - gamepad input
|
# compile [core] example - gamepad input
|
||||||
core/core_input_gamepad: core/core_input_gamepad.c
|
core/core_input_gamepad: core/core_input_gamepad.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [core] example - generate random values
|
# compile [core] example - generate random values
|
||||||
core/core_random_values: core/core_random_values.c
|
core/core_random_values: core/core_random_values.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [core] example - color selection (collision detection)
|
# compile [core] example - color selection (collision detection)
|
||||||
core/core_color_select: core/core_color_select.c
|
core/core_color_select: core/core_color_select.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [core] example - drop files
|
# compile [core] example - drop files
|
||||||
core/core_drop_files: core/core_drop_files.c
|
core/core_drop_files: core/core_drop_files.c
|
||||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
else
|
else
|
||||||
@echo core_drop_files: Example not supported on PLATFORM_ANDROID or PLATFORM_WEB or PLATFORM_RPI
|
@echo core_drop_files: Example not supported on PLATFORM_ANDROID or PLATFORM_WEB or PLATFORM_RPI
|
||||||
endif
|
endif
|
||||||
|
|
@ -348,218 +349,218 @@ endif
|
||||||
# compile [core] example - storage values
|
# compile [core] example - storage values
|
||||||
core/core_storage_values: core/core_storage_values.c
|
core/core_storage_values: core/core_storage_values.c
|
||||||
ifeq ($(PLATFORM), $(filter $(PLATFORM),PLATFORM_DESKTOP PLATFORM_RPI))
|
ifeq ($(PLATFORM), $(filter $(PLATFORM),PLATFORM_DESKTOP PLATFORM_RPI))
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
else
|
else
|
||||||
@echo core_storage_values: Example not supported on PLATFORM_ANDROID or PLATFORM_WEB
|
@echo core_storage_values: Example not supported on PLATFORM_ANDROID or PLATFORM_WEB
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# compile [core] example - gestures detection
|
# compile [core] example - gestures detection
|
||||||
core/core_gestures_detection: core/core_gestures_detection.c
|
core/core_gestures_detection: core/core_gestures_detection.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [core] example - 3d mode
|
# compile [core] example - 3d mode
|
||||||
core/core_3d_mode: core/core_3d_mode.c
|
core/core_3d_mode: core/core_3d_mode.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [core] example - 3d picking
|
# compile [core] example - 3d picking
|
||||||
core/core_3d_picking: core/core_3d_picking.c
|
core/core_3d_picking: core/core_3d_picking.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [core] example - 3d camera free
|
# compile [core] example - 3d camera free
|
||||||
core/core_3d_camera_free: core/core_3d_camera_free.c
|
core/core_3d_camera_free: core/core_3d_camera_free.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [core] example - 3d camera first person
|
# compile [core] example - 3d camera first person
|
||||||
core/core_3d_camera_first_person: core/core_3d_camera_first_person.c
|
core/core_3d_camera_first_person: core/core_3d_camera_first_person.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [core] example - 2d camera
|
# compile [core] example - 2d camera
|
||||||
core/core_2d_camera: core/core_2d_camera.c
|
core/core_2d_camera: core/core_2d_camera.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [core] example - world screen
|
# compile [core] example - world screen
|
||||||
core/core_world_screen: core/core_world_screen.c
|
core/core_world_screen: core/core_world_screen.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [core] example - vr simulator
|
# compile [core] example - vr simulator
|
||||||
core/core_vr_simulator: core/core_vr_simulator.c
|
core/core_vr_simulator: core/core_vr_simulator.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [shapes] example - raylib logo (with basic shapes)
|
# compile [shapes] example - raylib logo (with basic shapes)
|
||||||
shapes/shapes_logo_raylib: shapes/shapes_logo_raylib.c
|
shapes/shapes_logo_raylib: shapes/shapes_logo_raylib.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [shapes] example - basic shapes usage (rectangle, circle, ...)
|
# compile [shapes] example - basic shapes usage (rectangle, circle, ...)
|
||||||
shapes/shapes_basic_shapes: shapes/shapes_basic_shapes.c
|
shapes/shapes_basic_shapes: shapes/shapes_basic_shapes.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [shapes] example - raylib color palette
|
# compile [shapes] example - raylib color palette
|
||||||
shapes/shapes_colors_palette: shapes/shapes_colors_palette.c
|
shapes/shapes_colors_palette: shapes/shapes_colors_palette.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [shapes] example - raylib logo animation
|
# compile [shapes] example - raylib logo animation
|
||||||
shapes/shapes_logo_raylib_anim: shapes/shapes_logo_raylib_anim.c
|
shapes/shapes_logo_raylib_anim: shapes/shapes_logo_raylib_anim.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [shapes] example - lines bezier
|
# compile [shapes] example - lines bezier
|
||||||
shapes/shapes_lines_bezier: shapes/shapes_lines_bezier.c
|
shapes/shapes_lines_bezier: shapes/shapes_lines_bezier.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [textures] example - raylib logo texture loading
|
# compile [textures] example - raylib logo texture loading
|
||||||
textures/textures_logo_raylib: textures/textures_logo_raylib.c
|
textures/textures_logo_raylib: textures/textures_logo_raylib.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [textures] example - image loading and conversion to texture
|
# compile [textures] example - image loading and conversion to texture
|
||||||
textures/textures_image_loading: textures/textures_image_loading.c
|
textures/textures_image_loading: textures/textures_image_loading.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [textures] example - texture rectangle drawing
|
# compile [textures] example - texture rectangle drawing
|
||||||
textures/textures_rectangle: textures/textures_rectangle.c
|
textures/textures_rectangle: textures/textures_rectangle.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [textures] example - texture source and destination rectangles
|
# compile [textures] example - texture source and destination rectangles
|
||||||
textures/textures_srcrec_dstrec: textures/textures_srcrec_dstrec.c
|
textures/textures_srcrec_dstrec: textures/textures_srcrec_dstrec.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [textures] example - texture to image
|
# compile [textures] example - texture to image
|
||||||
textures/textures_to_image: textures/textures_to_image.c
|
textures/textures_to_image: textures/textures_to_image.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [textures] example - texture raw data
|
# compile [textures] example - texture raw data
|
||||||
textures/textures_raw_data: textures/textures_raw_data.c
|
textures/textures_raw_data: textures/textures_raw_data.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [textures] example - texture particles blending
|
# compile [textures] example - texture particles blending
|
||||||
textures/textures_particles_blending: textures/textures_particles_blending.c
|
textures/textures_particles_blending: textures/textures_particles_blending.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [textures] example - texture image processing
|
# compile [textures] example - texture image processing
|
||||||
textures/textures_image_processing: textures/textures_image_processing.c
|
textures/textures_image_processing: textures/textures_image_processing.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [textures] example - texture image drawing
|
# compile [textures] example - texture image drawing
|
||||||
textures/textures_image_drawing: textures/textures_image_drawing.c
|
textures/textures_image_drawing: textures/textures_image_drawing.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [text] example - sprite fonts loading
|
# compile [text] example - sprite fonts loading
|
||||||
text/text_sprite_fonts: text/text_sprite_fonts.c
|
text/text_sprite_fonts: text/text_sprite_fonts.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [text] example - bmfonts and ttf loading
|
# compile [text] example - bmfonts and ttf loading
|
||||||
text/text_bmfont_ttf: text/text_bmfont_ttf.c
|
text/text_bmfont_ttf: text/text_bmfont_ttf.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [text] example - raylib fonts
|
# compile [text] example - raylib fonts
|
||||||
text/text_raylib_fonts: text/text_raylib_fonts.c
|
text/text_raylib_fonts: text/text_raylib_fonts.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [text] example - text formatting
|
# compile [text] example - text formatting
|
||||||
text/text_format_text: text/text_format_text.c
|
text/text_format_text: text/text_format_text.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [text] example - text writing animation
|
# compile [text] example - text writing animation
|
||||||
text/text_writing_anim: text/text_writing_anim.c
|
text/text_writing_anim: text/text_writing_anim.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [text] example - text ttf loading
|
# compile [text] example - text ttf loading
|
||||||
text/text_ttf_loading: text/text_ttf_loading.c
|
text/text_ttf_loading: text/text_ttf_loading.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [text] example - text bmfont unordered
|
# compile [text] example - text bmfont unordered
|
||||||
text/text_bmfont_unordered: text/text_bmfont_unordered.c
|
text/text_bmfont_unordered: text/text_bmfont_unordered.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [text] example - text input box
|
# compile [text] example - text input box
|
||||||
text/text_input_box: text/text_input_box.c
|
text/text_input_box: text/text_input_box.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [models] example - basic geometric 3d shapes
|
# compile [models] example - basic geometric 3d shapes
|
||||||
models/models_geometric_shapes: models/models_geometric_shapes.c
|
models/models_geometric_shapes: models/models_geometric_shapes.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [models] example - box collisions
|
# compile [models] example - box collisions
|
||||||
models/models_box_collisions: models/models_box_collisions.c
|
models/models_box_collisions: models/models_box_collisions.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [models] example - basic window
|
# compile [models] example - basic window
|
||||||
models/models_planes: models/models_planes.c
|
models/models_planes: models/models_planes.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [models] example - billboard usage
|
# compile [models] example - billboard usage
|
||||||
models/models_billboard: models/models_billboard.c
|
models/models_billboard: models/models_billboard.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [models] example - OBJ model loading
|
# compile [models] example - OBJ model loading
|
||||||
models/models_obj_loading: models/models_obj_loading.c
|
models/models_obj_loading: models/models_obj_loading.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [models] example - heightmap loading
|
# compile [models] example - heightmap loading
|
||||||
models/models_heightmap: models/models_heightmap.c
|
models/models_heightmap: models/models_heightmap.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [models] example - cubesmap loading
|
# compile [models] example - cubesmap loading
|
||||||
models/models_cubicmap: models/models_cubicmap.c
|
models/models_cubicmap: models/models_cubicmap.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [models] example - model mesh picking
|
# compile [models] example - model mesh picking
|
||||||
models/models_mesh_picking: models/models_mesh_picking.c
|
models/models_mesh_picking: models/models_mesh_picking.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [shaders] example - model shader
|
# compile [shaders] example - model shader
|
||||||
shaders/shaders_model_shader: shaders/shaders_model_shader.c
|
shaders/shaders_model_shader: shaders/shaders_model_shader.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [shaders] example - shapes texture shader
|
# compile [shaders] example - shapes texture shader
|
||||||
shaders/shaders_shapes_textures: shaders/shaders_shapes_textures.c
|
shaders/shaders_shapes_textures: shaders/shaders_shapes_textures.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [shaders] example - custom uniform in shader
|
# compile [shaders] example - custom uniform in shader
|
||||||
shaders/shaders_custom_uniform: shaders/shaders_custom_uniform.c
|
shaders/shaders_custom_uniform: shaders/shaders_custom_uniform.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [shaders] example - postprocessing shader
|
# compile [shaders] example - postprocessing shader
|
||||||
shaders/shaders_postprocessing: shaders/shaders_postprocessing.c
|
shaders/shaders_postprocessing: shaders/shaders_postprocessing.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [audio] example - sound loading and playing (WAV and OGG)
|
# compile [audio] example - sound loading and playing (WAV and OGG)
|
||||||
audio/audio_sound_loading: audio/audio_sound_loading.c
|
audio/audio_sound_loading: audio/audio_sound_loading.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [audio] example - music stream playing (OGG)
|
# compile [audio] example - music stream playing (OGG)
|
||||||
audio/audio_music_stream: audio/audio_music_stream.c
|
audio/audio_music_stream: audio/audio_music_stream.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [audio] example - module playing (XM)
|
# compile [audio] example - module playing (XM)
|
||||||
audio/audio_module_playing: audio/audio_module_playing.c
|
audio/audio_module_playing: audio/audio_module_playing.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [audio] example - raw audio streaming
|
# compile [audio] example - raw audio streaming
|
||||||
audio/audio_raw_stream: audio/audio_raw_stream.c
|
audio/audio_raw_stream: audio/audio_raw_stream.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [physac] example - physics demo
|
# compile [physac] example - physics demo
|
||||||
physac/physics_demo: physac/physics_demo.c
|
physac/physics_demo: physac/physics_demo.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) $(PHYSAC_LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) $(PHYSAC_LIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [physac] example - physics friction
|
# compile [physac] example - physics friction
|
||||||
physac/physics_friction: physac/physics_friction.c
|
physac/physics_friction: physac/physics_friction.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) $(PHYSAC_LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) $(PHYSAC_LIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [physac] example - physics movement
|
# compile [physac] example - physics movement
|
||||||
physac/physics_movement: physac/physics_movement.c
|
physac/physics_movement: physac/physics_movement.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) $(PHYSAC_LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) $(PHYSAC_LIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [physac] example - physics restitution
|
# compile [physac] example - physics restitution
|
||||||
physac/physics_restitution: physac/physics_restitution.c
|
physac/physics_restitution: physac/physics_restitution.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) $(PHYSAC_LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) $(PHYSAC_LIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
# compile [physac] example - physics shatter
|
# compile [physac] example - physics shatter
|
||||||
physac/physics_shatter: physac/physics_shatter.c
|
physac/physics_shatter: physac/physics_shatter.c
|
||||||
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) $(PHYSAC_LIBS) -D$(PLATFORM) $(WINFLAGS)
|
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) $(PHYSAC_LIBS) -D$(PLATFORM)
|
||||||
|
|
||||||
ifeq ($(PLATFORM),PLATFORM_ANDROID)
|
ifeq ($(PLATFORM),PLATFORM_ANDROID)
|
||||||
external/native_app_glue.o : native_app_glue.c native_app_glue.h
|
external/native_app_glue.o : native_app_glue.c native_app_glue.h
|
||||||
$(CC) -c $< $(CFLAGS) $(INCLUDES) -D$(PLATFORM) -D$(SHAREDFLAG)
|
$(CC) -c $< $(CFLAGS) $(INCLUDE_PATHS) -D$(PLATFORM) -D$(SHAREDFLAG)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# fix dylib install path name for each executable (MAC)
|
# fix dylib install path name for each executable (MAC)
|
||||||
|
|
@ -568,18 +569,18 @@ ifeq ($(PLATFORM_OS),OSX)
|
||||||
find . -type f -perm +ugo+x -print0 | xargs -t -0 -R 1 -I file install_name_tool -change libglfw.3.0.dylib ../external/glfw3/lib/osx/libglfw.3.0.dylib file
|
find . -type f -perm +ugo+x -print0 | xargs -t -0 -R 1 -I file install_name_tool -change libglfw.3.0.dylib ../external/glfw3/lib/osx/libglfw.3.0.dylib file
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# clean everything
|
# Clean everything
|
||||||
clean:
|
clean:
|
||||||
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
|
||||||
|
ifeq ($(PLATFORM_OS),WINDOWS)
|
||||||
|
del *.o *.exe /s
|
||||||
|
endif
|
||||||
|
ifeq ($(PLATFORM_OS),LINUX)
|
||||||
|
find -type f -executable | xargs file -i | grep -E 'x-object|x-archive|x-sharedlib|x-executable' | rev | cut -d ':' -f 2- | rev | xargs rm -f
|
||||||
|
endif
|
||||||
ifeq ($(PLATFORM_OS),OSX)
|
ifeq ($(PLATFORM_OS),OSX)
|
||||||
find . -type f -perm +ugo+x -delete
|
find . -type f -perm +ugo+x -delete
|
||||||
rm -f *.o
|
rm -f *.o
|
||||||
else
|
|
||||||
ifeq ($(PLATFORM_OS),LINUX)
|
|
||||||
find -type f -executable | xargs file -i | grep -E 'x-object|x-archive|x-sharedlib|x-executable' | rev | cut -d ':' -f 2- | rev | xargs rm -f
|
|
||||||
else
|
|
||||||
del *.o *.exe /s
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ifeq ($(PLATFORM),PLATFORM_RPI)
|
ifeq ($(PLATFORM),PLATFORM_RPI)
|
||||||
|
|
@ -590,3 +591,4 @@ ifeq ($(PLATFORM),PLATFORM_WEB)
|
||||||
del *.o *.html *.js
|
del *.o *.html *.js
|
||||||
endif
|
endif
|
||||||
@echo Cleaning done
|
@echo Cleaning done
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,10 +41,13 @@ int main()
|
||||||
model.material = LoadMaterialPBR((Color){ 255, 255, 255, 255 }, 1.0f, 1.0f);
|
model.material = LoadMaterialPBR((Color){ 255, 255, 255, 255 }, 1.0f, 1.0f);
|
||||||
|
|
||||||
// Define lights attributes
|
// Define lights attributes
|
||||||
Light lights[MAX_LIGHTS] = { CreateLight(LIGHT_POINT, (Vector3){ LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 0, 255 }, model.material.shader),
|
// NOTE: Shader is passed to every light on creation to define shader bindings internally
|
||||||
CreateLight(LIGHT_POINT, (Vector3){ 0.0f, LIGHT_HEIGHT, LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 255, 0, 255 }, model.material.shader),
|
Light lights[MAX_LIGHTS] = {
|
||||||
CreateLight(LIGHT_POINT, (Vector3){ -LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 0, 255, 255 }, model.material.shader),
|
CreateLight(LIGHT_POINT, (Vector3){ LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 0, 255 }, model.material.shader),
|
||||||
CreateLight(LIGHT_DIRECTIONAL, (Vector3){ 0.0f, LIGHT_HEIGHT*2.0f, -LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 255, 255 }, model.material.shader) };
|
CreateLight(LIGHT_POINT, (Vector3){ 0.0f, LIGHT_HEIGHT, LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 255, 0, 255 }, model.material.shader),
|
||||||
|
CreateLight(LIGHT_POINT, (Vector3){ -LIGHT_DISTANCE, LIGHT_HEIGHT, 0.0f }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 0, 0, 255, 255 }, model.material.shader),
|
||||||
|
CreateLight(LIGHT_DIRECTIONAL, (Vector3){ 0.0f, LIGHT_HEIGHT*2.0f, -LIGHT_DISTANCE }, (Vector3){ 0.0f, 0.0f, 0.0f }, (Color){ 255, 0, 255, 255 }, model.material.shader)
|
||||||
|
};
|
||||||
|
|
||||||
SetCameraMode(camera, CAMERA_ORBITAL); // Set an orbital camera mode
|
SetCameraMode(camera, CAMERA_ORBITAL); // Set an orbital camera mode
|
||||||
|
|
||||||
|
|
@ -156,6 +159,7 @@ static Material LoadMaterialPBR(Color albedo, float metalness, float roughness)
|
||||||
UnloadTexture(cubemap);
|
UnloadTexture(cubemap);
|
||||||
UnloadTexture(texHDR);
|
UnloadTexture(texHDR);
|
||||||
|
|
||||||
|
// Unload already used shaders (to create specific textures)
|
||||||
UnloadShader(shdrCubemap);
|
UnloadShader(shdrCubemap);
|
||||||
UnloadShader(shdrIrradiance);
|
UnloadShader(shdrIrradiance);
|
||||||
UnloadShader(shdrPrefilter);
|
UnloadShader(shdrPrefilter);
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 189 KiB After Width: | Height: | Size: 317 KiB |
113
examples/models/models_mesh_generation.c
Normal file
113
examples/models/models_mesh_generation.c
Normal file
|
|
@ -0,0 +1,113 @@
|
||||||
|
/*******************************************************************************************
|
||||||
|
*
|
||||||
|
* raylib example - procedural mesh generation
|
||||||
|
*
|
||||||
|
* This example has been created using raylib 1.8 (www.raylib.com)
|
||||||
|
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 Ramon Santamaria (Ray San)
|
||||||
|
*
|
||||||
|
********************************************************************************************/
|
||||||
|
|
||||||
|
#include "raylib.h"
|
||||||
|
|
||||||
|
#define NUM_MODELS 7 // We generate 7 parametric 3d shapes
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
// Initialization
|
||||||
|
//--------------------------------------------------------------------------------------
|
||||||
|
int screenWidth = 800;
|
||||||
|
int screenHeight = 450;
|
||||||
|
|
||||||
|
InitWindow(screenWidth, screenHeight, "raylib [models] example - mesh generation");
|
||||||
|
|
||||||
|
// We generate a checked image for texturing
|
||||||
|
Image checked = GenImageChecked(2, 2, 1, 1, RED, GREEN);
|
||||||
|
Texture2D texture = LoadTextureFromImage(checked);
|
||||||
|
UnloadImage(checked);
|
||||||
|
|
||||||
|
Model models[NUM_MODELS];
|
||||||
|
|
||||||
|
models[0] = LoadModelFromMesh(GenMeshPlane(2, 2, 5, 5));
|
||||||
|
models[1] = LoadModelFromMesh(GenMeshCube(2.0f, 1.0f, 2.0f));
|
||||||
|
models[2] = LoadModelFromMesh(GenMeshSphere(2, 32, 32));
|
||||||
|
models[3] = LoadModelFromMesh(GenMeshHemiSphere(2, 16, 16));
|
||||||
|
models[4] = LoadModelFromMesh(GenMeshCylinder(1, 2, 16));
|
||||||
|
models[5] = LoadModelFromMesh(GenMeshTorus(0.25f, 4.0f, 16, 32));
|
||||||
|
models[6] = LoadModelFromMesh(GenMeshKnot(1.0f, 2.0f, 16, 128));
|
||||||
|
|
||||||
|
// Set checked texture as default diffuse component for all models material
|
||||||
|
for (int i = 0; i < NUM_MODELS; i++) models[i].material.maps[MAP_DIFFUSE].texture = texture;
|
||||||
|
|
||||||
|
// Define the camera to look into our 3d world
|
||||||
|
Camera camera = {{ 5.0f, 5.0f, 5.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
|
||||||
|
|
||||||
|
// Model drawing position
|
||||||
|
Vector3 position = { 0.0f, 0.0f, 0.0f };
|
||||||
|
|
||||||
|
int currentModel = 0;
|
||||||
|
|
||||||
|
SetCameraMode(camera, CAMERA_ORBITAL); // Set a orbital camera mode
|
||||||
|
|
||||||
|
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
|
||||||
|
//--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Main game loop
|
||||||
|
while (!WindowShouldClose()) // Detect window close button or ESC key
|
||||||
|
{
|
||||||
|
// Update
|
||||||
|
//----------------------------------------------------------------------------------
|
||||||
|
UpdateCamera(&camera); // Update internal camera and our camera
|
||||||
|
|
||||||
|
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON))
|
||||||
|
{
|
||||||
|
currentModel = (currentModel + 1)%NUM_MODELS; // Cycle between the textures
|
||||||
|
}
|
||||||
|
//----------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Draw
|
||||||
|
//----------------------------------------------------------------------------------
|
||||||
|
BeginDrawing();
|
||||||
|
|
||||||
|
ClearBackground(RAYWHITE);
|
||||||
|
|
||||||
|
Begin3dMode(camera);
|
||||||
|
|
||||||
|
DrawModel(models[currentModel], position, 1.0f, WHITE);
|
||||||
|
|
||||||
|
DrawGrid(10, 1.0);
|
||||||
|
|
||||||
|
End3dMode();
|
||||||
|
|
||||||
|
DrawRectangle(30, 400, 310, 30, Fade(SKYBLUE, 0.5f));
|
||||||
|
DrawRectangleLines(30, 400, 310, 30, Fade(DARKBLUE, 0.5f));
|
||||||
|
DrawText("MOUSE LEFT BUTTON to CYCLE PROCEDURAL MODELS", 40, 410, 10, BLUE);
|
||||||
|
|
||||||
|
switch(currentModel)
|
||||||
|
{
|
||||||
|
case 0: DrawText("PLANE", 680, 10, 20, DARKBLUE); break;
|
||||||
|
case 1: DrawText("CUBE", 680, 10, 20, DARKBLUE); break;
|
||||||
|
case 2: DrawText("SPHERE", 680, 10, 20, DARKBLUE); break;
|
||||||
|
case 3: DrawText("HEMISPHERE", 640, 10, 20, DARKBLUE); break;
|
||||||
|
case 4: DrawText("CYLINDER", 680, 10, 20, DARKBLUE); break;
|
||||||
|
case 5: DrawText("TORUS", 680, 10, 20, DARKBLUE); break;
|
||||||
|
case 6: DrawText("KNOT", 680, 10, 20, DARKBLUE); break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
EndDrawing();
|
||||||
|
//----------------------------------------------------------------------------------
|
||||||
|
}
|
||||||
|
|
||||||
|
// De-Initialization
|
||||||
|
//--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Unload models data (GPU VRAM)
|
||||||
|
for (int i = 0; i < NUM_MODELS; i++) UnloadModel(models[i]);
|
||||||
|
|
||||||
|
CloseWindow(); // Close window and OpenGL context
|
||||||
|
//--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
BIN
examples/models/models_mesh_generation.png
Normal file
BIN
examples/models/models_mesh_generation.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
|
|
@ -89,7 +89,7 @@ int main()
|
||||||
cursorColor = PURPLE;
|
cursorColor = PURPLE;
|
||||||
hitObjectName = "Triangle";
|
hitObjectName = "Triangle";
|
||||||
|
|
||||||
bary = VectorBarycenter(nearestHit.position, ta, tb, tc);
|
bary = Vector3Barycenter(nearestHit.position, ta, tb, tc);
|
||||||
hitTriangle = true;
|
hitTriangle = true;
|
||||||
}
|
}
|
||||||
else hitTriangle = false;
|
else hitTriangle = false;
|
||||||
|
|
|
||||||
198
examples/models/models_yaw_pitch_roll.c
Normal file
198
examples/models/models_yaw_pitch_roll.c
Normal file
|
|
@ -0,0 +1,198 @@
|
||||||
|
/*******************************************************************************************
|
||||||
|
*
|
||||||
|
* raylib [models] example - Plane rotations (yaw, pitch, roll)
|
||||||
|
*
|
||||||
|
* This example has been created using raylib 1.8 (www.raylib.com)
|
||||||
|
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
|
||||||
|
*
|
||||||
|
* Example based on Berni work on Raspberry Pi:
|
||||||
|
* http://forum.raylib.com/index.php?p=/discussion/124/line-versus-triangle-drawing-order
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 Ramon Santamaria (@raysan5)
|
||||||
|
*
|
||||||
|
********************************************************************************************/
|
||||||
|
|
||||||
|
#include "raylib.h"
|
||||||
|
#include "raymath.h"
|
||||||
|
|
||||||
|
// Draw angle gauge controls
|
||||||
|
void DrawAngleGauge(Texture2D angleGauge, int x, int y, float angle, char title[], Color color);
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------
|
||||||
|
// Main entry point
|
||||||
|
//----------------------------------------------------------------------------------
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
// Initialization
|
||||||
|
//--------------------------------------------------------------------------------------
|
||||||
|
const int screenWidth = 800;
|
||||||
|
const int screenHeight = 450;
|
||||||
|
|
||||||
|
InitWindow(screenWidth, screenHeight, "raylib [models] example - plane rotations (yaw, pitch, roll)");
|
||||||
|
|
||||||
|
Texture2D texAngleGauge = LoadTexture("resources/angle_gauge.png");
|
||||||
|
Texture2D texBackground = LoadTexture("resources/background.png");
|
||||||
|
Texture2D texPitch = LoadTexture("resources/pitch.png");
|
||||||
|
Texture2D texPlane = LoadTexture("resources/plane.png");
|
||||||
|
|
||||||
|
RenderTexture2D framebuffer = LoadRenderTexture(192, 192);
|
||||||
|
|
||||||
|
// Model loading
|
||||||
|
Model model = LoadModel("resources/plane.obj"); // Load OBJ model
|
||||||
|
model.material.maps[MAP_DIFFUSE].texture = LoadTexture("resources/plane_diffuse.png"); // Set map diffuse texture
|
||||||
|
|
||||||
|
GenTextureMipmaps(&model.material.maps[MAP_DIFFUSE].texture);
|
||||||
|
|
||||||
|
Camera camera = { 0 };
|
||||||
|
camera.position = (Vector3){ 0.0f, 60.0f, -120.0f };// Camera position perspective
|
||||||
|
camera.target = (Vector3){ 0.0f, 12.0f, 0.0f }; // Camera looking at point
|
||||||
|
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target)
|
||||||
|
camera.fovy = 30.0f; // Camera field-of-view Y
|
||||||
|
|
||||||
|
float pitch = 0.0f;
|
||||||
|
float roll = 0.0f;
|
||||||
|
float yaw = 0.0f;
|
||||||
|
|
||||||
|
SetTargetFPS(60);
|
||||||
|
//--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
while (!WindowShouldClose()) // Detect window close button or ESC key
|
||||||
|
{
|
||||||
|
// Update
|
||||||
|
//----------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Plane roll (x-axis) controls
|
||||||
|
if (IsKeyDown(KEY_LEFT)) roll += 1.0f;
|
||||||
|
else if (IsKeyDown(KEY_RIGHT)) roll -= 1.0f;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (roll > 0.0f) roll -= 0.5f;
|
||||||
|
else if (roll < 0.0f) roll += 0.5f;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Plane yaw (y-axis) controls
|
||||||
|
if (IsKeyDown(KEY_S)) yaw += 1.0f;
|
||||||
|
else if (IsKeyDown(KEY_A)) yaw -= 1.0f;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (yaw > 0.0f) yaw -= 0.5f;
|
||||||
|
else if (yaw < 0.0f) yaw += 0.5f;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Plane pitch (z-axis) controls
|
||||||
|
if (IsKeyDown(KEY_DOWN)) pitch += 0.6f;
|
||||||
|
else if (IsKeyDown(KEY_UP)) pitch -= 0.6f;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (pitch > 0.3f) pitch -= 0.3f;
|
||||||
|
else if (pitch < -0.3f) pitch += 0.3f;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wraps the phase of an angle to fit between -180 and +180 degrees
|
||||||
|
int pitchOffset = pitch;
|
||||||
|
while (pitchOffset > 180) pitchOffset -= 360;
|
||||||
|
while (pitchOffset < -180) pitchOffset += 360;
|
||||||
|
pitchOffset *= 10;
|
||||||
|
|
||||||
|
Matrix transform = MatrixIdentity();
|
||||||
|
|
||||||
|
transform = MatrixMultiply(transform, MatrixRotateZ(DEG2RAD*roll));
|
||||||
|
transform = MatrixMultiply(transform, MatrixRotateX(DEG2RAD*pitch));
|
||||||
|
transform = MatrixMultiply(transform, MatrixRotateY(DEG2RAD*yaw));
|
||||||
|
|
||||||
|
model.transform = transform;
|
||||||
|
//----------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Draw
|
||||||
|
//----------------------------------------------------------------------------------
|
||||||
|
BeginDrawing();
|
||||||
|
|
||||||
|
ClearBackground(RAYWHITE);
|
||||||
|
|
||||||
|
// Draw framebuffer texture (Ahrs Display)
|
||||||
|
int centerX = framebuffer.texture.width/2;
|
||||||
|
int centerY = framebuffer.texture.height/2;
|
||||||
|
float scaleFactor = 0.5f;
|
||||||
|
|
||||||
|
BeginTextureMode(framebuffer);
|
||||||
|
|
||||||
|
BeginBlendMode(BLEND_ALPHA);
|
||||||
|
|
||||||
|
DrawTexturePro(texBackground, (Rectangle){0,0,texBackground.width, texBackground.height},
|
||||||
|
(Rectangle){ centerX, centerY, texBackground.width*scaleFactor, texBackground.height*scaleFactor},
|
||||||
|
(Vector2){texBackground.width/2*scaleFactor, texBackground.height/2*scaleFactor + pitchOffset*scaleFactor}, roll, WHITE);
|
||||||
|
|
||||||
|
DrawTexturePro(texPitch, (Rectangle){ 0, 0, texPitch.width, texPitch.height },
|
||||||
|
(Rectangle){ centerX, centerY, texPitch.width*scaleFactor, texPitch.height*scaleFactor },
|
||||||
|
(Vector2){ texPitch.width/2*scaleFactor, texPitch.height/2*scaleFactor + pitchOffset*scaleFactor }, roll, WHITE);
|
||||||
|
|
||||||
|
DrawTexturePro(texPlane, (Rectangle){0,0,texPlane.width, texPlane.height },
|
||||||
|
(Rectangle){ centerX, centerY, texPlane.width*scaleFactor, texPlane.height*scaleFactor },
|
||||||
|
(Vector2){texPlane.width/2*scaleFactor, texPlane.height/2*scaleFactor }, 0, WHITE);
|
||||||
|
|
||||||
|
EndBlendMode();
|
||||||
|
|
||||||
|
EndTextureMode();
|
||||||
|
|
||||||
|
// Draw 3D model (recomended to draw 3D always before 2D)
|
||||||
|
Begin3dMode(camera);
|
||||||
|
|
||||||
|
DrawModel(model, (Vector3){ 0, 6.0f, 0 }, 1.0f, WHITE); // Draw 3d model with texture
|
||||||
|
DrawGrid(10, 10.0f);
|
||||||
|
|
||||||
|
End3dMode();
|
||||||
|
|
||||||
|
// Draw 2D GUI stuff
|
||||||
|
DrawAngleGauge(texAngleGauge, 80, 80, roll, "roll", RED);
|
||||||
|
DrawAngleGauge(texAngleGauge, 190, 80, pitch, "pitch", GREEN);
|
||||||
|
DrawAngleGauge(texAngleGauge, 300, 80, yaw, "yaw", SKYBLUE);
|
||||||
|
|
||||||
|
DrawRectangle(30, 360, 260, 70, Fade(SKYBLUE, 0.5f));
|
||||||
|
DrawRectangleLines(30, 360, 260, 70, Fade(DARKBLUE, 0.5f));
|
||||||
|
DrawText("Pitch controlled with: KEY_UP / KEY_DOWN", 40, 370, 10, DARKGRAY);
|
||||||
|
DrawText("Roll controlled with: KEY_LEFT / KEY_RIGHT", 40, 390, 10, DARKGRAY);
|
||||||
|
DrawText("Yaw controlled with: KEY_A / KEY_S", 40, 410, 10, DARKGRAY);
|
||||||
|
|
||||||
|
// Draw framebuffer texture
|
||||||
|
DrawTextureRec(framebuffer.texture, (Rectangle){ 0, 0, framebuffer.texture.width, -framebuffer.texture.height },
|
||||||
|
(Vector2){ screenWidth - framebuffer.texture.width - 20, 20 }, Fade(WHITE, 0.8f));
|
||||||
|
|
||||||
|
DrawRectangleLines(screenWidth - framebuffer.texture.width - 20, 20, framebuffer.texture.width, framebuffer.texture.height, DARKGRAY);
|
||||||
|
|
||||||
|
EndDrawing();
|
||||||
|
//----------------------------------------------------------------------------------
|
||||||
|
}
|
||||||
|
|
||||||
|
// De-Initialization
|
||||||
|
//--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Unload all loaded data
|
||||||
|
UnloadModel(model);
|
||||||
|
|
||||||
|
UnloadRenderTexture(framebuffer);
|
||||||
|
|
||||||
|
UnloadTexture(texAngleGauge);
|
||||||
|
UnloadTexture(texBackground);
|
||||||
|
UnloadTexture(texPitch);
|
||||||
|
UnloadTexture(texPlane);
|
||||||
|
|
||||||
|
CloseWindow(); // Close window and OpenGL context
|
||||||
|
//--------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Draw angle gauge controls
|
||||||
|
void DrawAngleGauge(Texture2D angleGauge, int x, int y, float angle, char title[], Color color)
|
||||||
|
{
|
||||||
|
Rectangle srcRec = { 0, 0, angleGauge.width, angleGauge.height };
|
||||||
|
Rectangle dstRec = { x, y, angleGauge.width, angleGauge.height };
|
||||||
|
Vector2 origin = { angleGauge.width/2, angleGauge.height/2};
|
||||||
|
int textSize = 20;
|
||||||
|
|
||||||
|
DrawTexturePro(angleGauge, srcRec, dstRec, origin, angle, color);
|
||||||
|
|
||||||
|
DrawText(FormatText("%5.1f°", angle), x - MeasureText(FormatText("%5.1f°", angle), textSize) / 2, y + 10, textSize, DARKGRAY);
|
||||||
|
DrawText(title, x - MeasureText(title, textSize) / 2, y + 60, textSize, DARKGRAY);
|
||||||
|
}
|
||||||
BIN
examples/models/models_yaw_pitch_roll.png
Normal file
BIN
examples/models/models_yaw_pitch_roll.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 180 KiB |
BIN
examples/models/resources/pixels.png
Normal file
BIN
examples/models/resources/pixels.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 168 B |
|
|
@ -65,7 +65,7 @@ int main()
|
||||||
DrawText("USING CUSTOM SHADER", 190, 40, 10, RED);
|
DrawText("USING CUSTOM SHADER", 190, 40, 10, RED);
|
||||||
|
|
||||||
DrawRectangle(250 - 60, 90, 120, 60, RED);
|
DrawRectangle(250 - 60, 90, 120, 60, RED);
|
||||||
DrawRectangleGradient(250 - 90, 170, 180, 130, MAROON, GOLD);
|
DrawRectangleGradientH(250 - 90, 170, 180, 130, MAROON, GOLD);
|
||||||
DrawRectangleLines(250 - 40, 320, 80, 60, ORANGE);
|
DrawRectangleLines(250 - 40, 320, 80, 60, ORANGE);
|
||||||
|
|
||||||
// Activate our default shader for next drawings
|
// Activate our default shader for next drawings
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ int main()
|
||||||
DrawCircleLines(screenWidth/4, 340, 80, DARKBLUE);
|
DrawCircleLines(screenWidth/4, 340, 80, DARKBLUE);
|
||||||
|
|
||||||
DrawRectangle(screenWidth/4*2 - 60, 100, 120, 60, RED);
|
DrawRectangle(screenWidth/4*2 - 60, 100, 120, 60, RED);
|
||||||
DrawRectangleGradient(screenWidth/4*2 - 90, 170, 180, 130, MAROON, GOLD);
|
DrawRectangleGradientH(screenWidth/4*2 - 90, 170, 180, 130, MAROON, GOLD);
|
||||||
DrawRectangleLines(screenWidth/4*2 - 40, 320, 80, 60, ORANGE);
|
DrawRectangleLines(screenWidth/4*2 - 40, 320, 80, 60, ORANGE);
|
||||||
|
|
||||||
DrawTriangle((Vector2){screenWidth/4*3, 80},
|
DrawTriangle((Vector2){screenWidth/4*3, 80},
|
||||||
|
|
|
||||||
BIN
examples/textures/resources/custom_jupiter_crash.png
Normal file
BIN
examples/textures/resources/custom_jupiter_crash.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
|
|
@ -36,6 +36,14 @@ int main()
|
||||||
ImageCrop(&parrots, (Rectangle){ 0, 50, parrots.width, parrots.height - 100 }); // Crop resulting image
|
ImageCrop(&parrots, (Rectangle){ 0, 50, parrots.width, parrots.height - 100 }); // Crop resulting image
|
||||||
|
|
||||||
UnloadImage(cat); // Unload image from RAM
|
UnloadImage(cat); // Unload image from RAM
|
||||||
|
|
||||||
|
// Load custom font for frawing on image
|
||||||
|
SpriteFont font = LoadSpriteFont("resources/custom_jupiter_crash.png");
|
||||||
|
|
||||||
|
// Draw over image using custom font
|
||||||
|
ImageDrawTextEx(&parrots, (Vector2){ 300, 230 }, font, "PARROTS & CAT", font.baseSize, -2, WHITE);
|
||||||
|
|
||||||
|
UnloadSpriteFont(font); // Unload custom spritefont (already drawn used on image)
|
||||||
|
|
||||||
Texture2D texture = LoadTextureFromImage(parrots); // Image converted to texture, uploaded to GPU memory (VRAM)
|
Texture2D texture = LoadTextureFromImage(parrots); // Image converted to texture, uploaded to GPU memory (VRAM)
|
||||||
UnloadImage(parrots); // Once image has been converted to texture and uploaded to VRAM, it can be unloaded from RAM
|
UnloadImage(parrots); // Once image has been converted to texture and uploaded to VRAM, it can be unloaded from RAM
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue