918 Commits
1.0.6 ... 1.5.0

Author SHA1 Message Date
Ray
ab0d19f356 Merge pull request #137 from raysan5/develop
Integrate Develop branch
2016-07-19 12:48:55 +02:00
raysan5
c482f37dfd Updated... again... 2016-07-19 11:32:10 +02:00
raysan5
c12737ae38 Removed old shader 2016-07-19 11:06:09 +02:00
raysan5
3140496a12 Updated 2016-07-19 11:01:27 +02:00
raysan5
61558ab83f Updated shaders pack
Some deep review of this shaders is required for optimization...
2016-07-19 10:57:35 +02:00
raysan5
76c9e9883d Update runtime DLL to version 1.6 2016-07-19 10:03:05 +02:00
Ray
5139948ef9 Updated to Oculus PC SDK 1.6 2016-07-19 09:42:48 +02:00
Ray
13e18c23ed Merge pull request #136 from raysan5/develop
Updated
2016-07-18 17:25:02 +02:00
raysan5
af46222b12 Updated 2016-07-18 17:23:50 +02:00
Ray
eaec086177 Merge pull request #135 from raysan5/develop
Integrate Develop branch
2016-07-18 17:09:23 +02:00
raysan5
bec58075ff Update ro raylib 1.5 release 2016-07-18 17:08:13 +02:00
raysan5
0e6b249260 Review outputs by platform 2016-07-18 17:07:50 +02:00
raysan5
5ff9811ea8 Some code tweaks 2016-07-18 17:06:33 +02:00
Ray
6c2dc5574f Merge pull request #134 from LelixSuper/develop
Update Makefile of 'src/' folder
2016-07-18 15:34:02 +02:00
LelixSuper
ce1c4055f7 add GNU/Linux buils of library
The builds refer to de865a9 commit.
2016-07-18 15:22:32 +02:00
LelixSuper
de865a9b55 fix small things on 'src/' makefile 2016-07-18 15:13:43 +02:00
raysan5
697e1d4941 Update pthreads library (win32)
This library is only required by physac module to compulte physics in a
second thread
2016-07-18 14:53:11 +02:00
Ray
f5f3b4e095 Update README.md 2016-07-17 23:40:25 +02:00
raysan5
40fbe9da81 Added new example to makefile 2016-07-17 18:27:32 +02:00
LelixSuper
ebfb1978b8 allow to compile shared version of raylib 2016-07-17 17:56:57 +02:00
raysan5
8328353204 New example: XM module playing 2016-07-17 17:27:49 +02:00
LelixSuper
13c56887f1 fix 'external/stb_vorbis.c" compilation 2016-07-17 17:23:41 +02:00
LelixSuper
2272a4722f restore the original method to compile all modules
This commit restores the original method to compile all modules, but fix
prerequisites.
2016-07-17 17:18:34 +02:00
LelixSuper
94a5fc5c2c add some explanation of makefile in 'src/' 2016-07-17 15:54:52 +02:00
raysan5
a36cc7075a Corrected issue on drawing order 2016-07-17 12:40:56 +02:00
raysan5
f1f51bd9b6 Updated examples screenshots 2016-07-17 12:25:22 +02:00
raysan5
1eafa7020d Oculus Rift example with rlgl standalone 2016-07-16 22:41:31 +02:00
raysan5
55b9a2479a Expose Oculus Rift functionality directly 2016-07-16 22:41:13 +02:00
raysan5
52cb0d709a Code tweaks and comments 2016-07-16 22:40:51 +02:00
LelixSuper
d38fb9bda2 fix small things on makefile of 'src/' folder 2016-07-16 21:23:21 +02:00
LelixSuper
6efaa78058 improve the compilation of all modules 2016-07-16 21:01:43 +02:00
LelixSuper
e62c30c8b1 improve 'clean' target of 'src/' makefile 2016-07-16 20:24:14 +02:00
raysan5
0ba349bdf2 Removed oculus glfw sample (already on raylib)
Replaced by example rlgl_oculus_rift
2016-07-16 19:52:32 +02:00
raysan5
35bda8980f Merge branch 'develop' of https://github.com/raysan5/raylib into develop 2016-07-16 19:25:58 +02:00
raysan5
cac378bd95 Added release versions of raylib 1.5 2016-07-16 19:25:53 +02:00
raysan5
be551d7707 Review comment 2016-07-16 19:25:24 +02:00
raysan5
bfb5ffedda Added rlgl standalone sample 2016-07-16 19:25:15 +02:00
raysan5
a05150392a Added audio standalone sample 2016-07-16 19:24:08 +02:00
LelixSuper
6f335d2c9e add 'install' and 'unistall' target
The first target allow makefile to install the dev files (static library and
header) to standard directories on GNU/Linux platforms; the second allow it to
unistall (remove) the dev files.

It needs lot of improvements.
2016-07-16 18:38:17 +02:00
LelixSuper
f685acd69e update '.gitignore' file to ignore VIM's files 2016-07-16 17:39:15 +02:00
LelixSuper
dbec22f2df restyle Makefile of 'src/' folder and fix targets 2016-07-16 17:31:54 +02:00
Ray
4ef3acfa41 Update README.md 2016-07-16 15:03:26 +02:00
raysan5
0fbd48a889 Corrected bug on OpenGL 1.1
Set makefile to default OpenGL 3.3 compilation
2016-07-16 14:58:53 +02:00
Ray
b7b51569e2 Update README.md 2016-07-16 10:34:39 +02:00
Ray
55491fdb36 Update README.md 2016-07-15 19:45:38 +02:00
Ray
a2794379a0 Merge pull request #132 from raysan5/develop
Develop branch integration
2016-07-15 19:44:18 +02:00
Ray
fc19e24eba Update README.md 2016-07-15 19:42:06 +02:00
Ray
da71c3d801 Update ROADMAP.md 2016-07-15 18:45:45 +02:00
Ray
e815e205da Update HELPME.md 2016-07-15 18:43:24 +02:00
raysan5
eb58a0596d Updated with latest changes 2016-07-15 18:37:11 +02:00
raysan5
7959ccd84d Review some functions, formatting and comments 2016-07-15 18:16:34 +02:00
raysan5
338bb3fd9c Review variables to raylib naming conventions
Some review work still required...
2016-07-13 20:05:53 +02:00
raysan5
11172118d1 Review comments 2016-07-13 20:05:00 +02:00
raysan5
9d6d68f00a Support VR mode disable on Oculus device 2016-07-12 18:44:45 +02:00
raysan5
31b64d4689 Updated for GLSL 100 2016-07-12 17:10:44 +02:00
raysan5
3876f19d6a Corrected some issues on OpenGL ES 2016-07-12 01:54:47 +02:00
raysan5
22672bc738 Added Oculus functions declaration and comments 2016-07-11 19:01:13 +02:00
raysan5
56ec22f5c9 Corrected some issues on OpenGL 1.1
Corrected lighting system crash and VR variables not found...
2016-07-11 17:34:12 +02:00
Ray
84d1b19f61 Added custom Oculus CV1 parameters
Matching the same stereo rendering result given by Oculus PC SDK for
Oculus Rift CV1 is very difficult because hardware has changed a lot and
DK2 distortion shader and parameters don't fit on CV1. Some custom
parameters have been calculated to simulate kind of CV1 stereo
rendering. Further work is required on this point.
2016-07-11 14:43:58 +02:00
Ray
24c267d324 Compute stereo config from device parameters
Simulator configuration is directly obtained from VR device parameters!
2016-07-10 20:09:18 +02:00
Ray
d587cc0e36 Setup values for Oculus Rift DK2
Oculus Rift CV1 default values seem not to be available...
2016-07-10 20:07:54 +02:00
Ray
1733125873 Do not expose raw audio context to final user...
...at least, directly, available if using directly audio module...
2016-07-08 23:17:18 +02:00
raysan5
884e13ac2f Updated VR support -IN PROGRESS-
- Embedded VR distortion shader
- Ready to support multiple VR devices
- Fallback to VR Simulator if device not ready
- Support mono rendering over stereo rendering
2016-07-08 20:32:06 +02:00
Ray
bcc2b17701 Rename standard_shader.h to shader_standard.h 2016-07-08 17:22:37 +02:00
Ray
3922bc27cd Supporting multiple HMD configurations
-IN PROGRESS-
2016-07-08 00:57:27 +02:00
raysan5
7cefbd8a94 Updated lighting system...
...to avoid dynamic conditions on for loop (lightsCount) on standard
shader, it seems GLSL 100 doesn't support that feature... on some GPUs
like RaspberryPi...
2016-07-06 20:33:46 +02:00
raysan5
e2a3a52ad6 Edited comment 2016-07-06 20:02:33 +02:00
raysan5
8fd4507847 Corrected bug on Raspberry Pi with strcat() 2016-07-06 20:02:15 +02:00
raysan5
09cc27ca7a Added screenshot for example core_oculus_rift 2016-07-06 08:47:19 +02:00
Ray
bc80174357 VR Functions renaming (for generic HMD device)
Stereo rendering has been moved again to Begin3dMode() and End3dMode(),
it has some limitations but makes more sense...
2016-07-06 00:54:38 +02:00
raysan5
2ff2096b36 Moved Oculus enable drawing to user side...
Still thinking about the best way to manage this...
2016-07-04 18:35:50 +02:00
raysan5
3fb1c446ea Corrected issue on RPI on model drawing 2016-07-04 18:34:28 +02:00
raysan5
8bdd03eeac Updated Oculus PC SDK to version 1.5 2016-07-04 18:34:02 +02:00
Ray
2f9abe6e13 Review ResolveCollisionCubicmap()
This function needs to be redesigned or removed...
2016-07-04 01:30:07 +02:00
Ray
ee72654b55 Redesigned stereo rendering mechanism
Now it's easier for the user! Just init Oculus device and get stereo
rendering!
2016-07-04 01:29:23 +02:00
Ray
164ead03c9 Update README.md 2016-07-02 10:29:30 +02:00
Ray
f88c95ce2d Updated examples and makefile 2016-06-30 00:26:56 +02:00
raysan5
308fcbb96c Added eyes projection/view matrices calculation
Based on HMD parameters (IPD, ScreenSize, LesnsSeparation...)
2016-06-27 20:10:28 +02:00
raysan5
be61d2f8c1 Added missing parameter 2016-06-27 20:09:10 +02:00
raysan5
6fbf6a1c23 Redesigned distortion shader, added chromatic aberration 2016-06-27 19:18:53 +02:00
raysan5
5a4eb34c39 Corrected issue on distortion shader 2016-06-27 18:59:03 +02:00
raysan5
c4922c9e88 Reorganize shaders to respective folders 2016-06-27 18:32:56 +02:00
raysan5
e977915577 Review examples makefile for RPI 2016-06-27 18:31:23 +02:00
raysan5
572936ec65 Added Oculus functions to raylib header 2016-06-27 18:30:58 +02:00
raysan5
a8bed54586 Corrected stream playing with index 2016-06-27 18:30:18 +02:00
raysan5
4b444e7cc3 Comment glBlitFramebuffer() 2016-06-26 18:43:10 +02:00
raysan5
9127b5a57d Enable/Disable VR experience 2016-06-26 15:36:12 +02:00
raysan5
8652e644dd Corrected bug on stereo rendering 2016-06-26 14:13:11 +02:00
Ray
4ff85c2ac2 Added notes about chromatic aberration 2016-06-26 10:22:17 +02:00
raysan5
6981e2bffa Get supported videomodes for fullscreen 2016-06-26 01:36:06 +02:00
raysan5
8fb84d9e63 Updated to new rlgl 2016-06-25 23:29:03 +02:00
raysan5
71ab202295 Removed rlglInitGraphics(), integrated into rlglInit()
Redesigned rlgl usage:
- rlViewport() must be called by user
- Internal projection/modelview matrices must be setup by user
2016-06-25 23:28:50 +02:00
raysan5
369b8532c0 Review rlglInitGraphics() 2016-06-25 22:42:35 +02:00
raysan5
f9f33926f7 Corrected window size to unify with other examples 2016-06-25 22:41:45 +02:00
raysan5
9ee96bea95 Unified functions: InitGraphicsDevice()
Following XNA style, now we have InitGraphicsDevice(), replacing
InitDisplay() + InitGraphics()
2016-06-25 21:28:50 +02:00
raysan5
5f7ac64c44 Removed function SetModelTexture()
It's more educational to go through new material system, so, I decide to
remove this function to avoid students confusion...
2016-06-24 19:49:36 +02:00
raysan5
b358402cb3 Some code tweaks (view description)
- Added support for RLGL_NO_STANDARD_SHADER
- Store framebuffer width and height as globals
- Reorganize rlglInit() function
2016-06-24 19:37:52 +02:00
raysan5
a522b6e23b Corrected issue with unclosed threads 2016-06-24 19:34:47 +02:00
raysan5
03d9583b94 Add oculus simulator (in case device is not detected) 2016-06-21 13:49:13 +02:00
raysan5
e913de58c7 Added distortion shader for testing 2016-06-21 13:45:35 +02:00
raysan5
afe033412b Code tweak 2016-06-21 13:45:13 +02:00
raysan5
c28a5fbd62 Code tweak 2016-06-21 13:44:56 +02:00
Ray
6062201e8f Simplify Oculus example...
...to align it with standard raylib code. Final goal would be having the
same code work for every platform with no changes...
2016-06-21 08:59:29 +02:00
raysan5
b01f5ff6a7 Starting work on VR simulator support
If Oculus device is not available or not initialized correctly,
simulated VR view is generated using stereo-rendering and distortion
2016-06-19 19:12:47 +02:00
Ray
24c9b1f717 Improving Oculus Rift example...
Under design... looking for the easiest and most comprehensive way for
the user to use VR...
2016-06-17 13:54:45 +02:00
Ray
9fdf4420d5 Corrected bugs on OpenGL 2.1 2016-06-17 00:29:46 +02:00
Ray
4df7a0f2f8 Added support for OpenGL 2.1 2016-06-16 20:25:50 +02:00
Ray
3468af213f Reviewing Oculus rendering... 2016-06-15 00:54:55 +02:00
Ray
d5d1305bc0 Merge pull request #131 from victorfisac/develop
Physac 1.0 module completed
2016-06-14 21:38:09 +02:00
victorfisac
1b0996fb0b Updated physac header documentation 2016-06-14 20:54:20 +02:00
victorfisac
1879a8129e Fixed little bug in physac example 2016-06-14 20:40:12 +02:00
victorfisac
4e84ded7ef Fixed spacing and set UpdatePhysics() function as static...
and remove static from PhysicsThread().
2016-06-14 20:38:49 +02:00
victorfisac
1a8fbe5cf0 Add pthread external library to source...
and add instructions in physac examples to run it successful.
2016-06-14 20:31:48 +02:00
victorfisac
5a1cbb2842 Fix current time value 2016-06-14 20:25:08 +02:00
victorfisac
54537e8f0b Fixed bug in delta time calculation...
and added PHYSAC_NO_THREADS define. Improved physac example drawing
frames per second in screen.
2016-06-14 20:23:46 +02:00
victorfisac
c9c1263e6f Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-06-14 19:16:24 +02:00
raysan5
d1a5374ac4 raylib Oculus Rift CV1 example... IT WORKS!!! 2016-06-14 18:38:57 +02:00
raysan5
c914010606 Correct issue on Oculus drawing 2016-06-14 18:37:28 +02:00
raysan5
56bd9da07c Update Oculus sample (will be moved soon) 2016-06-14 18:37:06 +02:00
raysan5
d60dc7c2eb Added Oculus Rift library dll 2016-06-14 17:34:51 +02:00
raysan5
97fc266ad4 Updated raylib Oculus example 2016-06-14 17:20:00 +02:00
raysan5
3ce0228206 Move Oculus Rift support to rlgl module 2016-06-14 17:16:20 +02:00
raysan5
0d0f306fc2 Add Oculus SDK LibOVR library to external deps. 2016-06-14 17:15:00 +02:00
raysan5
c25b4cdc69 Move OpenGL extensions loading to rlgl 2016-06-14 15:42:04 +02:00
raysan5
3a5fc0c320 Move global data to implementation 2016-06-14 12:12:02 +02:00
raysan5
3d6be7fd80 Added GetGestureDetected() again...
Required by gestures example....
2016-06-14 12:01:57 +02:00
raysan5
47afda2549 Removed useless function: GetGestureDetected()
Use instead: IsGestureDetected()
2016-06-14 11:55:32 +02:00
victorfisac
6a2bbae521 Updated physics examples with new module changes 2016-06-12 22:07:36 +02:00
victorfisac
5625c11e99 Added internal hi-resolution timer to physac...
... and now physac thread creation is done in InitPhysics() and it is
destroyed in ClosePhysics(). User just need to call these functions to
use physac module.
2016-06-12 22:07:06 +02:00
victorfisac
16609d6702 Revert "Make GetTime() public to be used externally"
This reverts commit 7999bbafa8.
2016-06-12 22:04:51 +02:00
victorfisac
8d2de09f3d Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-06-12 22:03:46 +02:00
raysan5
4dae3385c3 Record draw call for batch processing
Just started working on this, not sure if it would be available for
raylib 1.5
2016-06-12 19:40:08 +02:00
raysan5
66ec0b5d82 Oculus tracking correction 2016-06-12 10:47:50 +02:00
victorfisac
7999bbafa8 Make GetTime() public to be used externally 2016-06-11 19:14:25 +02:00
victorfisac
4c43a40788 Update physac examples with fixed timestep method 2016-06-11 19:11:30 +02:00
victorfisac
c10c49e44f Convert physac module from static steps to fixed time steps
Old physics update system used a static number of steps to calculate
physics (450 for desktop and 64 for android). It was too much and it was
limited by target frame time...

Now physics update runs in a secondary thread using a fixed delta time
value to update steps. Collisions are perfectly detected and resolved
and performance has been improved so much.
2016-06-11 18:35:46 +02:00
victorfisac
1a60f376a4 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-06-11 18:29:01 +02:00
raysan5
27ba7de1e4 Added some comments 2016-06-11 14:08:39 +02:00
raysan5
68a02e567d Avoid external variable whiteTexture
To get it, use GetDefaultTexture()
2016-06-11 12:41:03 +02:00
raysan5
c46c0fc652 Corrected keywords usage 2016-06-11 12:18:08 +02:00
raysan5
3884716948 Corrected a couple of warnings 2016-06-11 12:01:39 +02:00
raysan5
8de1427803 Remove release files from src directory 2016-06-11 11:48:42 +02:00
raysan5
bab08f1c89 Added release folder (again) 2016-06-11 11:21:55 +02:00
raysan5
d63e32a377 Remove include, not supported on html5
AL/alext.h is not supported on html5 OpenAL implementation, just
replaced by the defines used in audio module
2016-06-11 11:21:24 +02:00
raysan5
52b88e0991 Reduce extensions dependencies
Only using raylib required extensions... it could be further reduced!
2016-06-11 10:58:17 +02:00
raysan5
3e8427799c Corrected bug on cubemap generation 2016-06-11 10:56:20 +02:00
Ray
2963782992 Merge pull request #128 from victorfisac/develop
Adapted shaders for OpenGL ES 2.0
2016-06-10 08:58:37 +02:00
victorfisac
77f599885d Fixed GLSL 100 shaders
texture() doesn't exist in glsl 100, it must use texture2D().
2016-06-10 00:59:48 +02:00
victorfisac
7b07b68bfd Adapt standard shader to GL ES 2.0
Some shader calculations are now pre-calculated because some math
functions doesn't exist in glsl 110.
2016-06-10 00:49:51 +02:00
Ray
fb90477354 Merge pull request #127 from victorfisac/develop
Fix Android template with 1.5 raylib features (audio streaming, gestures)
2016-06-09 23:27:50 +02:00
victorfisac
cbda329bfd Removed physac old module from Android MK file 2016-06-09 22:12:46 +02:00
victorfisac
5d186639c9 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-06-09 22:09:33 +02:00
raysan5
e2cfc6b838 Reduced physic steps resolution 2016-06-09 21:00:21 +02:00
raysan5
3c1be60c66 Updated examples for new physac header-only 2016-06-09 20:02:42 +02:00
raysan5
5f4449f0a1 Removed physac functions from raylib header 2016-06-09 20:02:15 +02:00
raysan5
558ec3891b Converted physac module to header only 2016-06-09 20:01:59 +02:00
raysan5
dcbfb83031 Updated comments... 2016-06-09 20:01:39 +02:00
victorfisac
3524fc414b Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-06-09 13:12:18 +02:00
Ray
420b85da98 Update README.md 2016-06-09 11:42:00 +02:00
Ray
28c2759ae1 Update README.md 2016-06-09 01:30:08 +02:00
Ray
374e3e7e11 Updated to raylib 1.5 2016-06-09 01:23:07 +02:00
Ray
904ef0d4be Adjust to standard example screen size 2016-06-08 22:55:38 +02:00
Ray
99ee26b001 Review const char * 2016-06-08 22:52:54 +02:00
Ray
ee049641ba Merge pull request #126 from kd7tck/develop
clean up audio chiptunes support
2016-06-08 22:23:23 +02:00
Joshua Reisenauer
4f47f90336 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-06-08 12:02:39 -07:00
Ray
2d90cc59b6 Update distortion.fs 2016-06-08 18:48:25 +02:00
Ray
5576dea00b Rename raylib_rlgl_standalone.c to rlgl_standalone.c 2016-06-08 18:27:43 +02:00
victorfisac
8323f81ab5 Add physac module to android compile instructions...
... and switch from debug build to release
2016-06-08 17:27:55 +02:00
victorfisac
f5f5ce0d33 Fix default android project game with new functions 2016-06-08 17:27:13 +02:00
victorfisac
88f4747437 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-06-08 15:55:08 +02:00
raysan5
b79ede4edb Added distortion shader to render 2016-06-08 13:29:56 +02:00
raysan5
70a96fff80 Simplified Oculus integration 2016-06-08 13:16:01 +02:00
Joshua Reisenauer
7bf2854e94 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-06-07 16:07:57 -07:00
Joshua Reisenauer
f0d8c009ae cleaned things up 2016-06-07 16:03:21 -07:00
victorfisac
0ae486f07c Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-06-08 00:34:35 +02:00
Ray
79a6235811 Stereo rendering test
Trying to simulate Oculus Rift CV1 rendering without the device... for
Debug pourposes.
2016-06-08 00:32:34 +02:00
Ray
c99fc5108e Update screenshot 2016-06-08 00:31:00 +02:00
Ray
09fa002818 Corrected issue 2016-06-08 00:04:56 +02:00
Ray
ee795150fa Updated some code 2016-06-07 23:44:53 +02:00
victorfisac
f97f39987c Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-06-07 23:41:34 +02:00
raysan5
5631f822bd Reorganized device init/close 2016-06-07 20:46:03 +02:00
raysan5
ca13c2ed0c Converted raygui module to header only 2016-06-07 20:33:49 +02:00
raysan5
058af472ea Converted GLAD to header only 2016-06-07 18:57:20 +02:00
raysan5
3d5a408177 Remove DEBUG flag for raylib lib compilation
...on Android
2016-06-07 18:53:47 +02:00
Ray
9281e477eb Embed standard shader into raylib 2016-06-07 00:32:45 +02:00
Joshua Reisenauer
76536fe24b Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-06-06 15:30:41 -07:00
Ray
1bcf500eca Review fallback mechanism 2016-06-06 23:19:40 +02:00
Ray
522af9f477 Fallback to default shader 2016-06-06 23:16:14 +02:00
Ray
1c98e6b698 Merge pull request #125 from raysan5/develop
Develop branch integration
2016-06-06 20:46:06 +02:00
Ray
4dada32693 Include GLFW3 DLL 2016-06-06 20:40:17 +02:00
Ray
34aea08ba2 Update to OpenAL Soft 1.17.2 2016-06-06 20:39:59 +02:00
Ray
6b2823775e Remove OpenAL Soft 2016-06-06 20:34:11 +02:00
Ray
d999b3ed53 Merge branch 'develop' of https://github.com/raysan5/raylib into develop 2016-06-06 20:30:02 +02:00
Ray
5f5d191d88 Updated to GLFW 3.2 2016-06-06 20:26:02 +02:00
Ray
dd468e9ef9 Merge pull request #124 from LelixSuper/patch-1
Fix mistake in the make file
2016-06-06 20:20:21 +02:00
LelixSuper
302d84cedc Fix mistake in Makefile 2016-06-06 19:26:30 +02:00
Ray
ad8a5a95b2 Move and update CMakeList 2016-06-06 14:38:54 +02:00
Ray
29d505c98e Reorganize external libraries - BREAKING CHANGE -
Moved all external libraries used by raylib to external folder inside
raylib src. Makefile has already been update and also the different
includes in raylib modules.
2016-06-06 14:34:43 +02:00
Ray
688045307a Reorganize folder for Android library
Android build system has been simplified and now is included in src
folder, like other build systems.
2016-06-06 13:52:06 +02:00
Ray
72eb2632cc Corrected compilation bug on OpenGL 1.1 2016-06-05 23:51:41 +02:00
Joshua Reisenauer
e3b2485453 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-06-03 14:01:04 -07:00
raysan5
60232810d8 Added some comments 2016-06-03 19:00:58 +02:00
raysan5
d1133ca8d3 Some gestures comments tweaks... 2016-06-03 18:51:19 +02:00
raysan5
13bef7aa02 Work on Oculus functionality
Trying to find the best way to integrate Oculus support into raylib,
making it easy for the user...
2016-06-03 18:26:59 +02:00
raysan5
b574e105dd Basic raylib Oculus Rift template for reference
Not functional yet...
2016-06-03 18:08:50 +02:00
raysan5
4dfffff19b Review uniform name 2016-06-03 17:30:09 +02:00
raysan5
9417b9969d Remove GLEW 2016-06-03 17:26:37 +02:00
raysan5
46a7822eee Remove useless folder 2016-06-03 17:25:02 +02:00
raysan5
501ef80bed Updated camera 2d example 2016-06-03 13:22:24 +02:00
Ray
7ca6397223 Added support for Oculus Rift CV1 2016-06-03 00:53:51 +02:00
Ray
e2173922f0 Update eye render pose with layer data 2016-06-03 00:46:56 +02:00
Joshua Reisenauer
96fa716525 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-06-02 13:43:11 -07:00
raysan5
4bc339ea4e Updated Oculus sample 2016-06-02 20:25:11 +02:00
raysan5
0bc71d84f8 Added functions to customize internal matrix
Internal modelview and projection matrices can be replaced before
drawing.
2016-06-02 20:23:09 +02:00
raysan5
2168d8aa1a Removed DrawPhysicObjectInfo() function
To avoid additional dependencies
2016-06-02 19:16:11 +02:00
raysan5
cafc66a3c1 Rename for consistency with other functions 2016-06-02 19:09:56 +02:00
raysan5
4c9d0f16a5 Comment to avoid warning 2016-06-02 19:09:31 +02:00
raysan5
80b3c4cd2b Review comments to be value-generic 2016-06-02 18:49:40 +02:00
raysan5
5bcddca5e1 Remove useless stuff 2016-06-02 18:29:49 +02:00
raysan5
c286bea8e1 Remove GLEW dependency 2016-06-02 18:20:59 +02:00
raysan5
4fb3103dfa Corrected some formatting issues 2016-06-02 18:19:47 +02:00
raysan5
cf6d2e3985 Review coding style to match raylib style
Moved AudioError enum inside audio.c
2016-06-02 17:12:31 +02:00
Ray
7447b3e1da Merge pull request #123 from kd7tck/develop
mod player
2016-06-02 16:18:53 +02:00
Joshua Reisenauer
cf2975d062 convenient way to combine errors 2016-06-02 02:31:25 -07:00
Joshua Reisenauer
af1eb5453a I added audio errors
The only thing I did not change was the _g for globals. Is there any
other way we can mark globals?
2016-06-02 02:02:23 -07:00
Joshua Reisenauer
05f8e83ba9 cleanup 2016-06-02 00:03:00 -07:00
Joshua Reisenauer
21a01ec870 simplified mod 2016-06-01 20:36:54 -07:00
Joshua Reisenauer
ae6adb173b Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-06-01 20:17:39 -07:00
Joshua Reisenauer
90e1ed2b5e mod player added 2016-06-01 20:09:00 -07:00
Ray
17878550b1 Review heades usage
This is a first step toward a bigger project. Some modules could be
ported to header-only to be used as standalone.
2016-06-02 01:26:44 +02:00
Ray
7afa0b09ab Support raygui as standalone library 2016-06-02 01:24:27 +02:00
raysan5
0a27525a4b Dependencies review
Checking some files to be converted to header-only
2016-06-01 14:01:35 +02:00
raysan5
3e88156817 Ignore invalid warning 2016-06-01 12:38:06 +02:00
raysan5
897179a06c Corrected some issues on OpenGL 1.1 2016-06-01 12:37:51 +02:00
raysan5
8f91ed81c5 Updated Oculus sample to Oculus SDK 1.4
Still working on the sample but almost finished. Some rlgl internals
redesign required and it will be ready!
2016-05-31 20:08:36 +02:00
raysan5
d17a0cee1a Review text formatting (spacing, tabs...) 2016-05-31 19:12:37 +02:00
raysan5
302ec438dd Removed colTint, tint color is colDiffuse
Tint color could be applied to colDiffuse... but what's the best way?
Replace it? Multiply by? A point to think about...
2016-05-31 18:15:53 +02:00
raysan5
cac2a66deb Improved library consistency
Functions renamed to improve library consistency
2016-05-31 17:11:02 +02:00
Joshua Reisenauer
78b4494e2b Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-05-30 15:57:35 -07:00
Ray
caa7bc366b Reviewed DrawLight() function and some tweaks 2016-05-31 00:51:55 +02:00
Joshua Reisenauer
6ad8323860 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-05-30 15:39:21 -07:00
Joshua Reisenauer
9f2fc81df2 update to openal 2016-05-30 15:34:29 -07:00
Ray
8a4e28f81d Support Android internal data storage
Useful to save small data files (configuration and so)
For bigger files, external data storage should be used (SDCard)
2016-05-31 00:01:19 +02:00
Ray
4b93349db5 Merge pull request #122 from victorfisac/develop
Standard Lighting (3/3)
2016-05-30 23:25:18 +02:00
victorfisac
11cf455fe0 Standard Lighting (3/3)
- Added normal and specular maps to standard shader.
- Added full tint attribute to standard shader and material data type.
- Changed point light attenuation to radius.
2016-05-30 19:59:21 +02:00
victorfisac
b0a0c5d431 Added tint color attribute to material data type
It tints all fragments, ignores lighting. Useful for some features like
feedback (damage color, ...).
2016-05-30 19:55:13 +02:00
victorfisac
f2d61d4043 Remove normal depth
Scaling normal depth (y axis) makes disappear the specular of
fragments... So I think it can be removed, it is not a very
useful/important attribute.
2016-05-30 19:43:35 +02:00
victorfisac
0ff26f527f Added normal and specular maps logic to standard...
...shader and updated example.
2016-05-30 19:26:17 +02:00
victorfisac
5c32cf2095 Add 'dwarf' model normal and specular maps to resources folder 2016-05-30 19:19:15 +02:00
victorfisac
64f6c74c9a Add normal and specular maps to draw model process 2016-05-30 19:18:55 +02:00
victorfisac
2e26ce235d Add Draw3DCircle function and update raylib and rlgl header
Draw3DCircle is useful to draw point lights radius.
2016-05-30 19:18:11 +02:00
victorfisac
ae2d0d4cd8 Delete old example mesh resource file 2016-05-29 22:41:23 +02:00
victorfisac
26833f5aae Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-05-29 22:24:01 +02:00
raysan5
ea5b00528b Improved render to texture
Support render texture size different than screen size
2016-05-29 11:49:13 +02:00
Joshua Reisenauer
e4e315bbfc Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-05-29 01:09:29 -07:00
Ray
27df983ee0 Merge pull request #121 from kd7tck/develop
I made this for some others I am now working with
2016-05-27 19:55:41 +02:00
Joshua Reisenauer
5a041a6af5 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-05-25 11:26:31 -07:00
raysan5
3d6696f6c9 Renamed shader variables (more generic names) 2016-05-25 16:21:13 +02:00
raysan5
d53b6f4381 Renamed shader variables (more generic names)
Now shader maps use a generic naming convention for any kind of texture
maps (not only diffuse, normal or specular). Useful for custom shaders.
2016-05-25 16:19:57 +02:00
raysan5
48374c85dd Some tweaks
It seems there are some problems with DrawLights()
2016-05-23 11:25:04 +02:00
Joshua Reisenauer
f74791ed7b better build system 2016-05-23 02:12:22 -07:00
Joshua Reisenauer
f232f34981 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-05-22 15:03:10 -07:00
Ray
9811a37690 Merge pull request #120 from victorfisac/develop
Standard Lighting (2/3)
2016-05-21 20:11:23 +02:00
victorfisac
dcd6942ed1 Fix small bug and spacing 2016-05-21 18:22:15 +02:00
victorfisac
c320a21f2b Add standard lighting (2/3)
- 3 light types added (point, directional, spot).
- DrawLights() function added using line shapes.
- Standard lighting example added.
- Removed useless struct variables from material and light.
- Fixed light attributes dynamic locations errors.
- Standard vertex and fragment shaders temporally added until rewrite it
as char pointers in rlgl.
TODO:
- Add normal and specular maps calculations in standard shader.
- Add control structs to handle which attributes needs to be calculated
(textures, specular...).
- Adapt standard shader to version 110.
- Rewrite standard shader as char pointers in rlgl.
2016-05-21 18:16:39 +02:00
victorfisac
80eb4f3f50 Remove deprecated phong lighting shaders and example 2016-05-21 18:11:25 +02:00
victorfisac
30941c0dd1 Add Draw3DLine function and fixed MLT glossiness import value
In standard shader, material glossiness is a value from 0 to 1000 like
in MLT files. So, it doesn't need to be normalized.
2016-05-21 18:10:06 +02:00
victorfisac
cf71e1242e Fix some audio module compile warnings 2016-05-21 18:08:09 +02:00
victorfisac
0da7c499b6 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-05-21 18:06:36 +02:00
Ray
0b65b44a78 Merge pull request #119 from gordonmcshane/remove-local-properties
remove user-specific ant files
2016-05-21 11:14:23 +02:00
Ray
46e7a26770 Merge pull request #118 from gordonmcshane/gamepad-example-fix
fix example
2016-05-21 11:13:42 +02:00
Gordon McShane
c9ac176fa7 remove user-specific ant files 2016-05-20 11:27:18 -07:00
Gordon McShane
c0983f3400 fix example
- fix gamepad axis query in example broken by db4585b Improved gamepad support
2016-05-20 11:03:44 -07:00
victorfisac
30c8058fca Add standard lighting (1/3)
- Ambient and lambert lighting added.
- Ambient and diffuse colors linked to standard shader.
- Single light linked to standard shader.
- LoadStandardMaterial() and depending functions added.
2016-05-20 17:18:07 +02:00
victorfisac
c60cc9ee18 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-05-20 15:05:12 +02:00
raysan5
6dac1efefe Comented buggy code to avoid problems...
...on model drawing
2016-05-20 15:01:36 +02:00
Ray
8b3603cd48 Merge pull request #117 from victorfisac/develop
MTL loading shininess to material glossiness
2016-05-20 14:59:49 +02:00
victorfisac
3fa6fdacf2 Improved MTL loading shininess value 2016-05-20 14:24:53 +02:00
victorfisac
90c62c4cc0 Fix small warning
Material glossiness is a float type value...
2016-05-20 14:07:50 +02:00
victorfisac
4f1bee3165 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-05-20 14:03:23 +02:00
raysan5
dcf5f45f68 Add lighting system -IN PROGRESS-
Improved materials
2016-05-20 12:28:07 +02:00
raysan5
af890cf210 Updated to avoid pointers 2016-05-20 10:53:58 +02:00
raysan5
c9e30f7754 Review struct typedef to avoid pointers for users 2016-05-20 10:53:31 +02:00
raysan5
03cc031d00 Remove TODO comments (already done) 2016-05-20 09:40:48 +02:00
raysan5
7d1d9ff143 Support DYNAMIC_DRAW mesh loading 2016-05-20 09:36:02 +02:00
Ray
bdb450fccb Merge pull request #116 from kd7tck/newaudio
Redesign audio system to support multiple mix channels
2016-05-20 09:22:07 +02:00
Joshua Reisenauer
179f2f9e4f windows automated compile
Only works when raylib is installed on windows system.
2016-05-19 20:56:38 -07:00
Joshua Reisenauer
41c5f3a017 Buffer for raw audio 2016-05-19 20:44:09 -07:00
Joshua Reisenauer
847944e240 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into newaudio 2016-05-19 15:31:56 -07:00
Joshua Reisenauer
b10425492a name correction 2016-05-19 15:22:12 -07:00
raysan5
8bbbe8cd76 Corrected namings 2016-05-19 13:50:29 +02:00
raysan5
037edbaa13 Reorganize data for consistency 2016-05-18 13:22:14 +02:00
raysan5
bc08271da3 Updated shaders with comments 2016-05-18 12:04:27 +02:00
Joshua Reisenauer
cd7f25830b Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-05-16 19:54:03 -07:00
Joshua Reisenauer
706755d146 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-05-16 19:42:16 -07:00
Ray
0e29aa2951 Corrected function name
texture2D() is deprecated on GLSL 330
2016-05-17 00:39:56 +02:00
Ray
d84f922372 Merge pull request #114 from cHemingway/osx-fixes
Fix building examples on OSX
2016-05-17 00:10:28 +02:00
Joshua Reisenauer
76ff4d220e renamed everything so it is obvious what it does 2016-05-15 19:37:15 -07:00
Joshua Reisenauer
86fbf4fd8f logic bug fix 2016-05-15 02:09:57 -07:00
Joshua Reisenauer
d38d7a1bed clean up on buffering and preconditions 2016-05-14 16:30:32 -07:00
Joshua Reisenauer
8c5d403dda new function to check if music stream is ready
_g naming convention for globals, new error exit numbers.
2016-05-14 15:26:17 -07:00
Chris Hemingway
f575935ace Fix glfw name on OSX and remove unused directory warning 2016-05-14 10:45:29 +01:00
Joshua Reisenauer
ea4b5552c2 corrected typos 2016-05-14 00:25:40 -07:00
Chris Hemingway
b46a800597 Make GRAPHICS_API_OPENGL_33 work on OSX, closes #113 2016-05-14 01:10:05 +01:00
Chris Hemingway
b62bbb78ed Fix building examples on OSX 2016-05-13 23:01:48 +01:00
Joshua Reisenauer
5107a2dc40 bug fixes 2016-05-12 21:14:02 -07:00
Joshua Reisenauer
ded07690fd Merge remote-tracking branch 'refs/remotes/raysan5/develop' into newaudio 2016-05-12 16:06:22 -07:00
Joshua Reisenauer
83dbc07650 buffering of music now uses update audio context 2016-05-12 16:02:23 -07:00
raysan5
e060944b34 Added QuaternionInvert() 2016-05-12 13:02:04 +02:00
raysan5
075f51e0a3 Simplified internal (default) dynamic buffers 2016-05-12 12:20:23 +02:00
Joshua Reisenauer
f0ada8c40d apply index to remaining functions 2016-05-11 22:37:53 -07:00
Joshua Reisenauer
9737c58054 PlayMusicStream now uses index 2016-05-11 20:15:37 -07:00
Joshua Reisenauer
529d20ee6a Merge remote-tracking branch 'refs/remotes/raysan5/develop' into newaudio 2016-05-11 18:15:46 -07:00
Joshua Reisenauer
ad3d270c42 added set pitch for music streams 2016-05-11 18:14:59 -07:00
Ray
454b422fd6 Merge pull request #112 from kd7tck/develop
Base Audio Context System
2016-05-11 20:14:12 +02:00
raysan5
4d78d27bd9 Updated structs Mesh and Shader 2016-05-11 19:25:51 +02:00
Joshua Reisenauer
6db44500b7 adding multiple music streams 2016-05-11 00:37:10 -07:00
raysan5
6acfda599e Support indexed mesh data on OpenGL 1.1 path
Keep asking myself why I maintain this rendering path... -___-
2016-05-10 19:25:06 +02:00
raysan5
5c112ff542 Corrected tipo 2016-05-10 19:24:25 +02:00
raysan5
aee5d9a390 Code tweak 2016-05-10 19:24:05 +02:00
raysan5
1ddf594d15 Added support for indexed mesh data 2016-05-10 18:24:28 +02:00
Joshua Reisenauer
9799856ad4 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-05-10 02:00:42 -07:00
Joshua Reisenauer
b7f8e97b03 final fix for audiocontext system
now it works
2016-05-10 01:54:20 -07:00
Ray
ac44db26a2 Added reference 2016-05-09 13:16:44 +02:00
Ray
c85cd29049 Added defines for default shader names 2016-05-09 12:41:53 +02:00
Ray
3d0208223a First implementation of MTL loading
Not tested yet
2016-05-09 12:40:59 +02:00
Ray
dc4d5dabcd Added MTL loading info 2016-05-09 01:18:46 +02:00
Ray
f7d4951165 Improved vertex attribs support for models 2016-05-08 23:50:35 +02:00
raysan5
0bcb873cbb Improved mesh support
Depending on mesh data, it can be loaded and default vertex attribute
location points are set, including colors, tangents and texcoords2
2016-05-08 15:24:02 +02:00
raysan5
29761c2519 Testing new material usage 2016-05-07 18:29:04 +02:00
raysan5
eeb151586f Corrected issues with OpenGL 1.1 backend 2016-05-07 18:28:40 +02:00
raysan5
7ab008878a Library redesign to accomodate materials system 2016-05-07 18:07:15 +02:00
raysan5
ec72a8868e Comment tweak 2016-05-07 18:04:22 +02:00
raysan5
ba60918eaa Updated Oculus sample
Now GLFW3 windows/context creation works ok and a sample red rectangle
has been drawn using rlgl. Next step is working in tracking
position/orientation maths and try to get a simple 3d scene...
2016-05-04 20:25:32 +02:00
Joshua Reisenauer
e660700924 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-05-03 14:17:37 -07:00
raysan5
fd67e31f63 Renamed function for consistency 2016-05-03 19:27:06 +02:00
raysan5
8301980ba8 Clean up and consistency review
- Renamed some functions for consistency (default buffers)
- Removed mystrdup() function (implemented inline)
- Renamed TextFileRead() to ReadTextFile()
2016-05-03 19:20:25 +02:00
raysan5
5f73850fa6 Renamed functions for consistency 2016-05-03 18:04:21 +02:00
raysan5
e94acf86f8 Reorganized internal funcs 2016-05-03 17:54:50 +02:00
Joshua Reisenauer
d6feeb14ff pause on no data 2016-05-03 02:52:45 -07:00
Joshua Reisenauer
9d09ada33b new boolean floatingPoint option
Now floating point is either on or off. This simplifies the use of 16bit
vs float.
2016-05-02 21:59:55 -07:00
Joshua Reisenauer
c3208c5cd6 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-05-02 14:43:37 -07:00
Joshua Reisenauer
4636e3367c number remaining buffer transfer for updateAudioContext
updateAudioContext is almost done
2016-05-02 14:37:00 -07:00
Ray
f2152aa391 Reorganize functions 2016-05-02 14:11:57 +02:00
Ray
2646ed0393 Removed debug functions 2016-05-02 14:11:42 +02:00
Joshua Reisenauer
9ef0240e99 resamples added
Ease of use considered in api and channels are more convenient as
unsigned char type.
2016-05-02 01:24:24 -07:00
Joshua Reisenauer
790bc72806 bool return for failed update 2016-05-01 23:07:02 -07:00
Joshua Reisenauer
289a53221d merge fix 2016-05-01 20:00:51 -07:00
Joshua Reisenauer
a2a3d3aeb6 new silence generator 2016-05-01 18:53:40 -07:00
Ray
17732fa9c4 Corrected warning with array 2016-05-02 00:38:01 +02:00
Ray
fa98289ddb Added 2D camera mode functions
Removed BeginDrawingEx()
Added Begin2dMode() and End2dMode()
2016-05-02 00:37:33 +02:00
Ray
0e6d1cb272 Working on materials system... 2016-05-02 00:16:32 +02:00
raysan5
cc39b4660a New oculus sample to test... 2016-05-01 21:55:34 +02:00
Joshua Reisenauer
fa3112b40e Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-04-30 19:00:23 -07:00
Ray
6ca1fd59a9 Merge pull request #111 from kd7tck/develop
First stage of audio API update
2016-05-01 01:49:40 +02:00
Ray
1fb874cdc5 Check for WebGL/Webkit extensions
Improve DXT-ETC1 support on HTML5
2016-05-01 01:09:48 +02:00
Joshua Reisenauer
34e5fcf47e removed enums 2016-04-30 16:05:43 -07:00
Joshua Reisenauer
a1038f61b6 BPS type added to ensure consistency 2016-04-30 15:41:46 -07:00
Joshua Reisenauer
5f1e8b8278 hide struct from user
Hiding the struct from user should protect from accidentally modifying
the mix channel. This could cause serious errors down the road.
2016-04-29 23:43:21 -07:00
Joshua Reisenauer
91f1f324c0 First stage of audio API update
Look over changes and give feedback please.
2016-04-29 23:00:12 -07:00
Ray
eb36c351cf Merge pull request #110 from kd7tck/develop
quick fix (module audio support)
2016-04-27 09:09:31 +02:00
Joshua Reisenauer
f707c1ca46 this should work 2016-04-27 00:02:11 -07:00
Joshua Reisenauer
299ae7a4bd new trace logs and optimizations 2016-04-26 16:50:07 -07:00
Joshua Reisenauer
3104d3d6cd small fix for streaming
There is still an issue where audio will cut off after a brief moment
2016-04-25 22:18:49 -07:00
Joshua Reisenauer
04d9deac92 setting up openal 2016-04-25 20:05:03 -07:00
Joshua Reisenauer
f12754b01f quick fix
Boolean errors
2016-04-25 18:40:19 -07:00
Ray
f9bbce0da7 Merge pull request #109 from kd7tck/develop
Added proto version of jar_xm
2016-04-25 09:32:14 +02:00
Joshua Reisenauer
62087d21cc updated jar_xm 2016-04-24 23:44:49 -07:00
Joshua Reisenauer
89a84a621b implement 2016-04-24 22:04:31 -07:00
Joshua Reisenauer
1c370f5a17 cleaned up calculations 2016-04-24 22:00:40 -07:00
Joshua Reisenauer
cb05c51911 tabs to spaces fix 2016-04-24 18:18:18 -07:00
Joshua Reisenauer
ec2cbaa5eb Added proto version of jar_xm
This is an early draft, needs lots of work. Still need to figure out way
to calculate total length of song. This is hard because xm tracks stream
out zeros when done, only position in track can be found. Position does
not give any direct value of how much more time is left. I think that by
setting the loop count to 1 and seeking until the end I can total up the
number of samples and come up with a length.
2016-04-24 15:25:48 -07:00
raysan5
173529e048 Oculus SDK 1.3 + GLFW3 sample -NOT WORKING- 2016-04-23 11:29:19 +02:00
raysan5
9639b14e1b Reduce PCM buffer size for Android to avoid stalls 2016-04-17 14:48:20 +02:00
raysan5
17eefed08f Improved gestures system 2016-04-17 11:36:40 +02:00
raysan5
2e5d898443 Corrected bug with old FBO struct 2016-04-17 11:25:04 +02:00
raysan5
6b5e18e6bf Make mouse inputs available on Android for...
... easy code porting, transalating them to touches and gestures
internally.

Removed function SetCustomCursor(), it can be managed by the user.
2016-04-17 11:19:32 +02:00
raysan5
0da88ac5c5 Updated template game library name 2016-04-17 11:11:48 +02:00
raysan5
c8a30b262d Updated gestures example 2016-04-17 11:11:23 +02:00
raysan5
284eaf1576 Use Depth Texture on OpenGL 3.3 2016-04-10 19:38:57 +02:00
raysan5
c1e49d2b13 Removed function
I decided it is redundant and could be confusing (when mixed with 3D
drawing). It's not KISS.
2016-04-08 12:00:29 +02:00
raysan5
cde2c1aa6d Added depth drawing shader
NOTE: It requires a depth texture as input, it should be configured on
rlgl, by default RenderTexture (fbo) uses Depth Renderbuffer instead of
Depth Texture. Check rlglLoadRenderTexture()
2016-04-08 00:21:21 +02:00
raysan5
aa22d97983 Simplified texture flip and added comments 2016-04-07 13:31:53 +02:00
raysan5
4b51248372 Review shader and add comments 2016-04-07 12:43:45 +02:00
raysan5
1d545449bb Reviewed shaders and added comments 2016-04-07 12:32:32 +02:00
raysan5
78b502b0bf Folders rename for consistency on shaders version 2016-04-07 11:48:09 +02:00
raysan5
3b67a4cfba Update stb libs to latest version 2016-04-06 17:45:25 +02:00
Ray
1a2a44200a Merge pull request #108 from LelixSuper/develop
Fix Makefile files
2016-04-06 17:12:03 +02:00
LelixSuper
9361615786 Fix Makefile files
I've added .PHONY targets and fixed "clean" recipe.
2016-04-06 13:21:29 +02:00
raysan5
0133917bf9 Correct detail 2016-04-04 01:15:43 +02:00
Ray
b6cec214bd Unified internal shader to only one
Only defaultShader required, set default value for vertex color
attribute if not enabled and fragColor uniform
2016-04-03 20:14:07 +02:00
raysan5
a66c8531d6 Some code simplifications 2016-04-03 18:31:42 +02:00
Ray
37cc45a0a8 Merge pull request #107 from LelixSuper/develop
Cleaning of Makefile files
2016-04-03 18:20:04 +02:00
LelixSuper
a04a7b6ea5 Fix cleaning recipies for GNU/Linux 2016-04-03 16:07:44 +02:00
LelixSuper
f2f4079411 Remove recipes of GLEW from Makefile (not used any more) 2016-04-03 16:05:23 +02:00
LelixSuper
565b1089bd Remove duplicate code 2016-04-03 15:58:44 +02:00
raysan5
06a8d7eb06 Remove old postprocessing system 2016-04-01 10:39:33 +02:00
raysan5
108055cd62 Updated example to new render to texture system 2016-03-30 20:19:46 +02:00
raysan5
66b096d978 Added support for render to texture (use RenderTexture2D)
Now it's possible to render to texture, old postprocessing system will
be removed on next raylib version.
2016-03-30 20:09:16 +02:00
raysan5
1136d4222f Setting up for raylib 1.5.0 2016-03-28 01:18:40 +02:00
raysan5
136408d8b8 Corrected bug on bounding box
if mesh is not loaded properly it breaks the game!
2016-03-27 19:42:57 +02:00
raysan5
ee9bf76ae9 Remove old screenshot 2016-03-27 19:03:55 +02:00
raysan5
a3f16c8459 Improved 2d camera system -IN PROGRESS- 2016-03-27 18:34:05 +02:00
raysan5
956a6e6f77 Corrected bug and comments on model unloading 2016-03-27 18:34:05 +02:00
raysan5
8b7ca8b670 Review comments 2016-03-27 18:34:05 +02:00
Ray
35ee4e52c8 Merge pull request #105 from victorfisac/develop
Fix spacing and some comments
2016-03-24 12:25:56 +01:00
victorfisac
ea7afc8ec8 Fix spacing and some comments 2016-03-23 22:47:39 +01:00
Ray
db3dd9d200 Merge pull request #104 from victorfisac/develop
Physac redesign complete
2016-03-23 16:39:24 +01:00
victorfisac
60223a358b Physac redesign (3/3)
Finally, physics update is handled in main thread using steps to get
accuracy in collisions detection instead of moving it to a new thread.

Examples are finished as simple and clear as I could. Finally, physac
module is MORE simpler than in the first version, calculation everything
by the same way for both types of physic objects.

I tryed to add rotated physics a couple of times but I didn't get
anything good to get a base to improve it. Maybe for the next version...

No bugs or strange behaviours found during testing.
2016-03-23 15:50:41 +01:00
victorfisac
c453ac8265 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-03-23 15:38:04 +01:00
raysan5
269b120104 Review Android button inputs 2016-03-21 20:15:11 +01:00
raysan5
584e74c676 Corrected bug on touch position 2016-03-20 16:48:23 +01:00
raysan5
fa78023aa4 Understand mouse as touch in web 2016-03-20 16:28:59 +01:00
raysan5
ebc2b9a286 Improved windows resizing system...
...despite not being enabled on GLFW3
2016-03-20 14:20:42 +01:00
raysan5
5e45c3c824 Redesign to work as standalone
Redesigned to work as standalone and support fordward-compatible context
(shaders review)
2016-03-20 13:39:27 +01:00
Ray
e2ba22ec59 Improved 2D-3D drawing
Depth test disabled for 2D and only used on 3D; consequently LINES vs
TRIANGLES vs QUADS buffers drawing order maters... but blending also
works ok.
2016-03-17 13:51:48 +01:00
Ray
49df957058 Add support for multiple gamepads on RPI 2016-03-17 12:54:36 +01:00
Ray
95c1bf9544 Removed previous change that introduced a bug 2016-03-16 19:10:19 +01:00
Ray
db4585b3e2 Improved gamepad support
Now it works ok also in RaspberryPi
2016-03-16 17:52:09 +01:00
Ray
d6bc7b8877 Reset pointCount for gestures 2016-03-16 17:51:21 +01:00
Ray
ee52b13ae6 Corrected bug on GetCollisionRec() 2016-03-16 17:50:51 +01:00
Ray
d0e26247f4 Merge pull request #103 from victorfisac/develop
physac module redesign (2/3)
2016-03-16 17:28:47 +01:00
victorfisac
0caf925d5d Updated headers 2016-03-16 12:48:30 +01:00
victorfisac
dc68205a18 Updated and improved physac examples 2016-03-16 12:46:12 +01:00
victorfisac
7128ef686d physac module redesign (2/3)
physac module base almost finished. All collisions are now resolved
properly and some force functions was added.

COLLIDER_CAPSULE removed for now because in 2D everything is composed by
rectangle and circle colliders...

The last step is move physics update loop into another thread and update
it in a fixed time step based on fps.
2016-03-16 12:45:01 +01:00
victorfisac
d728494099 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-03-16 12:40:08 +01:00
Ray
5bcda7bf15 Merge pull request #102 from LelixSuper/develop
Fix examples and templates compiling on GNU/Linux
2016-03-13 19:31:36 +01:00
LelixSuper
9e7a3b7017 Remove GLEW library and uncomment other GNU/Linux dependences 2016-03-13 19:26:12 +01:00
LelixSuper
530e520727 Convert tabs to spaces when it is possible in Makefile files 2016-03-13 14:01:12 +01:00
LelixSuper
2e3e62a413 Raname all makefile files to "Makefile"
I've renamed all makefile files to "Makefile" because they appear in the first files.
2016-03-12 20:01:46 +01:00
LelixSuper
4d8f18e00b Add a missing library for compiling on GNU/Linux
I've added "-ldl" library, it's necessary to compile the project.
2016-03-12 19:39:13 +01:00
LelixSuper
ea8363a3b0 Update "libraries" and "includes" section
I've cleaned the GNU/Linux compilation, now you can compile without useless parameters.
2016-03-12 19:08:54 +01:00
LelixSuper
c5931c75c6 Update GNU/Linux compilation
If you have raylib on standard directories ("/usr/local/include/raylib/raylib.h" for the header and "/usr/local/lib/libraylib.a" for raylib library) you can compile without edit the makefile.
2016-03-12 18:49:28 +01:00
LelixSuper
d07e4f44f1 Edit the default target to conform to GNU standards
I've changed all default target names with 'all'. Here there is the explanation: <https://www.gnu.org/prep/standards/standards.html#Standard-Targets>.
2016-03-12 18:40:52 +01:00
Ray
dcabb49244 GESTURE SWIPE
change name variable
2016-03-09 10:15:28 +01:00
Ray
18a13679fd Review GuiToggleButton() 2016-03-07 09:38:55 +01:00
raysan5
6ee5718b2e Improved function GetKeyPressed()
To support multiple keys (including function keys)
2016-03-06 19:30:16 +01:00
raysan5
d0e7195a16 Added new functions to draw text on image 2016-03-06 19:28:58 +01:00
raysan5
7053724fd6 Default style tweak 2016-03-06 12:24:44 +01:00
raysan5
c9d22c7a14 Redesign to use Material type -IN PROGRESS-
Requires Shader access functions review
2016-03-06 02:05:16 +01:00
Ray
893facdf6d Merge pull request #101 from victorfisac/develop
Redesigned physac module (IN PROGRESS)
2016-03-05 20:16:52 +01:00
victorfisac
78e4772f21 Fixed physac header little mistake 2016-03-05 19:36:40 +01:00
victorfisac
305efcf5ad Redesigned physics module (IN PROGRESS)
physac modules is being redesigned. Physics base behaviour is done and
it is composed by three steps: apply physics, resolve collisions and fix
overlapping.

A basic example is currently in progress. The next steps are try to add
torque and unoriented physic collisions and implement physics basic
functions to add forces. Rigidbody grounding state is automatically
calculated and has a perfect result. Rigidbodies interacts well with
each others.

To achieve physics accuracy, UpdatePhysics() is called a number of times
per frame. In a future, it should be changed to another thread and call
it without any target frame restriction.

Basic physics example has been redone (not finished) using the new
module functions. Forces examples will be redone so I removed it from
branch.
2016-03-05 17:05:02 +01:00
raysan5
0d911127d7 Split mesh generation from model loading 2016-03-05 16:17:54 +01:00
raysan5
5ea18b9426 Support 2d camera system -IN PROGRESS- 2016-03-05 15:40:08 +01:00
raysan5
d8bd8634ab 3d Camera: Added support for field-of-view Y 2016-03-05 13:05:45 +01:00
Ray
dcbf2a0e0c Replaced tabs by spaces 2016-03-03 13:24:56 +01:00
raysan5
fffbf48dec Added support for Nearest-Neighbor image scaling
Specially useful on default font scaling
2016-03-02 19:22:55 +01:00
raysan5
a167067cbd Security check for unsupported BMFonts
- Check if first character is the expected Space char (32)
- Check if characters are ordered in definition file (.fnt)
2016-03-02 18:35:30 +01:00
raysan5
4476a9e241 Review rlglUnproject() system 2016-03-02 17:13:31 +01:00
raysan5
4011c13d4b Updated BoundingBox collision detections 2016-03-01 20:54:02 +01:00
raysan5
6106ab8a2e Added color to DrawBoundigBox() 2016-03-01 20:26:01 +01:00
raysan5
1674465bdc Adjust buffers usage
- Removed DrawQuad() function
- DrawBillboard() uses DrawBillboardRec()
- DrawPlane() uses RL_TRIANGLES
- DrawRectangleV() uses RL_TRIANGLES, that way, [shapes] module uses
only TRIANGLES buffers.
2016-03-01 19:00:12 +01:00
raysan5
8ca6f8c6ec Do not free model mesh 2016-03-01 15:37:01 +01:00
raysan5
04caf1c262 Corrected memory leak 2016-03-01 15:36:45 +01:00
victorfisac
68088bc5be Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-02-26 14:28:05 +01:00
Ray
0dfc7fffff Removed a couple of TODOs 2016-02-23 00:57:50 +01:00
Ray
75a73d9417 Merge pull request #88 from raysan5/develop
Develop branch integration
2016-02-21 16:51:14 +01:00
raysan5
d042ed52fa Updated 2016-02-21 16:19:40 +01:00
raysan5
2cc05e5e92 Corrected typo 2016-02-21 16:19:31 +01:00
raysan5
2a058338f3 Updated some files 2016-02-21 14:34:11 +01:00
Ray
4d2b8471fa Update README.md 2016-02-21 14:17:33 +01:00
Ray
26252c4c1d Merge pull request #87 from raysan5/develop
Integrate Develop branch
2016-02-21 12:23:05 +01:00
Ray
c70d8acb33 Update README.md 2016-02-21 12:22:44 +01:00
Ray
16dd57747c Merge pull request #86 from raysan5/master
Small change from master to develop
2016-02-21 12:19:48 +01:00
Ray
24ba22a43a Update ROADMAP.md 2016-02-21 12:18:36 +01:00
Ray
2da3c6d288 Merge pull request #85 from raysan5/develop
Integrate Develop branch
2016-02-21 12:14:39 +01:00
Ray
c7486a0339 Update README.md 2016-02-21 12:13:36 +01:00
raysan5
c86b3d0c05 Updated 2016-02-21 02:34:07 +01:00
Ray
2d1b2efb92 Merge pull request #84 from raysan5/develop
Integrate Develop branch
2016-02-21 02:30:28 +01:00
raysan5
9ec4776812 Corrected typo 2016-02-21 02:29:11 +01:00
raysan5
2f08845d1e Updated docs 2016-02-21 02:27:34 +01:00
raysan5
9f5efeb309 Update makefiles 2016-02-21 00:44:55 +01:00
raysan5
182054b662 Updated for web 2016-02-20 23:49:21 +01:00
raysan5
a8bb9b6b19 Updated image to POT 2016-02-20 22:43:10 +01:00
raysan5
84252f9b70 Uploaded raylib bitcode library (PLATFORM_WEB) 2016-02-20 20:29:20 +01:00
raysan5
89409817b5 Games makefile 2016-02-20 20:25:10 +01:00
raysan5
7b360d8579 Reorganized games folder
Simplified to match raylib installer package folder structure
2016-02-20 20:25:01 +01:00
raysan5
83459159f4 Corrected compiler complaint 2016-02-20 19:01:41 +01:00
Ray
4b6e6d4dd4 Merge pull request #83 from raysan5/develop
Develop branch integration
2016-02-20 01:09:47 +01:00
Ray
954ced21a4 Merge branch 'master' into develop
# Conflicts:
#	src/gestures.c
#	src/makefile
2016-02-20 01:08:43 +01:00
Ray San
98c60838fe Reviewed RPI inputs 2016-02-19 19:57:25 +01:00
Ray
09f28d0f57 Working on RPI gamepad support 2016-02-19 00:16:16 +01:00
Ray San
8aab52aeda Redesigned RPI input system -IN PROGRESS- 2016-02-18 14:05:48 +01:00
Ray
afd2ffb74a Updated gestures module
Using normalized [0..1] input points
2016-02-17 13:00:48 +01:00
raysan5
825e42dc00 Updated logo size on t-shirt 2016-02-14 12:25:32 +01:00
raysan5
b99b21fa38 Added raylib promotional T-shirt design 2016-02-14 01:14:49 +01:00
raysan5
0018522031 Updated show-logo and start reviewing RPI inputs 2016-02-13 19:14:22 +01:00
raysan5
30fafb77db Updated fullscreen issue comment 2016-02-13 17:39:38 +01:00
raysan5
ed19064405 Reviewed physics module
A deeper revision required, not clear enough for the user
Key: Create a PhysicObjects pool
2016-02-13 17:09:53 +01:00
raysan5
94c92a58a1 Some tweaks 2016-02-13 17:08:09 +01:00
raysan5
9c9aeaef47 Added web template (shell) for html5 games 2016-02-13 12:21:29 +01:00
raysan5
cbbe948529 Some code tweaks 2016-02-12 19:02:23 +01:00
raysan5
823abf666e Reviewed code TODOs 2016-02-12 12:22:56 +01:00
raysan5
685273675b Improved LoadHeightmap() 2016-02-11 15:51:04 +01:00
raysan5
15cd4dce4e Updated examples to make them clearer 2016-02-11 14:56:27 +01:00
raysan5
9cbfcbb820 Add a note about an issue 2016-02-11 14:56:00 +01:00
raysan5
fca83c9ff8 Solve bug on matrix multiply order for scale and rotation 2016-02-11 14:27:18 +01:00
raysan5
54c7fa491e Added 6 new examples 2016-02-11 12:26:45 +01:00
Ray
c69ce1d750 Updated comments 2016-02-10 13:54:32 +01:00
Ray
84a6724b33 Fixed a bug 2016-02-10 11:24:02 +01:00
Ray
a847df921f Reviewed gestures module 2016-02-10 10:31:06 +01:00
Ray
687fe2c3c7 Updated 2016-02-08 09:06:26 +01:00
Ray
e98ea900cf Reviewing gestures module (IN PROGRESS) 2016-02-08 09:06:23 +01:00
Ray
2ef9552454 WARNING message shortened 2016-02-08 09:06:20 +01:00
Ray
6a392f0eb2 GLAD not used on HTML5 2016-02-08 09:06:16 +01:00
raysan5
c00062655f GLAD only available on PLATFORM_DESKTOP 2016-02-07 11:35:36 +01:00
raysan5
4ad375a378 Code review
Most of this code was developed by students, it requires some additional
review to be used for teaching.
2016-02-07 11:23:12 +01:00
raysan5
4a3509f06d Added game sources: Skully Escape
This game was developed for King GameJam 2015
2016-02-07 11:09:12 +01:00
raysan5
4fae37bb88 Removed floppy game, available as sample 2016-02-07 11:08:31 +01:00
Ray
646f1c3f71 Some formating tweaks 2016-02-03 17:45:28 +01:00
Ray
df5c64d0be Functions parameters reorganize: Axis and Angle
sin(), cos() functions cached and replaced by float c99 versions sinf(),
cos()
2016-02-02 18:41:01 +01:00
Ray
65ecde1e75 Cleaned code a little bit 2016-02-02 17:59:13 +01:00
Ray
728e1715cc Redesigned gestures system...
...and improved mouse gestures support
Some testing still required...
2016-02-02 16:43:42 +01:00
Ray
e484d58d9c Uploaded gamejam game sources 2016-01-31 15:31:51 +01:00
Ray
708e8c558c Added a bunch of sample games
Those games have been developed by students and ported to a common base
template. Some of them still require some review to be consistent with
each other (formatting, variables naming, code structure...)
2016-01-29 07:26:06 -08:00
Ray
4ec0ac89cd Merge pull request #82 from procedural/disable-cursor
Disable cursor feature
2016-01-29 06:57:42 -08:00
Ray
196bda0597 Merge pull request #81 from procedural/fix-shader-versions
Fix shader versions
2016-01-29 06:53:05 -08:00
Ray
bf32081fa9 Merge pull request #80 from procedural/fix-compiling-on-linux
Fix raylib compiling on Linux
2016-01-29 06:52:41 -08:00
Constantine Tarasenkov
13925f7bd4 Add functions to disable and enable cursor 2016-01-29 09:09:18 +03:00
Constantine Tarasenkov
e6ad166ae3 2016-01-29 08:02:53 +03:00
Constantine Tarasenkov
db5493b783 Fix shader versions 2016-01-29 03:47:43 +03:00
Constantine Tarasenkov
5d6475c93b Fix raylib compiling on Linux 2016-01-29 03:22:51 +03:00
raysan5
ac475f46b9 Added touch points id to gestures
Required by ProcessGestureEvent()
2016-01-28 10:03:37 +01:00
Ray
c21ca3ca1a Updated screenshots 2016-01-26 20:26:46 +01:00
raysan5
99f99bea47 Simplified shader matrix uniforms 2016-01-25 13:54:09 +01:00
raysan5
d0ff78e7f4 Move Light struct to example 2016-01-25 13:39:23 +01:00
raysan5
3113a20390 Added bounding box calculation 2016-01-25 11:12:31 +01:00
raysan5
41959eeae1 Added support for mouse gestures (need testing)
Mouse input is interpreted as touches to allow mouse gestures
detection... and get an unified inputs system for all platforms!
2016-01-24 19:17:08 +01:00
raysan5
08da91047e Some code tweaks 2016-01-23 13:22:13 +01:00
raysan5
6e9d3eb0f9 Review comments 2016-01-23 12:37:42 +01:00
Ray
ed674d865b Merge pull request #79 from victorfisac/develop
Fixed hold gesture detection
2016-01-23 11:16:59 +01:00
victorfisac
233f7611da Fixed hold gesture detection
- Fixed gestures hold detection.
- Improved hold state detection for little touch position increments
(sensitivity).
2016-01-22 17:07:54 +01:00
victorfisac
f874fdc1ad Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-01-22 15:36:56 +01:00
raysan5
4e57bd1f18 Replaced GLEW by GLAD
Removed GLEW external dependency, now it works with GLAD
Kept GLEW path, just in case... detected weird behaviour when testing
with gDEBugger
2016-01-22 01:22:45 +01:00
raysan5
455be7f6f6 Try to implement GLAD support 2016-01-21 13:52:09 +01:00
raysan5
23d66e9b6f Move extensions loading to core module 2016-01-21 12:24:35 +01:00
raysan5
882e2abee1 Corrected bug 2016-01-21 12:24:12 +01:00
raysan5
68ba34c17b Updated struct types 2016-01-21 01:03:43 +01:00
Ray
a286d9166b Merge pull request #78 from victorfisac/develop
Added ray-sphere collision detection
2016-01-20 19:34:34 +01:00
victorfisac
fcd30c5649 Added ray-sphere collision detection 2016-01-20 19:28:47 +01:00
victorfisac
8ae0da1fa1 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-01-20 19:26:52 +01:00
victorfisac
25f5995be0 Revert "Added ray-sphere collision detection"
This reverts commit 423a45ac85.
2016-01-20 19:26:30 +01:00
raysan5
cf6c6fefd7 Review some function names for consistency with raymath 2016-01-20 19:23:58 +01:00
raysan5
c5663ca015 Some formatting tweaks 2016-01-20 19:09:48 +01:00
raysan5
51c0b61a43 Updated to latest version of stb libs 2016-01-20 18:48:52 +01:00
raysan5
634f8f0d0f Adapted easings as single header and inline functions 2016-01-20 18:20:36 +01:00
raysan5
efa1c96d19 Adapted raymath as single header library
Added support for single header implementation and also inline functions
support
2016-01-20 18:20:05 +01:00
victorfisac
423a45ac85 Added ray-sphere collision detection
- Added simple ray-sphere collision detection.
- Added extra function with extended parameters to obtain collision
point vector.
- Fixed bounding box calculations init values (were causing compiling
errors).
2016-01-20 16:01:59 +01:00
victorfisac
dc385ba4ec Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-01-20 15:59:32 +01:00
Ray
c8e8c0a002 Merge pull request #76 from kd7tck/develop
standalone raymath
2016-01-20 15:47:48 +01:00
victorfisac
c04752c0e4 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-01-20 13:48:00 +01:00
Joshua Reisenauer
ae87a35f6e standalone raymath
look over for errors
2016-01-19 15:00:48 -08:00
raysan5
29c618a35e Added some functions (incomplete) 2016-01-19 20:27:41 +01:00
raysan5
036e77939f Updated for raylib v1.4
Moved building information to raylib github Wiki page
2016-01-19 11:00:10 +01:00
raysan5
de7bddb8df Updated with progresses 2016-01-19 10:59:19 +01:00
raysan5
fd05d3e353 Rename VertexData struct to Mesh
Reviewed vertex type variables
2016-01-18 13:36:18 +01:00
raysan5
a640503119 Corrected literal value 2016-01-18 13:33:12 +01:00
raysan5
f24fd14814 Note on RPI inputs 2016-01-18 12:05:10 +01:00
raysan5
f98c4dc82b Corrected bug on fonts loading 2016-01-18 12:04:54 +01:00
Ray
f1d16386b6 Update shaders_basic_lighting.c 2016-01-17 02:13:08 +01:00
Ray
144681fc0f Rename lighting_blinn_phong.c to shaders_basic_lighting.c 2016-01-17 02:11:06 +01:00
raysan5
03c82605a0 Replaced deprecated texture2D() function by texture() 2016-01-16 12:53:48 +01:00
raysan5
183795b8aa Review literals type 2016-01-16 12:52:55 +01:00
Ray San
91e00431d4 Corrected some bugs 2016-01-14 09:19:56 +01:00
raysan5
3b4d8442e0 Corrected some float values 2016-01-13 19:30:35 +01:00
raysan5
4f0165f32d Example reviewed (more clear now) 2016-01-13 18:11:11 +01:00
raysan5
fb6ef2c2f4 Vertex shaders optimization 2016-01-13 17:13:28 +01:00
Ray
bb49102a4b Merge pull request #73 from victorfisac/develop
World to screen conversion and little review
2016-01-11 19:47:17 +01:00
victorfisac
4cc394c376 Added world to screen conversion
- Added function WorldToScreen(...).
- Added world to screen example.
- Review GetMouseRay() comment.
- Removed deprecated lighting functions from raylib header.
2016-01-11 15:59:26 +01:00
victorfisac
8eb6fc5612 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-01-11 15:09:23 +01:00
raysan5
5e7686695f Review Light/Material system
Simplified for the user (more intuitive and clear)
Removed lighting module dependency
2016-01-11 13:29:55 +01:00
raysan5
e5a56fa985 Change drawing order to avoid artifacts with...
... transparent elements
2016-01-11 11:59:15 +01:00
Ray
f10835cf09 Merge pull request #72 from victorfisac/develop
Fixed small glitch on zoom-in
2016-01-10 23:01:39 +01:00
victorfisac
a5e79b7663 Fixed small glitch on zoom-in with mouse wheel
It seems that now works. Tested all free camera features with some
directions and positions and no unexpected behaviours detected. I don't
know if those lines are really indispensable.
2016-01-08 02:53:26 +01:00
victorfisac
b7461846ab Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-01-08 02:47:44 +01:00
raysan5
40119949cb Ignore some files 2016-01-07 17:12:54 +01:00
Ray
21229aa3f6 Merge pull request #71 from victorfisac/develop
Implemented ray trace from mouse position
2016-01-07 17:04:56 +01:00
victorfisac
1793f2c3b8 Added collision check between ray and box
- Added CheckCollisionRayBox() function.
- Updated and improved core 3d picking example (currently working as
expected).
2016-01-07 16:18:24 +01:00
victorfisac
4a637191f2 Implemented ray trace from mouse position
- Fixed GetMouseRay() function.
- rlglUnproject() unused.
2016-01-07 15:34:49 +01:00
victorfisac
8991573984 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-01-06 19:19:31 +01:00
raysan5
7f2e67e924 Simplified MatrixMultiply() function 2016-01-06 17:22:24 +01:00
Ray
1ce010c7d4 Merge pull request #70 from victorfisac/develop
Fixed Android bug and added physic buttons inputs
2016-01-06 17:16:03 +01:00
victorfisac
fe0cf8f9a9 Added some comments and fixed spaces 2016-01-05 13:58:20 +01:00
victorfisac
32508f6db1 Fixed Android lock screen bug
- Fixed Android locking screen bug. OnDestroy() was called when locking
screen.
- Power button input must be handled by OS.
- AndroidManifest.xml is affected by configChanges="screenSize".
- Updated library header for android template.
2016-01-05 12:21:40 +01:00
victorfisac
1c23edd1e5 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-01-04 21:03:30 +01:00
victorfisac
ea50092356 Add Android physic buttons input detection
- Added functions for detect when pressed, during down and when
released.
- Added defines for back, menu, volume up and down button numbers.
2016-01-04 21:00:20 +01:00
raysan5
891c4a458a Matrix variables renaming 2016-01-04 20:02:57 +01:00
victorfisac
0c539cbf32 Merge remote-tracking branch 'refs/remotes/raysan5/develop' into develop 2016-01-04 19:28:52 +01:00
raysan5
70d405b41b Added functionality: Storage values
Two new functions added to save/load values as binary data:
- StorageSaveValue()
- StorageLoadValue()
2016-01-04 15:12:34 +01:00
raysan5
95da97fa74 Fixed bug: rlglGenerateMipmaps() 2016-01-04 15:09:44 +01:00
Ray
546c727520 Merge pull request #69 from victorfisac/develop
Improved lighting and physac engine modules and added new example
2016-01-04 12:40:54 +01:00
victorfisac
1656d17b22 Fixed little bug in lighting blinn phong example 2016-01-03 18:24:20 +01:00
victorfisac
8fa5c9dce2 Added rigidbody force example image 2016-01-03 18:05:09 +01:00
victorfisac
b8b34a1b26 Added new physics example
New physics example to see AddForceAtPosition() behaviour applied to 5
rigidbodies.
2016-01-03 17:58:16 +01:00
victorfisac
6608c5a8a7 Fixed physics basic example example name 2016-01-03 17:54:06 +01:00
victorfisac
a299bc289b Improved and added functions to physac engine module
- Improved physics calculations.
- Added AddForceAtPosition function (added to all enabled rigidbodies).
- Updated raylib header.
2016-01-03 17:53:29 +01:00
victorfisac
e0d8cceb65 Fixed lighting engine module newlines at end of file 2016-01-03 17:52:18 +01:00
raysan5
3a739c38c5 Updated Android project template 2016-01-03 13:01:42 +01:00
raysan5
d32feaa668 Reviewed Android inputs and gestures system
Corrected Android processing for some inputs (BACK button, VOLUME
buttons)
Redesigned Gestures system (some work still required)
SetEnabledGestures() - Only support desired gestures (requires some
review)
2016-01-03 13:01:21 +01:00
raysan5
f269fb46ea BUG: Gestures lib was processed two times 2016-01-03 12:57:44 +01:00
raysan5
63ea3449d3 Reorganized folders 2016-01-02 11:14:24 +01:00
raysan5
e97438114f Reviewed code 2016-01-02 11:14:04 +01:00
raysan5
a5492dd5fc Corrected compilation flag...
...to avoid .mem file creation
2016-01-02 11:00:23 +01:00
raysan5
fa057f512f Improved fonts support
Added LoadBMFont() to load AngelCode fonts (.fnt)
Implemented LoadTTF() to load .ttf fonts (crappy packaging)
2016-01-02 10:45:51 +01:00
raysan5
55f0abbe99 Updated to latest version 2016-01-02 10:44:03 +01:00
raysan5
9f5c5dfff4 Added module: easings (header only) 2016-01-02 10:43:17 +01:00
raysan5
802f29fb0e Eat Android Back key to avoid crash 2016-01-02 10:42:43 +01:00
raysan5
8a29e5eb5e Updated version to avoid warning 2016-01-02 10:42:01 +01:00
raysan5
b804f38150 Small code tweaks 2016-01-02 10:41:37 +01:00
raysan5
46ea556593 Gestures system is automatically Init and Updated 2015-12-31 13:34:45 +01:00
raysan5
5335f262be Updated makefiles 2015-12-31 13:34:03 +01:00
Ray
b11cda959d Update lighting_blinn_phong.c 2015-12-30 13:46:01 +01:00
Ray
8c8e5bb7c8 Update and rename physics.c to physac.c 2015-12-30 13:43:53 +01:00
Ray
59cf0f6a42 Update and rename physics.h to physac.h 2015-12-30 13:42:59 +01:00
raysan5
5659249dfa Some tweaks and details review 2015-12-30 13:35:03 +01:00
raysan5
b894a78385 Reviewed function GetCurrentTime() on WIN32 2015-12-30 13:34:45 +01:00
raysan5
3b45336929 Reviewed function: CheckCollisionCircleRec() 2015-12-30 13:34:00 +01:00
raysan5
da28cff0f6 Added function: SubText()
Useful to get a piece of text, could be used for text typing animations
2015-12-30 13:33:26 +01:00
raysan5
5dbb93dbb4 Added function: ImageDither()
Corrected some code details
2015-12-30 13:32:41 +01:00
Ray
6cb0603fbe Merge pull request #67 from victorfisac/develop
Fixed Android compilation with 1.3 updates
2015-12-30 13:24:39 +01:00
victorfisac
8e30bd1f69 Fixed and improved android template
- Added gestures module functions.
- Fixed screen tap detection.
2015-12-30 04:43:24 +01:00
victorfisac
6e5ceaa30d Fixed Android compilation with 1.3 updates
- Fixed Android MakeFile adding gestures module.
- Fixed Android project template functions names.
- Updated compiled library and header.
2015-12-30 03:12:52 +01:00
Ray
e8c79f53a6 Merge pull request #66 from victorfisac/develop
New matrix location points, lighting and physics engine modules with examples
2015-12-24 12:42:48 +01:00
victorfisac
e683fe88b9 Added physics engine-module and example
- Added new physics engine-module with four new data types: Physics,
Transform, Rigidbody and Collider. This library contains functions to
apply physics calculations to a position vector calculating collisions
automatically.

- Fixed some writing mistakes of lighting module.
2015-12-21 21:12:35 +01:00
victorfisac
1bcb5ddd50 Added lighting engine module
- New lighting engine module which contains new data types Light and
Material. These data types and functions facilitates making a basic 3D
iluminated program with a light and a model.

- Added lighting engine module example (currently included in raylib.h;
it might be compiled by separate and include lighting.h in game source C
file).

- Corrected some opengl defines control structures and added some TODO
to fix raylib-opengl 1.1 source build (note: now source can be compiled
without errors, but rlglReadPixels() won't work properly).

Note: most of functions of phong version 330 shader are not in v100
shaders, so I couldn't write a version 100 phong shader. These functions
are included from version 150.
2015-12-21 17:25:22 +01:00
victorfisac
4db2da9185 Added new matrix location points and extra functions
- New model and view transformation matrix added, useful for shaders.
Modelview matrix not deleted to keep opengl 1.1 pipeline compatibility.

- New extra function added DrawModelWiresEx() to set a rotation and
scale transformations to a wire model drawing.

- Other writing and little audio.c bug fixed.
2015-12-21 16:42:13 +01:00
raysan5
1b39b2e261 Added BeginDrawingEx()
BeginDrawing() function with extended parameters
2015-12-14 23:30:27 +01:00
raysan5
f144b6bae4 MeasureTextEx() - Added support for multi-line size measure 2015-12-09 20:57:50 +01:00
raysan5
2bd7245508 DrawTextureRec() function review to allow flipped rectangle 2015-12-09 20:22:42 +01:00
raysan5
b62f7c3057 Corrected bug 2015-12-09 20:21:58 +01:00
raysan5
f4e455398c Small bug corrected 2015-12-03 13:45:06 +01:00
raysan5
85908befea Corrected bug on spritefont loading 2015-12-03 13:44:45 +01:00
Ray
a6f5a0339a Corrected bug 2015-11-09 13:13:26 +01:00
Ray
c17c1ccaea Corrected html5 glfw3 bug
Mouse button values are inverted!
2015-11-05 13:42:18 +01:00
Ray
88e1fd9530 Added texture retrieval support on OpenGL ES 2.0
Updated functions:
Image GetTextureData(Texture2D texture);
void *rlglReadTexturePixels(Texture2D texture);
2015-11-05 12:32:47 +01:00
Ray
2fa7e00f16 Variables initialization 2015-11-05 12:28:45 +01:00
Ray
5208d57f1e Corrected alpha issue on screenshots taken 2015-11-05 09:46:18 +01:00
Ray
76024b5036 Added some texture functionality (view details)
LoadTextureEx() - Simplified parameters
UpdateTexture() - Added, allows updating GPU texture data
2015-11-04 18:33:46 +01:00
Ray
002dacef40 Merge pull request #62 from kd7tck/develop
Added Alpha Numeric Mapping For Develop Branch
2015-11-03 16:44:21 +01:00
Ray
580c0a7296 Moved gestures touch functionality back to core
Required gestures module when compiling for Android and Web
2015-10-30 11:30:32 +01:00
Ray
67423ff64b Removed unneeded comment 2015-10-27 19:24:14 +01:00
raysan5
b135bcd422 Corrected minor bugs 2015-10-26 12:14:26 +01:00
Ray San
fb4105cf8a Corrected bug on web 2015-10-26 11:50:28 +01:00
Ray San
d1f099374c Added support for s3tc compression on web 2015-10-26 11:50:13 +01:00
Joshua Reisenauer
932396922d Added Alpha Numeric Mapping For Develop Branch
GLFW mappings.
2015-10-26 00:21:52 -07:00
Ray
afdf357fbe Added some image manipulation functions
Added (or completed functions):

Image ImageText(const char *text, int fontSize, Color color);
Image ImageTextEx(SpriteFont font, const char *text, int fontSize, int
spacing, Color tint);
void ImageFlipVertical(Image *image);
void ImageFlipHorizontal(Image *image);
void ImageColorTint(Image *image, Color color);
void ImageColorInvert(Image *image);
void ImageColorGrayscale(Image *image);
void ImageColorContrast(Image *image, float contrast);
void ImageColorBrightness(Image *image, int brightness);
2015-10-25 01:50:15 +02:00
Ray
8c117cfb57 Reviewed NPOT messages and usage 2015-10-24 11:19:04 +02:00
Ray San
f13b30d606 Feature: Line-break support for text 2015-10-21 18:24:44 +02:00
Ray San
165b3dd215 Add file required for image scaling 2015-10-21 18:24:12 +02:00
Ray San
d218534fff Feature: On desktop, center window on screen 2015-10-21 18:23:49 +02:00
Ray San
333fdf6b90 Corrected bugs and reviewed some functions 2015-10-20 19:59:08 +02:00
Ray San
625e4e2fb3 Revert "Corrected bugs and reviewed some functions"
This reverts commit 949e93f9fe.
2015-10-20 19:56:31 +02:00
Marc Palau
949e93f9fe Corrected bugs and reviewed some functions 2015-10-20 19:53:50 +02:00
raysan5
e9792ef771 Convert to UTF-8 2015-10-06 17:32:00 +02:00
raysan5
9bf411f580 Added a bunch of image manipulation functions:
Renamed functions (for coherence with new ones):
- ImageConvertToPOT() -> ImageToPOT()
- ImageConvertFormat() -> ImageFormat()

New functions added (IN PROGRESS):
- ImageCopy()
- ImageCrop()
- ImageResize() (Uses stb_image_resize.h)
- ImageDraw()
- ImageDrawText()
- ImageDrawTextEx()
- ImageFlipVertical()
- ImageFlipHorizontal()
- ImageColorInvert()
- ImageColorGrayscale()
- ImageColorContrast()
- ImageColorBrightness()
2015-10-06 17:30:03 +02:00
raysan5
11a8dacb0f Multiple code changes:
- Renamed function rlEnableFBO() -> rlEnablePostproFBO()
- Defined struct FBO
- Moved FBO creation to function: rlglLoadFBO()
- Reviewed rlglReadTexturePixels(), trying to support OpenGL ES -IN
PROGRESS-
2015-10-06 17:25:27 +02:00
raysan5
3bd7109d8b Reviewed GetCurrentTime() -IN PROGRESS-
Time measure on Windows platform done with:
QueryPerformanceCounter()
Testing required!
2015-10-06 17:21:04 +02:00
raysan5
9af10686b2 Added comments and more...
Corrected bug on defaultFont.size
Renamed funcs:
ImageConvertFormat() -> ImageFormat()
ImageConvertToPOT() -> ImageToPOT()
2015-10-06 17:17:53 +02:00
raysan5
c5377f4e05 Review CFLAGS for multiple platforms 2015-10-06 17:15:50 +02:00
raysan5
34db515acb Reviewed some comments and WritePNG() 2015-10-06 17:13:40 +02:00
Ray
6ffb3c72fb Solved bug with depth when drawing...
...shapes based on LINES, TRIANGLES and QUADS. Now the calling order of
the drawing functions is respected!
2015-09-21 12:48:43 +02:00
Ray
f582ab06ad Merge pull request #29 from procedural/linux-fixes
Fix compiling on Linux
2015-09-04 17:50:16 +02:00
Constantine Tarasenkov
7c36289768 Fix compiling on Linux 2015-09-04 15:38:14 +03:00
Ray
544df87a8e Corrected typo 2015-09-03 14:10:23 +02:00
Ray
77558eec0c Merge pull request #28 from raysan5/develop
Integrating Develop branch
2015-09-03 01:49:58 +02:00
raysan5
d05acb1b68 Updated comments 2015-09-03 01:28:13 +02:00
raysan5
ef1f9fe450 Added strdup() function replacement
strdup() is not a C99 function (it's POSIX), not available in emscripten
2015-09-03 01:27:49 +02:00
raysan5
4e0378ab7c Updated to raylib 1.3 2015-09-02 22:26:02 +02:00
raysan5
075f599abb Updated comments 2015-09-02 22:25:50 +02:00
raysan5
94d0e83207 Corrected crazy bug about model textures
On OpenGL ES it was set to use GL_CLAMP_TO_EDGE wrap mode for textures.
On LoadOBJ() texture coordinates were wrongly Y-flipped
2015-09-02 20:36:05 +02:00
raysan5
ab459bf418 Added some comments 2015-09-02 20:34:14 +02:00
raysan5
35f1ebf9f3 Corrected model filenames 2015-09-02 20:33:58 +02:00
raysan5
b1a90a7f91 Added some useful postprocessing shaders
Shaders come in two flavours:
- shaders/gl330: OpenGL 3.3+ (Windows, Linux, OSX)
- shaders/gles100:  OpenGL ES 2.0 (Android, RPI, HTML5)
2015-09-02 02:44:16 +02:00
raysan5
da5221910f Added getures module to Android source project 2015-09-02 02:42:15 +02:00
raysan5
50c5df0838 Added some comments 2015-09-02 02:41:55 +02:00
raysan5
a7a81ca749 Added example: box collisions 2015-09-02 02:41:21 +02:00
raysan5
4879106096 Reviewed to work on Raspberry Pi
[rlgl] Extensions strings loading was redone to avoid a Segmentation
Fault on Raspberry Pi
2015-09-02 01:08:41 +02:00
raysan5
e28fef6ee0 Reviewed examples 2015-09-02 01:07:16 +02:00
raysan5
9a578c5962 Added shaders examples resources 2015-09-02 01:06:55 +02:00
raysan5
0a345a6128 Updated comment... 2015-09-02 01:06:08 +02:00
raysan5
94a1fdc2ae Updated some comments 2015-09-01 23:15:26 +02:00
raysan5
acc322b3e1 Added new examples: SHADERS 2015-09-01 22:59:43 +02:00
raysan5
e5fe2c216e Added some comments to examples 2015-09-01 22:59:16 +02:00
raysan5
e93475d854 Merge branch 'master' into develop 2015-08-31 01:28:59 +02:00
Ray
858ccb350d Merge pull request #27 from raysan5/develop
Merged branch 'master' into develop and remerged to master
2015-08-31 01:27:47 +02:00
raysan5
7e568c8903 Merge branch 'master' into develop 2015-08-31 01:23:56 +02:00
Ray
60194753d7 Merge pull request #26 from raysan5/develop
Develop branch integration
2015-08-31 01:16:34 +02:00
raysan5
808aeabf4c Updated with latest changes 2015-08-30 17:46:52 +02:00
raysan5
32330801c9 Updates some examples 2015-08-30 17:46:37 +02:00
raysan5
535b9e606f Redesigned UpdateCamera() function
Splitted into:
UpdateCamera()             // Update only camera
UpdateCameraPlayer()   // Update camera and player position
2015-08-30 17:46:19 +02:00
raysan5
92bcf09c53 Redesigned SpriteFont struct 2015-08-30 17:45:05 +02:00
raysan5
aa982f80f5 Reviewed some comments 2015-08-30 17:44:47 +02:00
raysan5
d7e7ef6a7d Added some comments 2015-08-30 17:44:14 +02:00
raysan5
055d8927cc Small code tweaks 2015-08-29 20:20:28 +02:00
raysan5
8692c49511 Corrected bug on first person camera 2015-08-29 20:20:09 +02:00
raysan5
ecd6f77de7 New textures loading examples 2015-08-29 17:01:56 +02:00
raysan5
5cfd59258a Detected issue 2015-08-29 17:01:36 +02:00
raysan5
9dd20577cd Corrected bugs on DDS and PKM loading 2015-08-29 17:01:25 +02:00
raysan5
ea45223f1f New examples added 2015-08-28 18:07:39 +02:00
raysan5
12581c1721 Changed mail address by twitter user
Probably more useful...
2015-08-28 14:17:35 +02:00
raysan5
324259ef8e Remove crappy example 2015-08-28 14:17:03 +02:00
raysan5
773360caa3 Removed resources 2015-08-28 14:16:42 +02:00
raysan5
ca402e9d36 New examples added (with some resources) 2015-08-28 14:16:28 +02:00
raysan5
6ac5d3bc06 Remove file 2015-08-28 14:14:52 +02:00
raysan5
c52ba520ce Small tweaks 2015-08-28 14:14:29 +02:00
raysan5
322ca97c24 Review camera system 2015-08-28 14:14:12 +02:00
raysan5
ef36950b72 New raylib module: raygui
Immediate Mode GUI (IMGUI)
2015-08-27 18:17:05 +02:00
raysan5
4e5f5764ce Updated 2015-08-27 16:52:54 +02:00
raysan5
3a9ed0e846 Merged master fixed conflict. 2015-08-27 16:32:06 +02:00
raysan5
997170a317 Examples reviewed 2015-08-27 16:13:49 +02:00
raysan5
8745d733f9 Replaced 3d model example resources
Cat replaced by dwarf
2015-08-27 16:13:49 +02:00
raysan5
86f683dcbb View description:
- Trying to implement rlglUnproject() - NOT WORKING
- Tested GLEW alternatives: glad and glLoadGen - NOT WORKING
2015-08-27 16:13:47 +02:00
raysan5
04d9c4c183 Some bugs corrected and trying to implement 3d picking 2015-08-27 16:13:46 +02:00
raysan5
9964935a12 Corrected bug to show cursor on free camera mode 2015-08-27 16:13:45 +02:00
raysan5
72e909f556 Added raylib 1.3 description and knowledgements 2015-08-27 16:13:44 +02:00
raysan5
0919d43dfb Updated changes 2015-08-27 16:13:44 +02:00
Ray
27e44c43c5 Depth buffer configuration 2015-08-10 10:20:53 +02:00
raysan5
07858c3a1f Reviewed ImageConvertToPOT() 2015-08-07 18:00:28 +02:00
raysan5
fd2b0c7c38 Added MSAA 4X support for EGL contexts 2015-08-07 17:25:05 +02:00
raysan5
b8b0247043 Added function SetBlendMode()
Useful to enable additive blend mode for particles
2015-08-07 17:24:28 +02:00
raysan5
6da175fccb Reviewed GetTextureData() 2015-08-07 17:23:53 +02:00
Ray
037898be56 Added some desired features to roadmap 2015-08-06 21:18:08 +02:00
Ray
82f71880e9 Smalll note added 2015-08-06 21:03:16 +02:00
Ray
0b04807258 Updated with latest changes 2015-08-05 19:20:02 +02:00
Ray
5837249d76 Updated license for 3d model dwarf 2015-08-05 19:19:15 +02:00
Ray
ba640598e5 Reviewed for standalone usage
Requires raymath as standalone and GLEW
2015-08-05 19:18:40 +02:00
Ray
a42bfa7794 Added trace log for data unloading 2015-08-05 19:17:56 +02:00
raysan5
5436d93a3d Review framebuffer creation and...
...shader loading security check
2015-08-03 17:27:53 +02:00
raysan5
36552ff995 Added security check if file not found 2015-08-03 17:27:04 +02:00
raysan5
0af2f45815 SetDefaultShader(): Solved issue 2015-07-31 12:40:33 +02:00
raysan5
39e22e98ce Added stb_vorbis lib compilation 2015-07-31 12:39:45 +02:00
raysan5
e8fa630c28 Audio module reviewed for standalone usage 2015-07-31 12:31:39 +02:00
raysan5
6e4cfa5ecf Added camera and gestures modules functions 2015-07-29 21:45:28 +02:00
raysan5
c0d8ae7f4d Decoupled some modules: audio, camera, gestures
Added window drop files support
2015-07-29 21:44:27 +02:00
raysan5
7834a4e2fc Replaced old mail by twitter user 2015-07-29 21:43:30 +02:00
raysan5
0b24330d86 Decoupling gestures system module
Now gestures system can be used as standalone module
2015-07-29 21:42:43 +02:00
raysan5
0b7c2ab183 Decoupling camera system module
Camera system can be used as standalone module
2015-07-29 21:42:11 +02:00
raysan5
f7acee9221 Decoupling audio module from raylib
Now audio module can be used as standalone module
2015-07-29 21:41:19 +02:00
Ray
8b3a82688e Merge pull request #24 from raysan5/develop
Integrate Develop branch
2015-07-28 17:38:37 +02:00
raysan5
067b884f39 Updated examples for next raylib version 2015-07-18 19:26:13 +02:00
raysan5
a98578c91d Updated minSdkVersion and added comments 2015-07-18 19:25:43 +02:00
raysan5
14d3b0a084 Corrected issue on mipmaps generations 2015-07-18 19:25:15 +02:00
raysan5
552033da27 Move shaders functions to module rlgl
Shader functionality owns to rlgl, not core module
2015-07-13 18:20:16 +02:00
raysan5
66556b8b47 Added some functions and renamed some others
Added:
- LoadImageRaw()
- ImageCopy()
Renamed:
- GetPixelData() -> GetImageData()
2015-07-13 18:19:29 +02:00
raysan5
3434255ce6 Decoupling camera system from raylib main library 2015-07-13 18:17:05 +02:00
raysan5
d686cc6c4a Some small code tweaks 2015-07-13 18:16:24 +02:00
raysan5
d50194940d Updated to raylib v1.3 2015-07-13 18:15:31 +02:00
raysan5
e30421e84c Updated to latest version 2.06 2015-07-13 18:14:47 +02:00
raysan5
c944d62374 Improved mipmaps support and image loading 2015-07-05 18:21:01 +02:00
raysan5
84befaea24 Corrected bug on GetHexValue() function 2015-07-05 18:19:49 +02:00
raysan5
2be8753788 Functions renaming for better consistency 2015-07-05 18:19:18 +02:00
Ray
a59433e7a3 Merge pull request #23 from raysan5/develop
Integrate develop branch
2015-07-03 20:49:16 +02:00
Ray
cd08ae7b85 Corrected bug on reset default shader 2015-06-24 09:57:03 +02:00
raysan5
1ec87f7990 Moved postpro texture to shader 2015-06-22 19:59:55 +02:00
raysan5
bae1bf7b0a Corrected bug on UnloadModel() 2015-06-18 03:08:21 +02:00
raysan5
024e48850e Corrected camera issue and added function 2015-06-17 19:56:52 +02:00
raysan5
9572d6c063 Updated postpro shaders system 2015-06-16 20:02:01 +02:00
raysan5
d9c5614342 Updated shader system 2015-06-16 10:52:26 +02:00
Marc Palau
4c6c182023 Corrected gesture tap issue and text scaling issue 2015-06-03 17:04:17 +02:00
Marc Palau
fca60cb597 Corrected camera issue 2015-06-03 17:01:57 +02:00
raysan5
6a4afae5cc Improved ResolveCollisionCubicmap()
Now it supports multiple maps one next to the other
2015-06-02 09:54:51 +02:00
raysan5
fd851d1d8b Improved custom shaders support
Corrected issues with textures loading
2015-05-21 14:13:51 +02:00
raysan5
9e450df053 Added extensions check on rlglInit() and more
Corrected shader version depending on OGL version
Corrected bug in gestures module
2015-05-21 00:18:22 +02:00
Gatonevermind
c7ae28aaa2 Small tweak 2015-05-18 13:12:24 +02:00
raysan5
19721c70ff Removed unused shaders 2015-05-11 18:22:29 +02:00
raysan5
e25f1227c0 Updated stb headers 2015-05-11 18:22:16 +02:00
Gatonevermind
4e4b6bef21 Corrected bug on PVR textures loading 2015-05-11 17:37:19 +02:00
raysan5
a7714c842f raymath module review and other changes
Complete review of matrix rotation math
Check compressed textures support
WIP: LoadImageFromData()
2015-05-11 00:15:46 +02:00
raysan5
eae98e1c34 Big batch of changes, check description:
- Camera system moved to a separate module [camera.c]
- WIP: Added customization functions for camera controls
- Added custom shaders support on batch drawing
- Complete redesign of textures module to support multiple texture
formats (compressed and uncompressed)
2015-05-04 23:46:31 +02:00
raysan5
ba257b09f5 Corrected input bug 2015-04-22 19:12:59 +02:00
raysan5
05fe1c22ed Updated to latest version 2015-04-22 18:37:09 +02:00
raysan5
7db895ab5d Corrected some bugs and warnings 2015-04-22 18:36:52 +02:00
Marc Palau
ceb7325727 Added Gestures System for Android and Web 2015-04-22 17:34:42 +02:00
raysan5
7d2318c167 WIP on shaders and textures
Moved functions: LoadShader(), UnloadShader()
Add support for PVR textures compressed/uncompressed
WIP: Detect available extensions for compressed textures
2015-04-13 20:15:28 +02:00
raysan5
a632a04a30 Big batch of changes! Check description:
Support multiple texture formats (uncompressed and compressed)
Postprocessing shaders support
Model struct redefined and improved
Extended loading functions for Textures and Models
Simplified functions: DrawPlane(), DrawQuad()
Deleted functions: DrawPlaneEx(), DrawGizmoEx()
Now Text module only depends on Textures module
Shapes: Reviewed functions to low lines/triangles usage
Removed useless tabs and spaces around code
2015-04-06 14:02:29 +02:00
nicobwah
2b4a1f295a Added support for Latin-1 Supplement characters
Extended default raylib font system to support Latin-1 Supplement
characters
2015-03-09 17:13:42 +01:00
Marc Palau
3cad094edd Changes integration (some WIP, view details)
Corrected GetMouseWheelMove()
Corrected camera system
Reviewed cubicmap resolution (collision detection)
Added QuaternionTransform()
WIP: Raycast system (not working)
WIP: Reviewing axis-angle rotations...
2015-03-02 20:52:58 +01:00
raysan5
c062f8d4fe Redesign shader system and more
Shader system has been completely redesigned
Added support for multiple texture color modes
2015-03-01 16:00:52 +01:00
raysan5
ee4b553c2a Renamed some functions 2015-02-26 13:52:03 +01:00
Marc Palau
3cb4edcbc3 Corrected camera system 2015-02-09 18:35:43 +01:00
raysan5
e1353b9f7d Removed some TODO already done 2015-02-09 18:29:32 +01:00
Ray
47827ddda1 Merge pull request #22 from procedural/hide-mouse
Functions to show and hide mouse cursor at runtime
2015-02-06 00:31:22 +01:00
Ray
387795311c Merge pull request #20 from procedural/cpp-fixes
Fixes for C++, bool type already defined
2015-02-06 00:21:37 +01:00
Marc Palau
77eda6494e Added cubicmap collision detection and resolution 2015-02-04 20:24:23 +01:00
Marc Palau
b25cdf7f7d Added support for multiple camera modes 2015-02-04 20:23:43 +01:00
Constantine Tarasenkov
765870fe8f No need to include raylib.h 2015-02-03 20:16:27 +03:00
Constantine Tarasenkov
cc6cf9a741 Adding functions to show and hide mouse cursor 2015-02-03 05:47:28 +03:00
Constantine Tarasenkov
ab12193f10 Fixes for C++ 2015-02-03 00:06:50 +03:00
Marc Palau
b926765ce0 Added functions and improvements
LoadCubicmap() supports custom texture rectangle (from texture atlas)
for every cubic-face.
CheckCollision*() for spheres and bounding-boxes.
2015-02-02 20:05:18 +01:00
raysan5
9ab6718234 Corrected bug, OGG loading on Android 2015-02-02 16:39:30 +01:00
raysan5
42c92e4f2e Add support for custom shaders
Custom shaders for models
Postprocessig on FBO (in progress)
Some useless spaces removed
2015-02-02 00:57:08 +01:00
raysan5
b9e53cd135 Removed useless spaces 2015-02-02 00:53:49 +01:00
Ray
dc52c8f769 Updated GLFW libs to 3.1
Recompiled by procedural! Thanks!
2015-01-26 22:11:59 +01:00
Ray
032c8333d9 Merge pull request #19 from procedural/linux
Fixes for makefiles, GLFW 3.1 library for Linux
2015-01-26 22:05:52 +01:00
Constantine Tarasenkov
b92c1bbbf7 Fixes for makefiles, GLFW 3.1 library for Linux 2015-01-25 17:53:29 +03:00
Ray
f5048742aa JUST DO - Global Game Jam 2015 2015-01-25 14:46:11 +01:00
Ray
e9ea3f50bf Updated GLFW to version 3.1 2015-01-24 14:40:39 +01:00
Ray
a9e045a1a8 Pause loop execution on window minimized 2015-01-21 00:13:17 +01:00
Ray
7d0407c6a2 Pause music when window minimized 2015-01-21 00:12:54 +01:00
Ray
c00cd38b01 Small note to remember 2015-01-21 00:12:30 +01:00
raysan5
e96c22d6f8 Updated makefiles for templates
Now support multiple platforms
2015-01-18 11:19:25 +01:00
raysan5
874dc89fca Adding support for TTF fonts (in progress) 2015-01-18 10:58:04 +01:00
raysan5
5104567a24 Some code tweaks 2015-01-18 10:57:30 +01:00
raysan5
2968ba9938 Ignore compiled binaries on templates (*.o, *.exe) 2015-01-18 10:56:37 +01:00
Ray
cae6f3c613 Merge pull request #16 from raysan5/develop
Integration from develop branch to master
2015-01-10 13:28:45 +01:00
raysan5
bb8c1826d3 Uploaded basic window example for web 2015-01-10 13:26:34 +01:00
Ray
274921cd35 Update README.md 2015-01-10 13:25:07 +01:00
Ray
39fda7af82 Merge pull request #15 from Galloman/develop
Improved support for mac osx.
2015-01-10 11:56:10 +01:00
David Gallardo
31934ac374 Improved support for mac.
Reference to libglfw dylib fixed
2015-01-08 22:09:29 +01:00
raysan5
d739895e4a Reorganized external folders by platform
Improved makefiles!
2015-01-08 21:10:06 +01:00
Ray
e37ef10595 Merge pull request #14 from raysan5/master
Integrate master into develop branch
2015-01-08 20:32:30 +01:00
raysan5
4a7e522d4b Review build system for Android and RPI 2015-01-04 18:05:50 +01:00
raysan5
b2a5390adb Added some last hour features to v1.2.2 2015-01-02 21:06:30 +01:00
raysan5
0bfd283526 Added support for model color tint
Also, added support for normals on models
2015-01-02 20:59:54 +01:00
raysan5
7ea8326b52 makefiles reorganization
Edited to better accomodate to multiple platforms
2015-01-02 20:59:05 +01:00
raysan5
8847602061 Examples review... 2015-01-02 20:58:06 +01:00
Ray
e6bc655d6a Rename models_cubesmap.c to models_cubicmap.c 2015-01-02 20:51:14 +01:00
raysan5
061ee04cb5 Integrated ratalaika pull-request
Added first version of OS X compilation support
Some conflicts manually resolved...
2015-01-02 10:18:43 +01:00
Ray
3c4a91658e Merge pull request #12 from raysan5/develop
Integration from develop branch
2014-12-31 19:28:38 +01:00
raysan5
fad81f36e4 Updated docs 2014-12-31 19:25:50 +01:00
raysan5
b482e26925 Small tweaks 2014-12-31 19:25:39 +01:00
raysan5
7ec6ebb9fa New raylib release, including html5 binaries 2014-12-31 19:25:16 +01:00
raysan5
5a98d2da1f Added raylib game showing raylib features 2014-12-31 19:24:51 +01:00
raysan5
21d8394170 Added small floppy game 2014-12-31 19:18:16 +01:00
raysan5
5e913c31a4 Updated example 2014-12-31 19:17:50 +01:00
raysan5
d51d6a4650 Prepare examples makefile to support emscripten 2014-12-31 19:17:41 +01:00
raysan5
3c57c6afc5 Updated to version 2.00b 2014-12-31 18:03:48 +01:00
raysan5
905b6ec53d Added full support for HTML5 (emscripten)
Corrected some bugs on the way...
Automatically convert textures to POT on RPI and WEB
2014-12-31 18:03:32 +01:00
raysan5
08a4ee34eb [texture] image data initialization 2014-12-17 19:47:17 +01:00
raysan5
1bd592fe67 [texture] image loading small check 2014-12-17 19:33:53 +01:00
raysan5
db1ad74ef2 [models] file open error check 2014-12-17 19:32:54 +01:00
raysan5
2e5f58255a Working on rotation math...
[models] Added DrawQuad()
2014-12-16 11:15:56 +01:00
raysan5
cfa60ab7e6 Added support for emscripten and more
Added PLATFORM_WEB support (emscripten-webgl)
[audio] Added LoadSoundFromWave()
[textures] Added LoadTextureFromImage() to replace CreateTexture()
Some TraceLogs edited...
2014-12-15 01:08:30 +01:00
raysan5
d3cf316e40 Added features and corrected bugs...
[core] Added SetMousePosition()
[models] LoadHeightmap() - Corrected textures bug
[raymath] Functions renaming
[WEB] Prepare environment for emscripten!
2014-12-09 13:21:55 +01:00
Palaui
a2c8ddca13 Revert "Corrected some bugs..."
This reverts commit 29d8b48503.
2014-12-09 13:10:28 +01:00
Palaui
29d8b48503 Corrected some bugs...
[core] Added SetMousePosition()
[models] LoadHeightmap() - Corrected textures bug
[raymath] Functions renaming
[WEB] Prepare environment for emscripten!
2014-12-09 13:10:05 +01:00
Ray
0c60609268 Merge pull request #11 from raysan5/develop
Develop branch integration
2014-11-24 20:14:58 +01:00
Palaui
63ed471ed2 Corrected bug on billboards 2014-11-24 17:23:05 +01:00
Ray
d16519f5de Merge pull request #9 from raysan5/master
Populate master changes to develop branch
2014-11-24 16:05:41 +01:00
raysan5
fcff83e65c Corrected Android bug on Native Activity cycle 2014-11-23 21:58:45 +01:00
raysan5
7375d0460a Updated stb headers 2014-11-23 21:58:17 +01:00
ratalaika
2706fa86cd Cleaned GLFW library for OS X 2014-11-22 00:23:25 +01:00
ratalaika
6bea9d0232 Added first version of OS X compilation support 2014-11-22 00:13:59 +01:00
ratalaika
ab05ace3ce Added first version of OS X compilation support 2014-11-22 00:13:09 +01:00
Ray
05ccc4fd42 Merge pull request #5 from debiatan/support_linux_desktop
Small fixes to support the Debian/GNU Linux distro. Hopefully Ubuntu too.
2014-11-09 13:39:27 +01:00
Miguel Lechón
a471b6197a Renamed the PLATFORM_LINUX_DESKTOP into PLATFORM_DESKTOP_LINUX. 2014-11-09 13:18:32 +01:00
Miguel Lechón
db2ad9648d Small fixes to support a Debian/GNU Linux distro. Hopefully Ubuntu too. 2014-11-09 12:07:03 +01:00
Ray
45b214d83e Merge pull request #3 from debiatan/fix_audio_64
Fixed WAV loading under 64-bit systems.
2014-11-09 11:29:13 +01:00
Miguel Lechón
e6ef3f6e6a Fixed WAV loading under 64-bit systems. 2014-11-09 08:06:58 +01:00
raysan5
9d27bba23f Small Fixes Update (1.2.1)
View CHANGELOG for description on small fixes and add-ons
2014-10-17 21:11:58 +02:00
Ray
063e26c521 Corrected issue with transparent surface in Raspberry Pi 2014-09-30 18:22:21 +02:00
Ray
9b5e66f5ea Added required linker libs 2014-09-30 18:15:04 +02:00
Ray
d025230707 Added required linker libs 2014-09-30 18:14:36 +02:00
Ray
c790891e60 Added required linker libs 2014-09-30 18:14:08 +02:00
Ray
78a660d409 Added required linker libs 2014-09-30 18:13:40 +02:00
Ray
4040f9095d Added required linker libs 2014-09-30 18:13:16 +02:00
Ray
d95f743b6f Added required linker libs 2014-09-30 18:12:27 +02:00
raysan5
5eff7d2642 Updated example filename 2014-09-30 00:00:52 +02:00
raysan5
51688c004c Code cleaning, removed useless spaces 2014-09-29 23:41:05 +02:00
raysan5
e2ff32eb84 Updated example screenshot 2014-09-28 01:53:40 +02:00
Ray
c79a46889f Update makefile 2014-09-28 01:47:40 +02:00
Ray
735bf98945 Update and rename shapes_color_palette.c to shapes_colors_palette.c 2014-09-28 00:45:14 +02:00
Ray
86446c6102 Update CHANGELOG 2014-09-21 18:39:12 +02:00
raysan5
0287319c38 Image renaming 2014-09-21 18:25:19 +02:00
raysan5
5ecb6801fa Examples renaming and test examples merge
Examples have been renamed for coherence with raylib modules and test
examples have been merged into examples folder.
2014-09-21 14:26:42 +02:00
Ray
3a0d164a76 Rename ex07c_3d_models.c to models_obj_loading.c 2014-09-21 14:13:05 +02:00
Ray
c389f62837 Rename ex07b_3d_shapes.c to models_geometric_shapes.c 2014-09-21 14:11:42 +02:00
Ray
b648a9ddee Rename ex07a_3d_mode.c to core_3d_mode.c 2014-09-21 14:11:15 +02:00
Ray
597b143634 Rename ex06c_font_select.c to text_font_select.c 2014-09-21 14:10:53 +02:00
Ray
1b2225a622 Rename ex06b_logo_anim.c to shapes_logo_raylib_anim.c 2014-09-21 14:10:33 +02:00
Ray
0cdeb4e267 Rename ex08_audio.c to audio_sound_loading.c 2014-09-21 14:10:03 +02:00
Ray
d09b9fbbde Rename ex06a_color_select.c to core_color_select.c 2014-09-21 14:09:36 +02:00
Ray
c40b3a287c Rename ex05b_rbmf_fonts.c to text_rbmf_fonts.c 2014-09-21 14:09:11 +02:00
Ray
1195025c4c Rename ex05a_sprite_fonts.c to text_sprite_fonts.c 2014-09-21 14:08:58 +02:00
Ray
a99ce2f306 Rename ex04b_texture_rectangle.c to textures_rectangle.c 2014-09-21 14:08:41 +02:00
Ray
9d47934a02 Rename ex04a_textures.c to textures_logo_raylib.c 2014-09-21 14:08:16 +02:00
Ray
3b6e5119f3 Rename ex03c_input_gamepad.c to core_input_gamepad.c 2014-09-21 14:07:48 +02:00
Ray
42b1cb1aaa Rename ex03b_input_mouse.c to core_input_mouse.c 2014-09-21 14:07:20 +02:00
Ray
1989b9fcd9 Rename ex03a_input_keys.c to core_input_keys.c 2014-09-21 14:07:04 +02:00
Ray
34d0851f79 Rename ex02c_color_palette.c to shapes_color_palette.c 2014-09-21 14:06:47 +02:00
Ray
b6d0e3adb2 Rename ex02b_basic_shapes.c to shapes_basic_shapes.c 2014-09-21 14:06:19 +02:00
Ray
07129b26c3 Rename ex02a_logo_raylib.c to shapes_logo_raylib.c 2014-09-21 14:06:00 +02:00
Ray
d25b56f6d4 Rename ex01_basic_window.c to core_basic_window.c 2014-09-21 14:05:04 +02:00
raysan5
42b7b11710 Android: Added support for Tap gesture 2014-09-19 12:34:25 +02:00
raysan5
e915812730 Updated with latest addition 2014-09-18 19:22:06 +02:00
raysan5
ace185954c Android project template for basic game
A basic Android template is provided to start a game
2014-09-18 19:02:12 +02:00
raysan5
1ef1f3d7ea Multiple templates to start a game
Some basic to advance templates are provided to be use as base code for
new games
2014-09-18 19:00:30 +02:00
raysan5
815f90974c Updated to ignore *.exe 2014-09-18 18:56:22 +02:00
raysan5
a08e0929bc Updated ignorable files 2014-09-18 18:52:28 +02:00
Ray
d86c5e3950 Update README.md 2014-09-16 23:25:31 +02:00
raysan5
278f82e536 Style formatting 2014-09-16 23:12:56 +02:00
raysan5
983cc8d291 Android project to compile raylib src 2014-09-16 23:10:27 +02:00
raysan5
8e2680f41f raylib 1.2 release files
Default libraylib.a uses OpenGL 1.1 to maximize compatibility
2014-09-16 22:54:42 +02:00
raysan5
fc6081fe70 raylib 1.2
This is a huge update. Check CHANGELOG for details
2014-09-16 22:51:31 +02:00
raysan5
01651af08a Update examples and remove .exe 2014-09-16 11:30:25 +02:00
raysan5
c56ef738ed Explicit define of functions prototypes
No-parameters functions use the prototype style FunctionName(void);
2014-09-03 17:06:10 +02:00
raysan5
d2b98fbb5c Removed useless spaces 2014-09-03 16:51:28 +02:00
Ray
222995c32e Upload new game: Dr. Turtle & Mr. Gamera 2014-07-25 10:50:51 +02:00
raysan5
56a7979750 Corrected bugs...
Set default raylib to use OpenGL 1.1 (compatibility issues on ATI cards)
2014-07-23 19:50:06 +02:00
raysan5
ecb3c47704 Corrected bug with drawing order
We have three vertex buffers: lines, triangles and quads for textures.
Drawing in a desired order could become a nighmare... noww it seems it
works prety well...
2014-07-23 01:25:33 +02:00
raysan5
0b03431c95 Update to version 1.1.1
Check CHANGELOG for a detailed list of changes
2014-07-23 00:06:24 +02:00
raysan5
5e2e9aa23e Corrected bug with DrawModel() 2014-07-08 10:33:04 +02:00
raysan5
aff8d151a4 Corrected DrawSphereWires() function 2014-06-15 00:50:09 +02:00
raysan5
8e186e840c Updated some comments 2014-06-09 16:33:53 +02:00
raysan5
a42f8328b2 Renamed raylib icon file 2014-05-10 11:39:51 +02:00
raysan5
370479f7c5 Updated GLFW3 to 3.0.4
Added additional files in case somebody wants to use the DLL library
version
2014-05-10 11:37:40 +02:00
raysan5
7a6c22bc25 Renamed GLEW dinamic linkage lib 2014-05-02 20:04:09 +02:00
Ray
8ead7ad4cf Update README.md 2014-04-22 21:09:56 +02:00
raysan5
f76a00adc1 Code used to test some features (and resources) 2014-04-19 16:54:48 +02:00
raysan5
1c8874e6d5 Added raylib 1.1 library binaries
OpenGL 3.3+ compiled binaries
2014-04-19 16:53:52 +02:00
raysan5
f06a15ac8b raylib 1.1
View CHANGELOG for a detailed list of changes
2014-04-19 16:36:49 +02:00
Ray
650a8f7f15 Merge pull request #2 from raysan5/testing
Integrate raylib 1.1 changes into master
2014-04-19 14:21:22 +02:00
raysan5
e6b82cb111 Lots of changes, most of them under testing-review
Added a Tracing/Log system
Added OGG stream music support (DOESN'T WORK)
Added Compressed textures support
* This update is probably very buggy...
2014-04-09 20:25:26 +02:00
raysan5
c04f37d0f5 Adapt multiple functions to rlgl
Nearly a complete rework of Models module
Some teaks on multiple functions
2014-04-04 20:11:57 +02:00
raysan5
79cf87d91d Adding GLEW lib 2014-04-04 20:06:55 +02:00
raysan5
96f520ff6d Road to raylib 1.1 - Testing rlgl 2014-03-25 12:40:35 +01:00
raysan5
1c8dce429e Updated 2014-03-16 21:05:04 +01:00
557 changed files with 152293 additions and 13157 deletions

39
.gitignore vendored
View File

@@ -1,17 +1,15 @@
# Ignore generated files # Ignore generated files
# ... # ...
# Ignore compiled binaries # Ignore VIM's backup generated files
src/core.o *.swp
src/shapes.o
src/textures.o # Ignore Android generated files and folders
src/text.o src_android/obj/
src/models.o templates/android_project/bin/
src/audio.o templates/android_project/obj/
src/vector3.o templates/android_project/libs/
src/stb_image.o local.properties
src/*.exe
examples/*.o
# Ignore thumbnails created by windows # Ignore thumbnails created by windows
Thumbs.db Thumbs.db
@@ -48,6 +46,11 @@ _ReSharper*/
ipch/ ipch/
*.opensdf *.opensdf
# Ignore compiled binaries
*.o
*.exe
!tools/rrem.exe
# Ignore files build by xcode # Ignore files build by xcode
*.mode*v* *.mode*v*
*.pbxuser *.pbxuser
@@ -60,4 +63,16 @@ xcschememanagement.plist
.DS_Store .DS_Store
._.* ._.*
xcuserdata/ xcuserdata/
DerivedData/ DerivedData/
*.dll
src/libraylib.a
src/libraylib.bc
# oculus example
!examples/oculus_glfw_sample/
# external libraries DLLs
!src/external/glfw3/lib/win32/glfw3.dll
!src/external/openal_soft/lib/win32/OpenAL32.dll
!src/external/OculusSDK/LibOVR/LibOVRRT32_1.dll
!src/external/pthread/pthreadGC2.dll

294
CHANGELOG
View File

@@ -1,11 +1,301 @@
changelog changelog
--------- ---------
Current Release: raylib 1.0.6 (March 2014) Current Release: raylib 1.5.0 (18 July 2016)
NOTE: Only versions marked as 'Release' are available on release folder, updates are only available as source. NOTE: Only versions marked as 'Release' are available in installer, updates are only available as source.
NOTE: Current Release includes all previous updates. NOTE: Current Release includes all previous updates.
-----------------------------------------------
Release: raylib 1.5.0 (18 July 2016)
-----------------------------------------------
NOTE:
Probably this new version is the biggest boost of the library ever, lots of parts of the library have been redesigned,
lots of bugs have been solved and some **AMAZING** new features have been added.
HUGE changes:
[rlgl] OCULUS RIFT CV1: Added support for VR, not oly Oculus Rift CV1 but also stereo rendering simulator (multiplatform).
[rlgl] MATERIALS SYSTEM: Added support for Materials (.mtl) and multiple material properties: diffuse, specular, normal.
[rlgl] LIGHTING SYSTEM: Added support for up to 8 lights of 3 different types: Omni, Directional and Spot.
[physac] REDESIGNED: Improved performance and simplified usage, physic objects now are managed internally in a second thread!
[audio] CHIPTUNES: Added support for module audio music (.xm, .mod) loading and playing. Multiple mixing channels supported.
other changes:
[core] Review Android button inputs
[core] Support Android internal data storage
[core] Renamed WorldToScreen() to GetWorldToScreen()
[core] Removed function SetCustomCursor()
[core] Removed functions BeginDrawingEx(), BeginDrawingPro()
[core] Replaced functions InitDisplay() + InitGraphics() with: InitGraphicsDevice()
[core] Added support for field-of-view Y (fovy) on 3d Camera
[core] Added 2D camera mode functions: Begin2dMode() - End2dMode()
[core] Translate mouse inputs to Android touch/gestures internally
[core] Translate mouse inputs as touch inputs in HTML5
[core] Improved function GetKeyPressed() to support multiple keys (including function keys)
[core] Improved gamepad support, specially for RaspberryPi (including multiple gamepads support)
[rlgl] Support stereo rendering simulation (duplicate draw calls by viewport, optimized)
[rlgl] Added distortion shader (embeded) to support custom VR simulator: shader_distortion.h
[rlgl] Added support for OpenGL 2.1 on desktop
[rlgl] Improved 2D vs 3D drawing system (lines, triangles, quads)
[rlgl] Improved DXT-ETC1 support on HTML5
[rlgl] Review function: rlglUnproject()
[rlgl] Removed function: rlglInitGraphics(), integrated into rlglInit()
[rlgl] Updated Mesh and Shader structs
[rlgl] Simplified internal (default) dynamic buffers
[rlgl] Added support for indexed and dynamic mesh data
[rlgl] Set fixed vertex attribs location points
[rlgl] Improved mesh data loading support
[rlgl] Added standard shader (embeded) to support materials and lighting: shader_standard.h
[rlgl] Added light functions: CreateLight(), DestroyLight()
[rlgl] Added wire mode functions: rlDisableWireMode(), rlEnableWireMode()
[rlgl] Review function consistency, added: rlglLoadMesh(), rlglUpdateMesh(), rlglDrawMesh(), rlglUnloadMesh()
[rlgl] Replaced SetCustomShader() by: BeginShaderMode() - EndShaderMode()
[rlgl] Replaced SetBlendMode() by: BeginBlendMode() - EndBlendMode()
[rlgl] Added functions to customize internal matrices: SetMatrixProjection(), SetMatrixModelview()
[rlgl] Unified internal shaders to only one default shader
[rlgl] Added support for render to texture (RenderTexture2D):
LoadRenderTexture() - UnloadRenderTexture()
BeginTextureMode() - EndTextureMode()
[rlgl] Removed SetShaderMap*() functions
[rlgl] Redesigned default buffers usage functions:
LoadDefaultBuffers() - UnloadDefaultBuffers()
UpdateDefaultBuffers() - DrawDefaultBuffers()
[shapes] Corrected bug on GetCollisionRec()
[textures] Added support for Nearest-Neighbor image scaling
[textures] Added functions to draw text on image: ImageDrawText(), ImageDrawTextEx()
[text] Reorganized internal functions: Added LoadImageFont()
[text] Security check for unsupported BMFonts
[models] Split mesh creation from model loading on heightmap and cubicmap
[models] Updated BoundingBox collision detections
[models] Added color parameter to DrawBoundigBox()
[models] Removed function: DrawQuad()
[models] Removed function: SetModelTexture()
[models] Redesigned DrawPlane() to use RL_TRIANGLES
[models] Redesigned DrawRectangleV() to use RL_TRIANGLES
[models] Redesign to accomodate new materials system: LoadMaterial()
[models] Added material functions: LoadDefaultMaterial(), LoadStandardMaterial()
[models] Added MTL material loading support: LoadMTL()
[models] Added function: DrawLight()
[audio] Renamed SoundIsPlaying() to IsSoundPlaying()
[audio] Renamed MusicIsPlaying() to IsMusicPlaying()
[audio] Support multiple Music streams (indexed)
[audio] Support multiple mixing channels
[gestures] Improved and reviewed gestures system
[raymath] Added QuaternionInvert()
[raymath] Removed function: PrintMatrix()
[raygui] Ported to header-only library (https://github.com/raysan5/raygui)
[shaders] Added depth drawing shader (requires a depth texture)
[shaders] Reviewed included shaders and added comments
[OpenAL Soft] Updated to latest version (1.17.2)
[GLFW3] Updated to latest version (3.2)
[stb] Updated to latest headers versions
[GLAD] Converted to header only library and simplified to only used extensions
[*] Reorganize library folders: external libs moved to src/external folder
[*] Reorganize src folder for Android library
[*] Review external dependencies usage
[*] Improved Linux and OSX build systems
[*] Lots of tweaks and bugs corrected all around
-----------------------------------------------
Release: raylib 1.4.0 (22 February 2016)
-----------------------------------------------
NOTE:
This version supposed another big improvement for raylib, including new modules and new features.
More than 30 new functions have been added to previous raylib version.
Around 8 new examples and +10 new game samples have been added.
BIG changes:
[textures] IMAGE MANIPULATION: Functions to crop, resize, colorize, flip, dither and even draw image-to-image or text-to-image.
[text] SPRITEFONT SUPPORT: Added support for AngelCode fonts (.fnt) and TrueType fonts (.ttf).
[gestures] REDESIGN: Gestures system simplified and prepared to process generic touch events, including mouse events (multiplatform).
[physac] NEW MODULE: Basic 2D physics support, use colliders and rigidbodies; apply forces to physic objects.
other changes:
[rlgl] Removed GLEW library dependency, now using GLAD
[rlgl] Implemented alternative to glGetTexImage() on OpenGL ES
[rlgl] Using depth data on batch drawing
[rlgl] Reviewed glReadPixels() function
[core][rlgl] Reviewed raycast system, now 3D picking works
[core] Android: Reviewed Android App cycle, paused if inactive
[shaders] Implemented Blinn-Phong lighting shading model
[textures] Implemented Floyd-Steinberg dithering - ImageDither()
[text] Added line-break support to DrawText()
[text] Added TrueType Fonts support (using stb_truetype)
[models] Implement function: CalculateBoundingBox(Mesh mesh)
[models] Added functions to check Ray collisions
[models] Improve map resolution control on LoadHeightmap()
[camera] Corrected small-glitch on zoom-in with mouse-wheel
[gestures] Implemented SetGesturesEnabled() to enable only some gestures
[gestures] Implemented GetElapsedTime() on Windows system
[gestures] Support mouse gestures for desktop platforms
[raymath] Complete review of the module and converted to header-only
[easings] Added new module for easing animations
[stb] Updated to latest headers versions
[*] Lots of tweaks around
-----------------------------------------------
Release: raylib 1.3.0 (01 September 2015)
-----------------------------------------------
NOTE:
This version supposed a big boost for raylib, new modules have been added with lots of features.
Most of the modules have been completely reviewed to accomodate to the new features.
Over 50 new functions have been added to previous raylib version.
Most of the examples have been redone and +10 new advanced examples have been added.
BIG changes:
[rlgl] SHADERS: Support for model shaders and postprocessing shaders (multiple functions)
[textures] FORMATS: Support for multiple internal formats, including compressed formats
[camera] NEW MODULE: Set of cameras for 3d view: Free, Orbital, 1st person, 3rd person
[gestures] NEW MODULE: Gestures system for Android and HTML5 platforms
[raygui] NEW MODULE: Set of IMGUI elements for tools development (experimental)
smaller changes:
[rlgl] Added check for OpenGL supported extensions
[rlgl] Added function SetBlenMode() to select some predefined blending modes
[core] Added support for drop&drag of external files into running program
[core] Added functions ShowCursor(), HideCursor(), IsCursorHidden()
[core] Renamed function SetFlags() to SetConfigFlags()
[shapes] Simplified some functions to improve performance
[textures] Review of Image struct to support multiple data formats
[textures] Added function LoadImageEx()
[textures] Added function LoadImageRaw()
[textures] Added function LoadTextureEx()
[textures] Simplified function parameters LoadTextureFromImage()
[textures] Added function GetImageData()
[textures] Added function GetTextureData()
[textures] Renamed function ConvertToPOT() to ImageConvertToPOT()
[textures] Added function ImageConvertFormat()
[textures] Added function GenTextureMipmaps()
[text] Added support for Latin-1 Extended characters for default font
[text] Redesigned SpriteFont struct, replaced Character struct by Rectangle
[text] Removed function GetFontBaseSize(), use directly spriteFont.size
[models] Review of struct: Model (added shaders support)
[models] Added 3d collision functions (sphere vs sphere vs box vs box)
[models] Added function DrawCubeTexture()
[models] Added function DrawQuad()
[models] Added function DrawRay()
[models] Simplified funtion DrawPlane()
[models] Removed function DrawPlaneEx()
[models] Simplified funtion DrawGizmo()
[models] Removed function DrawGizmoEx()
[models] Added function LoadModelEx()
[models] Review of function LoadCubicMap()
[models] Added function ResolveCollisionCubicmap()
[audio] Decopupled from raylib, now this module can be used as standalone
[audio] Added function UpdateMusicStream()
[raymath] Complete review of the module
[stb] Updated to latest headers versions
[*] Lots of tweaks around
-----------------------------------------------
Release: raylib 1.2.2 (31 December 2014)
-----------------------------------------------
[*] Added support for HTML5 compiling (emscripten, asm.js)
[core] Corrected bug on input handling (keyboard and mouse)
[textures] Renamed function CreateTexture() to LoadTextureFromImage()
[textures] Added function ConvertToPOT()
[rlgl] Added support for color tint on models on GL 3.3+ and ES2
[rlgl] Added support for normals on models
[models] Corrected bug on DrawBillboard()
[models] Corrected bug on DrawHeightmap()
[models] Renamed LoadCubesmap() to LoadCubicmap()
[audio] Added function LoadSoundFromWave()
[makefile] Added support for Linux and OSX compiling
[stb] Updated to latest headers versions
[*] Lots of tweaks around
---------------------------------------------------------------
Update: raylib 1.2.1 (17 October 2014) (Small Fixes Update)
---------------------------------------------------------------
[core] Added function SetupFlags() to preconfigure raylib Window
[core] Corrected bug on fullscreen mode
[rlgl] rlglDrawmodel() - Added rotation on Y axis
[text] MeasureTextEx() - Corrected bug on measures for default font
-----------------------------------------------
Release: raylib 1.2 (16 September 2014)
-----------------------------------------------
NOTE:
This version supposed a complete redesign of the [core] module to support Android and Raspberry Pi.
Multiples modules have also been tweaked to accomodate to the new platforms, specially [rlgl]
[core] Added multiple platforms support: Android and Raspberry Pi
[core] InitWindow() - Complete rewrite and split for Android
[core] InitDisplay() - Internal function added to calculate proper display size
[core] InitGraphics() - Internal function where OpenGL graphics are initialized
[core] Complete refactoring of input functions to accomodate to new platforms
[core] Mouse and Keyboard raw data reading functions added for Raspberry Pi
[core] GetTouchX(), GetTouchY() - Added for Android
[core] Added Android callbacks to process inputs and Android activity commands
[rlgl] Adjusted buffers depending on platform
[rlgl] Added security check in case deployed vertex excess buffer size
[rlgl] Adjusted indices type depending on GL version (int or short)
[rlgl] Fallback to VBOs only usage if VAOs not supported on ES2
[rlgl] rlglLoadModel() stores vbo ids on new Model struct
[textures] Added support for PKM files (ETC1, ETC2 compression support)
[shapes] DrawRectangleV() - Modified, depending on OGL version uses TRIANGLES or QUADS
[text] LoadSpriteFont() - Modified to use LoadImage()
[models] Minor changes on models loading to accomodate to new Model struct
[audio] PauseMusicStream(), ResumeMusicStream() - Added
[audio] Reduced music buffer size to avoid stalls on Raspberry Pi
[src] Added makefile for Windows and RPI
[src] Added resources file (raylib icon and executable info)
[examples] Added makefile for Windows and RPI
[examples] Renamed and merged with test examples for coherence with module names
[templates] Added multiple templates to be use as a base-code for games
-----------------------------------------------
Release: raylib 1.1.1 (22 July 2014)
-----------------------------------------------
[core] ShowLogo() - To enable raylib logo animation at startup
[core] Corrected bug with window resizing
[rlgl] Redefined colors arrays to use byte instead of float
[rlgl] Removed double buffer system (no performance improvement)
[rlgl] rlglDraw() - Reorganized buffers drawing order
[rlgl] Corrected bug on screen resizing
[shapes] DrawRectangle() - Use QUADS instead of TRIANGLES
[models] DrawSphereWires() - Corrected some issues
[models] LoadOBJ() - Redesigned to support multiple meshes
[models] LoadCubesMap() - Loading a map as cubes (by pixel color)
[textures] Added security check if file doesn't exist
[text] Corrected bug on SpriteFont loading
[examples] Corrected some 3d examples
[test] Added cubesmap loading test
-----------------------------------------------
Release: raylib 1.1.0 (19 April 2014)
-----------------------------------------------
NOTE:
This version supposed a complete internal redesign of the library to support OpenGL 3.3+ and OpenGL ES 2.0.
New module [rlgl] has been added to 'translate' immediate mode style functions (i.e. rlVertex3f()) to GL 1.1, 3.3+ or ES2.
Another new module [raymath] has also been added with lot of useful 3D math vector-matrix-quaternion functions.
[rlgl] New module, abstracts OpenGL rendering (multiple versions support)
[raymath] New module, useful 3D math vector-matrix-quaternion functions
[core] Adapt all OpenGL code (initialization, drawing) to use [rlgl]
[shapes] Rewrite all shapes drawing functions to use [rlgl]
[textures] Adapt texture GPU loading to use [rlgl]
[textures] Added support for DDS images (compressed and uncompressed)
[textures] CreateTexture() - Redesigned to add mipmap automatic generation
[textures] DrawTexturePro() - Redesigned and corrected bugs
[models] Rewrite all 3d-shapes drawing functions to use [rlgl]
[models] Adapt model loading and drawing to use [rlgl]
[models] Model struct updated to include texture id
[models] SetModelTexture() - Added, link a texture to a model
[models] DrawModelEx() - Redesigned with extended parameters
[audio] Added music streaming support (OGG files)
[audio] Added support for OGG files as Sound
[audio] PlayMusicStream() - Added, open a new music stream and play it
[audio] StopMusicStream() - Added, stop music stream playing and close stream
[audio] PauseMusicStream() - Added, pause music stream playing
[audio] MusicIsPlaying() - Added, to check if music is playing
[audio] SetMusicVolume() - Added, set volume for music
[audio] GetMusicTimeLength() - Added, get current music time length (in seconds)
[audio] GetMusicTimePlayed() - Added, get current music time played (in seconds)
[utils] Added log tracing functionality - TraceLog(), TraceLogOpen(), TraceLogClose()
[*] Log tracing messages all around the code
----------------------------------------------- -----------------------------------------------
Release: raylib 1.0.6 (16 March 2014) Release: raylib 1.0.6 (16 March 2014)
----------------------------------------------- -----------------------------------------------

View File

@@ -7,23 +7,21 @@ please, [let me know][raysan5].
The following help is highly appreciated: The following help is highly appreciated:
- C programming - Can you write / review / test / improve the code? - C programming - Can you write / review / test / improve the code?
- Translators / Localizators - Can you translate raylib to another language?
- Documentation / Tutorials / Example writters - Can you write some tutorial / example? - Documentation / Tutorials / Example writters - Can you write some tutorial / example?
- Web Development - Can you help with the web? Can you setup a forum? - Web Development - Can you help with the web? Can you setup a forum?
- Porting to Linux and OSX - Can you compile and test raylib on another OS? - Porting to Linux, OSX, RaspberryPi, consoles... - Can you compile and test raylib on another systems?
- Testers of current features and multiple systems - Can you find some bug on raylib? - Testers of current features and multiple systems - Can you find some bug on raylib?
If you can not help on any of the above points but you still want to contribute in some way... please, consider helping If you can not help on any of the above points but you still want to contribute in some way... please, consider helping
with a small [donation](http://www.raylib.com/helpme.htm) (just some euros...). It will really motivate to continue improving this project (and pay some bills… or some coffee). with a small [donation](http://www.raylib.com/helpme.htm) or contributing with [raylib patreon](https://www.patreon.com/raysan5). It will really motivate to continue improving this project (and pay some bills… or some coffee).
raylib philosophy raylib philosophy
------------------ ------------------
* raylib is a tool to LEARN videogames programming, every single function in raylib should be a tutorial on itself. * raylib is a tool to LEARN videogames programming, every single function in raylib should be a tutorial on itself.
* raylib is SIMPLE and EASY-TO-USE, I tried to keep it compact with a small set of functions, if a function is too complex or * raylib is SIMPLE and EASY-TO-USE, I tried to keep it compact with a small set of functions, if a function is too complex or has not a clear usefulness, better not to include it.
has not a clear usefulness, better not to include it.
* raylib is open source and free; educators and institutions can use this tool to TEACH videogames programming completely by free. * raylib is open source and free; educators and institutions can use this tool to TEACH videogames programming completely by free.
* raylib is, hopefully, collaborative; contribution of tutorials / code-examples / bugs-solving / code-comments are highly appreciated. * raylib is collaborative; contribution of tutorials / code-examples / bugs-solving / code-comments are highly appreciated.
* raylib's license (and its external libs respective licenses) allow using it for commercial products. * raylib's license (and its external libs respective licenses) allow using it for commercial products.
contact contact
@@ -32,6 +30,8 @@ contact
* Webpage: [http://www.raylib.com](http://www.raylib.com) * Webpage: [http://www.raylib.com](http://www.raylib.com)
* Twitter: [http://www.twitter.com/raysan5](http://www.twitter.com/raysan5) * Twitter: [http://www.twitter.com/raysan5](http://www.twitter.com/raysan5)
* Facebook: [http://www.facebook.com/raylibgames](http://www.facebook.com/raylibgames) * Facebook: [http://www.facebook.com/raylibgames](http://www.facebook.com/raylibgames)
* Reddit: [https://www.reddit.com/r/raylib](https://www.reddit.com/r/raylib)
* Twitch: [http://www.twitch.tv/raysan5](http://www.twitch.tv/raysan5)
* Patreon: [https://www.patreon.com/raysan5](https://www.patreon.com/raysan5)
[raysan5]: mailto:raysan@raysanweb.com "Ramon Santamaria - Ray San" [raysan5]: mailto:raysan5@gmail.com "Ramon Santamaria - Ray San"

View File

@@ -7,7 +7,7 @@ source code
raylib is licensed under an unmodified zlib/libpng license, which is an OSI-certified, raylib is licensed under an unmodified zlib/libpng license, which is an OSI-certified,
BSD-like license that allows static linking with closed source software: BSD-like license that allows static linking with closed source software:
Copyright (c) 2013 Ramon Santamaria (Ray San - raysan@raysanweb.com) Copyright (c) 2013-2016 Ramon Santamaria (@raysan5)
This software is provided "as-is", without any express or implied warranty. In no event This software is provided "as-is", without any express or implied warranty. In no event
will the authors be held liable for any damages arising from the use of this software. will the authors be held liable for any damages arising from the use of this software.
@@ -37,3 +37,345 @@ All rBMF fonts provided with raylib are free to use (freeware) and have been des
* Mecha - Captain Falcon * Mecha - Captain Falcon
* PixelPlay - Aleksander Shevchuk * PixelPlay - Aleksander Shevchuk
* PixAntiqua - Gerhard Großmann * PixAntiqua - Gerhard Großmann
3d models
---------
dwarf 3d model used in examples is created by David Moreno and licensed as Creative Commons Attribution-NonCommercial 3.0
Full license provided below:
Creative Commons Legal Code
Attribution-NonCommercial 3.0 Unported
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
DAMAGES RESULTING FROM ITS USE.
License
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
CONDITIONS.
1. Definitions
a. "Adaptation" means a work based upon the Work, or upon the Work and
other pre-existing works, such as a translation, adaptation,
derivative work, arrangement of music or other alterations of a
literary or artistic work, or phonogram or performance and includes
cinematographic adaptations or any other form in which the Work may be
recast, transformed, or adapted including in any form recognizably
derived from the original, except that a work that constitutes a
Collection will not be considered an Adaptation for the purpose of
this License. For the avoidance of doubt, where the Work is a musical
work, performance or phonogram, the synchronization of the Work in
timed-relation with a moving image ("synching") will be considered an
Adaptation for the purpose of this License.
b. "Collection" means a collection of literary or artistic works, such as
encyclopedias and anthologies, or performances, phonograms or
broadcasts, or other works or subject matter other than works listed
in Section 1(f) below, which, by reason of the selection and
arrangement of their contents, constitute intellectual creations, in
which the Work is included in its entirety in unmodified form along
with one or more other contributions, each constituting separate and
independent works in themselves, which together are assembled into a
collective whole. A work that constitutes a Collection will not be
considered an Adaptation (as defined above) for the purposes of this
License.
c. "Distribute" means to make available to the public the original and
copies of the Work or Adaptation, as appropriate, through sale or
other transfer of ownership.
d. "Licensor" means the individual, individuals, entity or entities that
offer(s) the Work under the terms of this License.
e. "Original Author" means, in the case of a literary or artistic work,
the individual, individuals, entity or entities who created the Work
or if no individual or entity can be identified, the publisher; and in
addition (i) in the case of a performance the actors, singers,
musicians, dancers, and other persons who act, sing, deliver, declaim,
play in, interpret or otherwise perform literary or artistic works or
expressions of folklore; (ii) in the case of a phonogram the producer
being the person or legal entity who first fixes the sounds of a
performance or other sounds; and, (iii) in the case of broadcasts, the
organization that transmits the broadcast.
f. "Work" means the literary and/or artistic work offered under the terms
of this License including without limitation any production in the
literary, scientific and artistic domain, whatever may be the mode or
form of its expression including digital form, such as a book,
pamphlet and other writing; a lecture, address, sermon or other work
of the same nature; a dramatic or dramatico-musical work; a
choreographic work or entertainment in dumb show; a musical
composition with or without words; a cinematographic work to which are
assimilated works expressed by a process analogous to cinematography;
a work of drawing, painting, architecture, sculpture, engraving or
lithography; a photographic work to which are assimilated works
expressed by a process analogous to photography; a work of applied
art; an illustration, map, plan, sketch or three-dimensional work
relative to geography, topography, architecture or science; a
performance; a broadcast; a phonogram; a compilation of data to the
extent it is protected as a copyrightable work; or a work performed by
a variety or circus performer to the extent it is not otherwise
considered a literary or artistic work.
g. "You" means an individual or entity exercising rights under this
License who has not previously violated the terms of this License with
respect to the Work, or who has received express permission from the
Licensor to exercise rights under this License despite a previous
violation.
h. "Publicly Perform" means to perform public recitations of the Work and
to communicate to the public those public recitations, by any means or
process, including by wire or wireless means or public digital
performances; to make available to the public Works in such a way that
members of the public may access these Works from a place and at a
place individually chosen by them; to perform the Work to the public
by any means or process and the communication to the public of the
performances of the Work, including by public digital performance; to
broadcast and rebroadcast the Work by any means including signs,
sounds or images.
i. "Reproduce" means to make copies of the Work by any means including
without limitation by sound or visual recordings and the right of
fixation and reproducing fixations of the Work, including storage of a
protected performance or phonogram in digital form or other electronic
medium.
2. Fair Dealing Rights. Nothing in this License is intended to reduce,
limit, or restrict any uses free from copyright or rights arising from
limitations or exceptions that are provided for in connection with the
copyright protection under copyright law or other applicable laws.
3. License Grant. Subject to the terms and conditions of this License,
Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
perpetual (for the duration of the applicable copyright) license to
exercise the rights in the Work as stated below:
a. to Reproduce the Work, to incorporate the Work into one or more
Collections, and to Reproduce the Work as incorporated in the
Collections;
b. to create and Reproduce Adaptations provided that any such Adaptation,
including any translation in any medium, takes reasonable steps to
clearly label, demarcate or otherwise identify that changes were made
to the original Work. For example, a translation could be marked "The
original work was translated from English to Spanish," or a
modification could indicate "The original work has been modified.";
c. to Distribute and Publicly Perform the Work including as incorporated
in Collections; and,
d. to Distribute and Publicly Perform Adaptations.
The above rights may be exercised in all media and formats whether now
known or hereafter devised. The above rights include the right to make
such modifications as are technically necessary to exercise the rights in
other media and formats. Subject to Section 8(f), all rights not expressly
granted by Licensor are hereby reserved, including but not limited to the
rights set forth in Section 4(d).
4. Restrictions. The license granted in Section 3 above is expressly made
subject to and limited by the following restrictions:
a. You may Distribute or Publicly Perform the Work only under the terms
of this License. You must include a copy of, or the Uniform Resource
Identifier (URI) for, this License with every copy of the Work You
Distribute or Publicly Perform. You may not offer or impose any terms
on the Work that restrict the terms of this License or the ability of
the recipient of the Work to exercise the rights granted to that
recipient under the terms of the License. You may not sublicense the
Work. You must keep intact all notices that refer to this License and
to the disclaimer of warranties with every copy of the Work You
Distribute or Publicly Perform. When You Distribute or Publicly
Perform the Work, You may not impose any effective technological
measures on the Work that restrict the ability of a recipient of the
Work from You to exercise the rights granted to that recipient under
the terms of the License. This Section 4(a) applies to the Work as
incorporated in a Collection, but this does not require the Collection
apart from the Work itself to be made subject to the terms of this
License. If You create a Collection, upon notice from any Licensor You
must, to the extent practicable, remove from the Collection any credit
as required by Section 4(c), as requested. If You create an
Adaptation, upon notice from any Licensor You must, to the extent
practicable, remove from the Adaptation any credit as required by
Section 4(c), as requested.
b. You may not exercise any of the rights granted to You in Section 3
above in any manner that is primarily intended for or directed toward
commercial advantage or private monetary compensation. The exchange of
the Work for other copyrighted works by means of digital file-sharing
or otherwise shall not be considered to be intended for or directed
toward commercial advantage or private monetary compensation, provided
there is no payment of any monetary compensation in connection with
the exchange of copyrighted works.
c. If You Distribute, or Publicly Perform the Work or any Adaptations or
Collections, You must, unless a request has been made pursuant to
Section 4(a), keep intact all copyright notices for the Work and
provide, reasonable to the medium or means You are utilizing: (i) the
name of the Original Author (or pseudonym, if applicable) if supplied,
and/or if the Original Author and/or Licensor designate another party
or parties (e.g., a sponsor institute, publishing entity, journal) for
attribution ("Attribution Parties") in Licensor's copyright notice,
terms of service or by other reasonable means, the name of such party
or parties; (ii) the title of the Work if supplied; (iii) to the
extent reasonably practicable, the URI, if any, that Licensor
specifies to be associated with the Work, unless such URI does not
refer to the copyright notice or licensing information for the Work;
and, (iv) consistent with Section 3(b), in the case of an Adaptation,
a credit identifying the use of the Work in the Adaptation (e.g.,
"French translation of the Work by Original Author," or "Screenplay
based on original Work by Original Author"). The credit required by
this Section 4(c) may be implemented in any reasonable manner;
provided, however, that in the case of a Adaptation or Collection, at
a minimum such credit will appear, if a credit for all contributing
authors of the Adaptation or Collection appears, then as part of these
credits and in a manner at least as prominent as the credits for the
other contributing authors. For the avoidance of doubt, You may only
use the credit required by this Section for the purpose of attribution
in the manner set out above and, by exercising Your rights under this
License, You may not implicitly or explicitly assert or imply any
connection with, sponsorship or endorsement by the Original Author,
Licensor and/or Attribution Parties, as appropriate, of You or Your
use of the Work, without the separate, express prior written
permission of the Original Author, Licensor and/or Attribution
Parties.
d. For the avoidance of doubt:
i. Non-waivable Compulsory License Schemes. In those jurisdictions in
which the right to collect royalties through any statutory or
compulsory licensing scheme cannot be waived, the Licensor
reserves the exclusive right to collect such royalties for any
exercise by You of the rights granted under this License;
ii. Waivable Compulsory License Schemes. In those jurisdictions in
which the right to collect royalties through any statutory or
compulsory licensing scheme can be waived, the Licensor reserves
the exclusive right to collect such royalties for any exercise by
You of the rights granted under this License if Your exercise of
such rights is for a purpose or use which is otherwise than
noncommercial as permitted under Section 4(b) and otherwise waives
the right to collect royalties through any statutory or compulsory
licensing scheme; and,
iii. Voluntary License Schemes. The Licensor reserves the right to
collect royalties, whether individually or, in the event that the
Licensor is a member of a collecting society that administers
voluntary licensing schemes, via that society, from any exercise
by You of the rights granted under this License that is for a
purpose or use which is otherwise than noncommercial as permitted
under Section 4(c).
e. Except as otherwise agreed in writing by the Licensor or as may be
otherwise permitted by applicable law, if You Reproduce, Distribute or
Publicly Perform the Work either by itself or as part of any
Adaptations or Collections, You must not distort, mutilate, modify or
take other derogatory action in relation to the Work which would be
prejudicial to the Original Author's honor or reputation. Licensor
agrees that in those jurisdictions (e.g. Japan), in which any exercise
of the right granted in Section 3(b) of this License (the right to
make Adaptations) would be deemed to be a distortion, mutilation,
modification or other derogatory action prejudicial to the Original
Author's honor and reputation, the Licensor will waive or not assert,
as appropriate, this Section, to the fullest extent permitted by the
applicable national law, to enable You to reasonably exercise Your
right under Section 3(b) of this License (right to make Adaptations)
but not otherwise.
5. Representations, Warranties and Disclaimer
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
7. Termination
a. This License and the rights granted hereunder will terminate
automatically upon any breach by You of the terms of this License.
Individuals or entities who have received Adaptations or Collections
from You under this License, however, will not have their licenses
terminated provided such individuals or entities remain in full
compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
survive any termination of this License.
b. Subject to the above terms and conditions, the license granted here is
perpetual (for the duration of the applicable copyright in the Work).
Notwithstanding the above, Licensor reserves the right to release the
Work under different license terms or to stop distributing the Work at
any time; provided, however that any such election will not serve to
withdraw this License (or any other license that has been, or is
required to be, granted under the terms of this License), and this
License will continue in full force and effect unless terminated as
stated above.
8. Miscellaneous
a. Each time You Distribute or Publicly Perform the Work or a Collection,
the Licensor offers to the recipient a license to the Work on the same
terms and conditions as the license granted to You under this License.
b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
offers to the recipient a license to the original Work on the same
terms and conditions as the license granted to You under this License.
c. If any provision of this License is invalid or unenforceable under
applicable law, it shall not affect the validity or enforceability of
the remainder of the terms of this License, and without further action
by the parties to this agreement, such provision shall be reformed to
the minimum extent necessary to make such provision valid and
enforceable.
d. No term or provision of this License shall be deemed waived and no
breach consented to unless such waiver or consent shall be in writing
and signed by the party to be charged with such waiver or consent.
e. This License constitutes the entire agreement between the parties with
respect to the Work licensed here. There are no understandings,
agreements or representations with respect to the Work not specified
here. Licensor shall not be bound by any additional provisions that
may appear in any communication from You. This License may not be
modified without the mutual written agreement of the Licensor and You.
f. The rights granted under, and the subject matter referenced, in this
License were drafted utilizing the terminology of the Berne Convention
for the Protection of Literary and Artistic Works (as amended on
September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
and the Universal Copyright Convention (as revised on July 24, 1971).
These rights and subject matter take effect in the relevant
jurisdiction in which the License terms are sought to be enforced
according to the corresponding provisions of the implementation of
those treaty provisions in the applicable national law. If the
standard suite of rights granted under applicable copyright law
includes additional rights not granted under this License, such
additional rights are deemed to be included in the License; this
License is not intended to restrict the license of any rights under
applicable law.
Creative Commons Notice
Creative Commons is not a party to this License, and makes no warranty
whatsoever in connection with the Work. Creative Commons will not be
liable to You or any party on any legal theory for any damages
whatsoever, including without limitation any general, special,
incidental or consequential damages arising in connection to this
license. Notwithstanding the foregoing two (2) sentences, if Creative
Commons has expressly identified itself as the Licensor hereunder, it
shall have all rights and obligations of Licensor.
Except for the limited purpose of indicating to the public that the
Work is licensed under the CCPL, Creative Commons does not authorize
the use by either party of the trademark "Creative Commons" or any
related trademark or logo of Creative Commons without the prior
written consent of Creative Commons. Any permitted use will be in
compliance with Creative Commons' then-current trademark usage
guidelines, as may be published on its website or otherwise made
available upon request from time to time. For the avoidance of doubt,
this trademark restriction does not form part of the License.
Creative Commons may be contacted at https://creativecommons.org/.

232
README.md
View File

@@ -1,19 +1,20 @@
<img src="http://www.raylib.com/img/fb_raylib_logo.png" width=256> <img src="https://github.com/raysan5/raylib/blob/master/logo/logo256x256.png" width=256>
about about
----- -----
raylib is a simple and easy-to-use library to learn videogames programming. raylib is a simple and easy-to-use library to learn videogames programming.
raylib is highly inspired by Borland BGI graphics lib (more specifically WinBGI) and by XNA framework. raylib is highly inspired by Borland BGI graphics lib and by XNA framework.
Allegro and SDL have also been analyzed for reference.
Want to see how easy is making games with raylib? Jump to [code examples!] (http://www.raylib.com/examples.htm) NOTE for ADVENTURERS: raylib is a programming library to learn videogames programming;
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.htm)
history history
------- -------
I've developed videogames for some years and last year I had to taught videogames development I've developed videogames for some years and 4 years ago I started teaching videogames development
to young people with artistic profile, most of them had never written a single line of code. to young people with artistic profile, most of them had never written a single line of code.
I started with C language basis and, after searching for the most simple and easy-to-use library to teach I started with C language basis and, after searching for the most simple and easy-to-use library to teach
@@ -23,36 +24,169 @@ a simple PONG and some of them even a BREAKOUT!
But WinBGI was not the clearer and most organized lib. There were a lot of things I found useless and But WinBGI was not the clearer and most organized lib. There were a lot of things I found useless and
confusing and some function names were not clear enough for most of the students; not to mention points confusing and some function names were not clear enough for most of the students; not to mention points
like no transparencies support or no hardware acceleration. like no transparencies support or no hardware acceleration.
So, I decided to create my own lib, hardware accelerated, clear function names, quite organized, well structured, So, I decided to create my own lib, hardware accelerated, clear function names, quite organized, well structured,
plain C coding and, the most important, primarily intended to LEARN videogames programming. plain C coding and, the most important, primarily intended to LEARN videogames programming.
I've coded quite a lot in C# and XNA and I really love it (in fact, my students learn C# with XNA after C), I've coded quite a lot in C# and XNA and I really love it (in fact, my students learn C# after C),
so, I decided to use C# language notation and XNA naming conventions. That way, students can jump from so, I decided to use C# language notation and XNA naming conventions. That way, students can jump from
raylib to XNA (or MonoGame) extremely easily. raylib to XNA, MonoGame or similar libs extremely easily.
raylib started as a weekend project and after three months of hard work, here it is the first version. raylib started as a weekend project and after three months of hard work, raylib 1.0 was published on November 2013.
Enjoy it. Enjoy it.
notes on raylib 1.1
-------------------
On April 2014, after 6 month of first raylib release, raylib 1.1 has been released. This new version presents a
complete internal redesign of the library to support OpenGL 1.1, OpenGL 3.3+ and OpenGL ES 2.0.
A new module named [rlgl](https://github.com/raysan5/raylib/blob/master/src/rlgl.h) has been added to the library. This new module translates raylib-OpenGL-style
immediate mode functions (i.e. rlVertex3f(), rlBegin(), ...) to different versions of OpenGL (1.1, 3.3+, ES2), selectable by one define.
[rlgl](https://github.com/raysan5/raylib/blob/master/src/rlgl.h) also comes with a second new module named [raymath](https://github.com/raysan5/raylib/blob/master/src/raymath.h), which includes
a bunch of useful functions for 3d-math with vectors, matrices and quaternions.
Some other big changes of this new version have been the support for OGG files loading and stream playing, and the
support of DDS texture files (compressed and uncompressed) along with mipmaps support.
Lots of code changes and lot of testing have concluded in this amazing new raylib 1.1.
notes on raylib 1.2
-------------------
On September 2014, after 5 month of raylib 1.1 release, it comes raylib 1.2. Again, this version presents a
complete internal redesign of [core](https://github.com/raysan5/raylib/blob/master/src/core.c) module to support two new platforms: [Android](http://www.android.com/) and [Raspberry Pi](http://www.raspberrypi.org/).
It's been some month of really hard work to accomodate raylib to those new platforms while keeping it easy for the user.
On Android, raylib manages internally the activity cicle, as well as the inputs; on Raspberry Pi, a complete raw input
system has been written from scratch.
A new display initialization system has been created to support multiple resolutions, adding black bars if required;
user only defines desired screen size and it gets properly displayed.
Now raylib can easily deploy games to Android devices and Raspberry Pi (console mode).
Lots of code changes and lot of testing have concluded in this amazing new raylib 1.2.
In December 2014, new raylib 1.2.2 was published with support to compile directly for web (html5) using [emscripten](http://kripken.github.io/emscripten-site/) and [asm.js](http://asmjs.org/).
notes on raylib 1.3
-------------------
On September 2015, after 1 year of raylib 1.2 release, arrives raylib 1.3. This version adds shaders functionality,
improves tremendously textures module and also provides some new modules (camera system, gestures system, IMGUI).
Shaders support is the biggest addition to raylib 1.3, with support for easy shaders loading and use. Loaded shaders can be
attached to 3d models or used as fullscreen postrocessing effects. A bunch of postprocessing shaders are also included
in this release, check raylib/shaders folder.
Textures module has grown to support most of the internal texture formats available in OpenGL (RGB565, RGB888, RGBA5551, RGBA4444, etc.), including compressed texture formats (DXT, ETC1, ETC2, ASTC, PVRT); raylib 1.3 can load .dds, .pkm, .ktx, .astc and .pvr files.
A brand new [camera](https://github.com/raysan5/raylib/blob/develop/src/camera.c) module offers to the user multiple preconfigured ready-to-use camera systems (free camera, 1st person, 3rd person).
Camera modes are very easy to use, just check examples: [core_3d_camera_free.c](https://github.com/raysan5/raylib/blob/develop/examples/core_3d_camera_free.c) and [core_3d_camera_first_person.c](https://github.com/raysan5/raylib/blob/develop/examples/core_3d_camera_first_person.c).
New [gestures](https://github.com/raysan5/raylib/blob/develop/src/gestures.h) module simplifies gestures detection on Android and HTML5 programs.
[raygui](https://github.com/raysan5/raylib/blob/develop/src/raygui.h), the new IMGUI (Immediate Mode GUI) module offers a set of functions to create simple user interfaces,
primary intended for tools development. It's still in experimental state but already fully functional.
Most of the examples have been completely rewritten and +10 new examples have been added to show the new raylib features.
Lots of code changes and lot of testing have concluded in this amazing new raylib 1.3.
notes on raylib 1.4
-------------------
On February 2016, after 4 months of raylib 1.3 release, it comes raylib 1.4. For this new version,
lots of parts of the library have been reviewed, lots of bugs have been solved and some interesting features have been added.
First big addition is a set of [Image manipulation functions](https://github.com/raysan5/raylib/blob/develop/src/raylib.h#L673) have been added to crop, resize, colorize, flip, dither and even draw image-to-image or text-to-image.
Now a basic image processing can be done before converting the image to texture for usage.
SpriteFonts system has been improved, adding support for AngelCode fonts (.fnt) and TrueType Fonts (using [stb_truetype](https://github.com/nothings/stb/blob/master/stb_truetype.h) helper library).
Now raylib can read standard .fnt font data and also generate at loading a SpriteFont from a TTF file.
New [physac](https://github.com/raysan5/raylib/blob/develop/src/physac.h) physics module for basic 2D physics support. Still in development but already functional.
Module comes with some usage examples for basic jump and level interaction and also force-based physic movements.
[raymath](https://github.com/raysan5/raylib/blob/develop/src/raymath.h) module has been reviewed; some bugs have been solved and the module has been converted to a header-only file for easier portability, optionally, functions can also be used as inline.
[gestures](https://github.com/raysan5/raylib/blob/develop/src/gestures.c) module has redesigned and simplified, now it can process touch events from any source, including mouse.
This way, gestures system can be used on any platform providing an unified way to work with inputs and allowing the user to create multiplatform games with only one source code.
Raspberry Pi input system has been redesigned to better read raw inputs using generic Linux event handlers (keyboard:`stdin`, mouse:`/dev/input/mouse0`, gamepad:`/dev/input/js0`).
Gamepad support has also been added (experimental).
Other important improvements are the functional raycast system for 3D picking, including some ray collision-detection functions,
and the addition of two simple functions for persistent data storage. Now raylib user can save and load game data in a file (only some platforms supported).
A simple [easings](https://github.com/raysan5/raylib/blob/develop/src/easings.h) module has also been added for values animation.
Up to 8 new code examples have been added to show the new raylib features and +10 complete game samples have been provided to learn
how to create some classic games like Arkanoid, Asteroids, Missile Commander, Snake or Tetris.
Lots of code changes and lots of hours of hard work have concluded in this amazing new raylib 1.4.
notes on raylib 1.5
-------------------
On July 2016, after 5 months of raylib 1.4 release, arrives raylib 1.5. This new version is the biggest boost of the library until now, lots of parts of the library have been redesigned, lots of bugs have been solved and some **AMAZING** new features have been added.
VR support: raylib supports **Oculus Rift CV1**, one of the most anticipated VR devices in the market. Additionally, raylib supports simulated VR stereo rendering, independent of the VR device; it means, raylib can generate stereo renders with custom head-mounted-display device parameteres, that way, any VR device in the market can be **simulated in any platform** just configuring device parameters (and consequently, lens distortion). To enable VR is [extremely easy](https://github.com/raysan5/raylib/blob/develop/examples/core_oculus_rift.c).
New materials system: now raylib supports standard material properties for 3D models, including diffuse-ambient-specular colors and diffuse-normal-specular textures. Just assign values to standard material and everything is processed internally.
New lighting system: added support for up to 8 configurable lights and 3 light types: **point**, **directional** and **spot** lights. Just create a light, configure its parameters and raylib manages render internally for every 3d object using standard material.
Complete gamepad support on Raspberry Pi: Gamepad system has been completely redesigned. Now multiple gamepads can be easily configured and used; gamepad data is read and processed in raw mode in a second thread.
Redesigned physics module: [physac](https://github.com/raysan5/raylib/blob/develop/src/physac.h) module has been converted to header only and usage [has been simplified](https://github.com/raysan5/raylib/blob/develop/examples/physics_basic_rigidbody.c). Performance has also been singnificantly improved, now physic objects are managed internally in a second thread.
Audio chiptunese support and mixing channels: Added support for module audio music (.xm, .mod) loading and playing. Multiple mixing channels are now also supported. All this features thanks to the amazing work of @kd7tck.
Other additions include a [2D camera system](https://github.com/raysan5/raylib/blob/develop/examples/core_2d_camera.c), render textures for offline render (and most comprehensive [postprocessing](https://github.com/raysan5/raylib/blob/develop/examples/shaders_postprocessing.c)) or support for legacy OpenGL 2.1 on desktop platforms.
This new version is so massive that is difficult to list all the improvements, most of raylib modules have been reviewed and [rlgl](https://github.com/raysan5/raylib/blob/develop/src/rlgl.c) module has been completely redesigned to accomodate to new material-lighting systems and stereo rendering. You can check [CHANGELOG](https://github.com/raysan5/raylib/blob/develop/CHANGELOG) file for a more detailed list of changes.
Up to 8 new code examples have been added to show the new raylib features and also some samples to show the usage of [rlgl](https://github.com/raysan5/raylib/blob/develop/examples/rlgl_standalone.c) and [audio](https://github.com/raysan5/raylib/blob/develop/examples/audio_standalone.c) raylib modules as standalone libraries.
Lots of code changes (+400 commits) and lots of hours of hard work have concluded in this amazing new raylib 1.5.
features features
-------- --------
* Written in plain C code (C99)
* Uses C# PascalCase/camelCase notation
* Hardware accelerated with OpenGL (1.1, 2.1, 3.3 or ES2)
* Unique OpenGL abstraction layer (usable as standalone module): [rlgl](https://github.com/raysan5/raylib/blob/master/src/rlgl.c)
* Powerful fonts module with multiple SpriteFonts formats support (XNA bitmap fonts, AngelCode fonts, TTF)
* Outstanding texture formats support, including compressed formats (DXT, ETC, PVRT, ASTC)
* Basic 3d support for Shapes, Models, Billboards, Heightmaps and Cubicmaps
* Materials (diffuse, normal, specular) and Lighting (point, directional, spot) support
* Shaders support, including Model shaders and Postprocessing shaders
* Powerful math module for Vector and Matrix operations: [raymath](https://github.com/raysan5/raylib/blob/master/src/raymath.c)
* Audio loading and playing with streaming support and mixing channels (WAV, OGG, XM, MOD)
* VR stereo rendering support with configurable HMD device parameters
* Multiple platforms support: Windows, Linux, Mac, **Android**, **Raspberry Pi**, **HTML5** and **Oculus Rift CV1**
* Custom color palette for fancy visuals on raywhite background
* Minimal external dependencies (GLFW3, OpenGL, OpenAL)
* Written in plain C code (C99) raylib uses on its core module the outstanding [GLFW3](http://www.glfw.org/) library. The best option by far I found for
* Uses C# PascalCase/camelCase notation multiplatform (Windows, Linux, Mac) window/context and input management (clean, focused, great license, well documented, modern, ...).
* Hardware accelerated using OpenGL 1.1
* Transparencies support (RGBA Colors)
* Custom color palette for better use on white background
* Basic 3D Support (camera, basic models, OBJ models, etc)
* Powerful Text module with SpriteFonts support
raylib uses on its core module the outstanding [GLFW3] (http://www.glfw.org/) library. The best option by far I found for raylib uses on its [audio](https://github.com/raysan5/raylib/blob/master/src/audio.c) module, [OpenAL Soft](http://kcat.strangesoft.net/openal.html) audio library, in multiple flavours,
window/context and input management (clean, focused, great license, well documented, modern, ...). to accomodate to Android, Raspberry Pi and HTML5.
raylib is licensed under a zlib/libpng license like GLFW3. View [LICENSE] (https://github.com/raysan5/raylib/blob/master/LICENSE.md). On Android, raylib uses `native_app_glue module` (provided by Android NDK) and native Android libraries to manage window/context, inputs and activity cycle.
tool requirements On Raspberry Pi, raylib uses Videocore API and EGL for window/context management and raw inputs reading.
On Oculus Rift CV1, raylib uses Oculus PC SDK libraries but only the core C library ([LibOVR](https://github.com/raysan5/raylib/tree/develop/src/external/OculusSDK/LibOVR)); runtime library (LibOVRRT32_1.dll) must be linked at compilation time.
raylib is licensed under a zlib/libpng license. View [LICENSE](https://github.com/raysan5/raylib/blob/master/LICENSE.md).
tools requirements
------------------ ------------------
raylib has been developed using exclusively two tools: raylib has been developed using exclusively two tools:
@@ -66,28 +200,17 @@ I believe those are the best tools to train spartan-programmers.
Someone could argue about debugging. raylib is a library intended for learning and I think C it's a clear enough language Someone could argue about debugging. raylib is a library intended for learning and I think C it's a clear enough language
to allow writing small-mid size programs with a printf-based debugging. All raylib examples have also been written this way. to allow writing small-mid size programs with a printf-based debugging. All raylib examples have also been written this way.
building Since raylib v1.1, you can download a Windows Installer package for easy installation and configuration. Check [raylib Webpage](http://www.raylib.com/)
--------
raylib could be build with the following command lines (Using GCC compiler): building source (generate libraylib.a)
--------------------------------------
cd raylib/src Check raylib wiki page: [Compile for...](https://github.com/raysan5/raylib/wiki)
gcc -c core.c -std=c99 -Wall
gcc -c shapes.c -std=c99 -Wall
gcc -c textures.c -std=c99 -Wall
gcc -c stb_image.c -std=c99 -Wall
gcc -c text.c -std=c99 -Wall
gcc -c models.c -std=c99 -Wall
gcc -c vector3.c -std=c99 -Wall
gcc -c audio.c -std=c99 -Wall
gcc -c utils.c -std=c99 -Wall
ar rcs raylib.a core.o shapes.o textures.o stb_image.o text.o models.o vector3.o utils.o audio.o
To compile examples, make sure raylib.h is placed in include path and libraries raylib (libraylib.a) and glfw3 (libglfw3.a) building examples
are placed in the libraries path. It's also recommended to link with file icon.o for fancy raylib icon usage. -----------------
cd raylib/examples Check raylib wiki page: [Compile for...](https://github.com/raysan5/raylib/wiki)
gcc -o test_code.exe test_code.c icon.o -lraylib -lglfw3 -lopengl32 -lgdi32 -std=c99 -Wl,--subsystem,windows
contact contact
------- -------
@@ -95,18 +218,37 @@ contact
* Webpage: [http://www.raylib.com](http://www.raylib.com) * Webpage: [http://www.raylib.com](http://www.raylib.com)
* Twitter: [http://www.twitter.com/raysan5](http://www.twitter.com/raysan5) * Twitter: [http://www.twitter.com/raysan5](http://www.twitter.com/raysan5)
* Facebook: [http://www.facebook.com/raylibgames](http://www.facebook.com/raylibgames) * Facebook: [http://www.facebook.com/raylibgames](http://www.facebook.com/raylibgames)
* Reddit: [https://www.reddit.com/r/raylib](https://www.reddit.com/r/raylib)
* Twitch: [http://www.twitch.tv/raysan5](http://www.twitch.tv/raysan5)
* Patreon: [https://www.patreon.com/raysan5](https://www.patreon.com/raysan5)
If you are using raylib and you enjoy it, please, [let me know][raysan5]. If you are using raylib and you enjoy it, please, [let me know][raysan5].
If you feel you can help, then, [helpme!] (http://www.raylib.com/helpme.htm) If you feel you can help, then, [helpme!](http://www.raylib.com/helpme.htm)
acknowledgments acknowledgements
--------------- ---------------
The following people have contributed in some way to make raylib project a reality. Big thanks to them! I believe that time is the most valuable resource and the following people have invested part of their time
contributing (in some way or another) to make raylib project better. Huge thanks!
- [Zopokx](https://github.com/Zopokx)
- [Elendow](http://www.elendow.com)
- [Zopokx](https://github.com/Zopokx) for testing the web.
- [Elendow](http://www.elendow.com) for testing and helping on web development.
- Victor Dual for implementing and testing 3D shapes functions.
- Marc Palau for implementing and testing 3D shapes functions and contribute on camera and gestures modules.
- Kevin Gato for improving texture internal formats support and helping on raygui development.
- Daniel Nicolas for improving texture internal formats support and helping on raygui development.
- Marc Agüera 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))
- Sergio Martinez 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.
- 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.
- [procedural](https://github.com/procedural) for testing raylib on Linux, correcting some bugs and adding several mouse functions.
- [Chris Hemingway](https://github.com/cHemingway) for improving raylib on OSX build system.
- [Emanuele Petriglia](https://github.com/LelixSuper) for working on multiple GNU/Linux improvements and developing [TicTacToe](https://github.com/LelixSuper/TicTacToe) raylib game.
- [Joshua Reisenauer](https://github.com/kd7tck) for adding audio modules support (XM, MOD) and reviewing audio system.
[raysan5]: mailto:raysan@raysanweb.com "Ramon Santamaria - Ray San" [raysan5]: mailto:raysan5@gmail.com "Ramon Santamaria - Ray San"

View File

@@ -1,22 +1,43 @@
roadmap roadmap
------- -------
First version of raylib is quite complete and functional but there is still a lot of things I would like to improve. Current version of raylib is quite complete and functional but there is still a lot of things to add and improve.
Here it is a list of features I would like to add and functions to improve. Here it is a wish list of features I would like to add and functions to improve.
Around the source code there are some TODO points with pending revisions/bugs and here it is a list of features I would like to add. Note that around the raylib source code there are multiple TODO points with pending revisions/bugs. Check [GitHub Issues](https://github.com/raysan5/raylib/issues) for further details!
raylib v1.x raylib 1.x
[IN PROGRESS] LUA scripting support (wrapper to lua lib)
Basic GPU stats sytem (memory, draws, time...)
Procedural image generation functions (spot, gradient, noise...)
Procedural mesh generation functions (cube, cone, sphere...)
Touch-based camera controls for Android
Skybox and Fog support
raylib 1.5
[DONE] Support Oculus Rift CV1 and VR stereo rendering (simulator)
[DONE] Redesign Shaders/Textures system -> New Materials system
[DONE] Support lighting: Omni, Directional and Spot lights
[DONE] Redesign physics module (physac)
[DONE] Chiptunes audio modules support
raylib 1.4
[DONE] TTF fonts support (using stb_truetype)
[DONE] Raycast system for 3D picking (including collisions detection)
[DONE] Floyd-Steinberg dithering on 16bit image format conversion
[DONE] Basic image manipulation functions (crop, resize, draw...)
[DONE] Storage load/save data functionality
[DONE] Add Physics module (physac)
[DONE] Remove GLEW dependency -> Replaced by GLAD
[DONE] Redesign Raspberry PI inputs system
[DONE] Redesign gestures module to be multiplatform
[DONE] Module raymath as header-only and functions inline
[DONE] Add Easings module (easings.h)
- Review Billboard Drawing functions
- Review Heightmap Loading and Drawing functions - Load Heightmap directly as a Model
- Lighting support (only 3d mode) - CreateLight()
- [DONE] Simple Collision Detection functions
- Default scene Camera controls (zoom, pan, rotate)
- Basic Procedural Texture / Image generation (Gradient, Checked, Spot, Noise, Cellular)
- Software mipmapping generation and POT conversion (custom implementation)
- Comments / Functions translation (?)
Any feature missing? Do you have a request? [Let me know!][raysan5] Any feature missing? Do you have a request? [Let me know!][raysan5]
[raysan5]: mailto:raysan@raysanweb.com "Ramon Santamaria - Ray San" [raysan5]: mailto:raysan5@gmail.com "Ramon Santamaria - Ray San"
[isssues]: https://github.com/raysan5/raylib/issues

475
examples/Makefile Normal file
View File

@@ -0,0 +1,475 @@
#**************************************************************************************************
#
# raylib makefile for desktop platforms, Raspberry Pi and HTML5 (emscripten)
#
# Copyright (c) 2013-2016 Ramon Santamaria (@raysan5)
#
# This software is provided "as-is", without any express or implied warranty. In no event
# will the authors be held liable for any damages arising from the use of this software.
#
# Permission is granted to anyone to use this software for any purpose, including commercial
# applications, and to alter it and redistribute it freely, subject to the following restrictions:
#
# 1. The origin of this software must not be misrepresented; you must not claim that you
# wrote the original software. If you use this software in a product, an acknowledgment
# in the product documentation would be appreciated but is not required.
#
# 2. Altered source versions must be plainly marked as such, and must not be misrepresented
# as being the original software.
#
# 3. This notice may not be removed or altered from any source distribution.
#
#**************************************************************************************************
# define raylib platform to compile for
# 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()
PLATFORM ?= PLATFORM_DESKTOP
# determine PLATFORM_OS in case PLATFORM_DESKTOP selected
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
# No uname.exe on MinGW!, but OS=Windows_NT on Windows! ifeq ($(UNAME),Msys) -> Windows
ifeq ($(OS),Windows_NT)
PLATFORM_OS=WINDOWS
LIBPATH=win32
else
UNAMEOS:=$(shell uname)
ifeq ($(UNAMEOS),Linux)
PLATFORM_OS=LINUX
LIBPATH=linux
else
ifeq ($(UNAMEOS),Darwin)
PLATFORM_OS=OSX
LIBPATH=osx
endif
endif
endif
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
# -Wall turns on most, but not all, compiler warnings
# -std=c99 use standard C from 1999 revision
ifeq ($(PLATFORM),PLATFORM_RPI)
CFLAGS = -O2 -Wall -std=gnu99 -fgnu89-inline
else
CFLAGS = -O2 -Wall -std=c99
endif
ifeq ($(PLATFORM),PLATFORM_WEB)
CFLAGS = -O1 -Wall -std=c99 -s USE_GLFW=3 -s ASSERTIONS=1 --preload-file resources
#-s ALLOW_MEMORY_GROWTH=1 # to allow memory resizing
#-s TOTAL_MEMORY=16777216 # to specify heap memory size (default = 16MB)
endif
#CFLAGSEXTRA = -Wextra -Wmissing-prototypes -Wstrict-prototypes
# define any directories containing required header files
INCLUDES = -I. -I../src -I../src/external
ifeq ($(PLATFORM),PLATFORM_RPI)
INCLUDES += -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads
endif
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
# add standard directories for GNU/Linux
ifeq ($(PLATFORM_OS),LINUX)
INCLUDES += -I/usr/local/include/raylib/
else ifeq ($(PLATFORM_OS),WINDOWS)
# external libraries headers
# GLFW3
INCLUDES += -I../src/external/glfw3/include
# OpenAL Soft
INCLUDES += -I../src/external/openal_soft/include
endif
endif
# define library paths containing required libs
LFLAGS = -L. -L../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../src/external/glfw3/lib/$(LIBPATH)
# OpenAL Soft
LFLAGS += -L../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
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
ifeq ($(PLATFORM_OS),LINUX)
# libraries for Debian GNU/Linux desktop compiling
# requires the following packages:
# libglfw3-dev libopenal-dev libegl1-mesa-dev
LIBS = -lraylib -lglfw3 -lGL -lopenal -lm -pthread -ldl
# on XWindow could require also below libraries, just uncomment
#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 -lglfw3 -framework OpenGL -framework OpenAl -framework Cocoa
else
# libraries for Windows desktop compiling
# NOTE: GLFW3 and OpenAL Soft libraries should be installed
LIBS = -lraylib -lglfw3 -lopengl32 -lopenal32 -lgdi32
endif
endif
endif
ifeq ($(PLATFORM),PLATFORM_RPI)
# libraries for Raspberry Pi compiling
# NOTE: OpenAL Soft library should be installed (libopenal1 package)
LIBS = -lraylib -lGLESv2 -lEGL -lpthread -lrt -lm -lbcm_host -lopenal
endif
ifeq ($(PLATFORM),PLATFORM_WEB)
# just adjust the correct path to libraylib.bc
LIBS = ../release/html5/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 = ../src/resources -Wl,--subsystem,windows
endif
ifeq ($(PLATFORM),PLATFORM_WEB)
EXT = .html
endif
# define all object files required
EXAMPLES = \
core_basic_window \
core_input_keys \
core_input_mouse \
core_mouse_wheel \
core_input_gamepad \
core_random_values \
core_color_select \
core_drop_files \
core_storage_values \
core_gestures_detection \
core_3d_mode \
core_3d_picking \
core_3d_camera_free \
core_3d_camera_first_person \
core_2d_camera \
core_world_screen \
core_oculus_rift \
shapes_logo_raylib \
shapes_basic_shapes \
shapes_colors_palette \
shapes_logo_raylib_anim \
textures_logo_raylib \
textures_image_loading \
textures_rectangle \
textures_srcrec_dstrec \
textures_to_image \
textures_raw_data \
textures_formats_loading \
textures_particles_trail_blending \
textures_image_processing \
textures_image_drawing \
text_sprite_fonts \
text_bmfont_ttf \
text_rbmf_fonts \
text_format_text \
text_font_select \
text_writing_anim \
models_geometric_shapes \
models_box_collisions \
models_billboard \
models_obj_loading \
models_heightmap \
models_cubicmap \
shaders_model_shader \
shaders_shapes_textures \
shaders_custom_uniform \
shaders_postprocessing \
shaders_standard_lighting \
audio_sound_loading \
audio_music_stream \
audio_module_playing \
fix_dylib \
# typing 'make' will invoke the default target entry called 'all',
# in this case, the 'default' target entry is raylib
all: examples
# compile all examples
examples: $(EXAMPLES)
# compile [core] example - basic window
core_basic_window: core_basic_window.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - keyboard input
core_input_keys: core_input_keys.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - mouse input
core_input_mouse: core_input_mouse.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - mouse wheel
core_mouse_wheel: core_mouse_wheel.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - gamepad input
core_input_gamepad: core_input_gamepad.c
ifeq ($(PLATFORM), $(filter $(PLATFORM),PLATFORM_DESKTOP PLATFORM_RPI))
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
else
@echo core_input_gamepad: Example not supported on PLATFORM_ANDROID or PLATFORM_WEB
endif
# compile [core] example - generate random values
core_random_values: core_random_values.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - color selection (collision detection)
core_color_select: core_color_select.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - drop files
core_drop_files: core_drop_files.c
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
else
@echo core_drop_files: Example not supported on PLATFORM_ANDROID or PLATFORM_WEB or PLATFORM_RPI
endif
# compile [core] example - storage values
core_storage_values: core_storage_values.c
ifeq ($(PLATFORM), $(filter $(PLATFORM),PLATFORM_DESKTOP PLATFORM_RPI))
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
else
@echo core_storage_values: Example not supported on PLATFORM_ANDROID or PLATFORM_WEB
endif
# compile [core] example - gestures detection
core_gestures_detection: core_gestures_detection.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - 3d mode
core_3d_mode: core_3d_mode.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - 3d picking
core_3d_picking: core_3d_picking.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - 3d camera free
core_3d_camera_free: core_3d_camera_free.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - 3d camera first person
core_3d_camera_first_person: core_3d_camera_first_person.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - 2d camera
core_2d_camera: core_2d_camera.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - world screen
core_world_screen: core_world_screen.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [core] example - oculus rift
core_oculus_rift: core_oculus_rift.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [shapes] example - raylib logo (with basic shapes)
shapes_logo_raylib: shapes_logo_raylib.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [shapes] example - basic shapes usage (rectangle, circle, ...)
shapes_basic_shapes: shapes_basic_shapes.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [shapes] example - raylib color palette
shapes_colors_palette: shapes_colors_palette.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [shapes] example - raylib logo animation
shapes_logo_raylib_anim: shapes_logo_raylib_anim.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - raylib logo texture loading
textures_logo_raylib: textures_logo_raylib.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - image loading and conversion to texture
textures_image_loading: textures_image_loading.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - texture rectangle drawing
textures_rectangle: textures_rectangle.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - texture source and destination rectangles
textures_srcrec_dstrec: textures_srcrec_dstrec.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - texture to image
textures_to_image: textures_to_image.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - texture raw data
textures_raw_data: textures_raw_data.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - texture formats loading
textures_formats_loading: textures_formats_loading.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - texture particles trail blending
textures_particles_trail_blending: textures_particles_trail_blending.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - texture image processing
textures_image_processing: textures_image_processing.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [textures] example - texture image drawing
textures_image_drawing: textures_image_drawing.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [text] example - sprite fonts loading
text_sprite_fonts: text_sprite_fonts.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [text] example - bmfonts and ttf loading
text_bmfont_ttf: text_bmfont_ttf.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [text] example - raylib bitmap fonts (rBMF)
text_rbmf_fonts: text_rbmf_fonts.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [text] example - text formatting
text_format_text: text_format_text.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [text] example - font selection program
text_font_select: text_font_select.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [text] example - text writing animation
text_writing_anim: text_writing_anim.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [models] example - basic geometric 3d shapes
models_geometric_shapes: models_geometric_shapes.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [models] example - box collisions
models_box_collisions: models_box_collisions.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [models] example - basic window
models_planes: models_planes.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [models] example - billboard usage
models_billboard: models_billboard.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [models] example - OBJ model loading
models_obj_loading: models_obj_loading.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [models] example - heightmap loading
models_heightmap: models_heightmap.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [models] example - cubesmap loading
models_cubicmap: models_cubicmap.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [shaders] example - model shader
shaders_model_shader: shaders_model_shader.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [shaders] example - shapes texture shader
shaders_shapes_textures: shaders_shapes_textures.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [shaders] example - custom uniform in shader
shaders_custom_uniform: shaders_custom_uniform.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [shaders] example - postprocessing shader
shaders_postprocessing: shaders_postprocessing.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [shaders] example - standard lighting
shaders_standard_lighting: shaders_standard_lighting.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [audio] example - sound loading and playing (WAV and OGG)
audio_sound_loading: audio_sound_loading.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [audio] example - music stream playing (OGG)
audio_music_stream: audio_music_stream.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# compile [audio] example - module playing (OGG)
audio_module_playing: audio_module_playing.c
$(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM) $(WINFLAGS)
# fix dylib install path name for each executable (MAC)
fix_dylib:
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
endif
# clean everything
clean:
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
ifeq ($(PLATFORM_OS),OSX)
find . -type f -perm +ugo+x -delete
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
endif
endif
endif
ifeq ($(PLATFORM),PLATFORM_RPI)
find . -type f -executable -delete
rm -f *.o
endif
ifeq ($(PLATFORM),PLATFORM_WEB)
del *.o *.html *.js
endif
@echo Cleaning done
# instead of defining every module one by one, we can define a pattern
# this pattern below will automatically compile every module defined on $(OBJS)
#%.exe : %.c
# $(CC) -o $@ $< $(CFLAGS) $(INCLUDES) $(LFLAGS) $(LIBS) -D$(PLATFORM)

View File

@@ -0,0 +1,138 @@
/*******************************************************************************************
*
* raylib [audio] example - Module playing (streaming)
*
* NOTE: This example requires OpenAL Soft library installed
*
* This example has been created using raylib 1.5 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2016 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
#define MAX_CIRCLES 64
typedef struct {
Vector2 position;
float radius;
float alpha;
float speed;
Color color;
} CircleWave;
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [audio] example - module playing (streaming)");
InitAudioDevice(); // Initialize audio device
Color colors[14] = { ORANGE, RED, GOLD, LIME, BLUE, VIOLET, BROWN, LIGHTGRAY, PINK,
YELLOW, GREEN, SKYBLUE, PURPLE, BEIGE };
// Creates ome circles for visual effect
CircleWave circles[MAX_CIRCLES];
for (int i = MAX_CIRCLES - 1; i >= 0; i--)
{
circles[i].alpha = 0.0f;
circles[i].radius = GetRandomValue(10, 40);
circles[i].position.x = GetRandomValue(circles[i].radius, screenWidth - circles[i].radius);
circles[i].position.y = GetRandomValue(circles[i].radius, screenHeight - circles[i].radius);
circles[i].speed = (float)GetRandomValue(1, 100)/20000.0f;
circles[i].color = colors[GetRandomValue(0, 13)];
}
// Load postprocessing bloom shader
Shader shader = LoadShader("resources/shaders/glsl330/base.vs",
"resources/shaders/glsl330/bloom.fs");
// Create a RenderTexture2D to be used for render to texture
RenderTexture2D target = LoadRenderTexture(screenWidth, screenHeight);
PlayMusicStream(0, "resources/audio/2t2m_spa.xm"); // Play module stream
float timePlayed = 0.0f;
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
//----------------------------------------------------------------------------------
for (int i = MAX_CIRCLES - 1; i >= 0; i--)
{
circles[i].alpha += circles[i].speed;
circles[i].radius += circles[i].speed*10.0f;
if (circles[i].alpha > 1.0f) circles[i].speed *= -1;
if (circles[i].alpha <= 0.0f)
{
circles[i].alpha = 0.0f;
circles[i].radius = GetRandomValue(10, 40);
circles[i].position.x = GetRandomValue(circles[i].radius, screenWidth - circles[i].radius);
circles[i].position.y = GetRandomValue(circles[i].radius, screenHeight - circles[i].radius);
circles[i].color = colors[GetRandomValue(0, 13)];
circles[i].speed = (float)GetRandomValue(1, 100)/20000.0f;
}
}
// Get timePlayed scaled to bar dimensions
timePlayed = (GetMusicTimePlayed(0)/GetMusicTimeLength(0)*(screenWidth - 40))*2;
UpdateMusicStream(0); // Update music buffer with new stream data
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(BLACK);
BeginTextureMode(target); // Enable drawing to texture
for (int i = MAX_CIRCLES - 1; i >= 0; i--)
{
DrawCircleV(circles[i].position, circles[i].radius, Fade(circles[i].color, circles[i].alpha));
}
EndTextureMode(); // End drawing to texture (now we have a texture available for next passes)
BeginShaderMode(shader);
// NOTE: Render texture must be y-flipped due to default OpenGL coordinates (left-bottom)
DrawTextureRec(target.texture, (Rectangle){ 0, 0, target.texture.width, -target.texture.height }, (Vector2){ 0, 0 }, WHITE);
EndShaderMode();
// Draw time bar
DrawRectangle(20, screenHeight - 20 - 12, screenWidth - 40, 12, LIGHTGRAY);
DrawRectangle(20, screenHeight - 20 - 12, (int)timePlayed, 12, MAROON);
DrawRectangleLines(20, screenHeight - 20 - 12, screenWidth - 40, 12, WHITE);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
UnloadShader(shader); // Unload shader
UnloadRenderTexture(target); // Unload render texture
CloseAudioDevice(); // Close audio device (music streaming is automatically stopped)
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

View File

@@ -0,0 +1,92 @@
/*******************************************************************************************
*
* raylib [audio] example - Music playing (streaming)
*
* NOTE: This example requires OpenAL Soft library installed
*
* This example has been created using raylib 1.3 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2015 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [audio] example - music playing (streaming)");
InitAudioDevice(); // Initialize audio device
PlayMusicStream(0, "resources/audio/guitar_noodling.ogg"); // Play music stream
int framesCounter = 0;
float timePlayed = 0.0f;
//float volume = 1.0;
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
//----------------------------------------------------------------------------------
framesCounter++;
// Testing music fading from one file to another
/*
if (framesCounter > 600) // Wait for 10 seconds (600 frames)
{
volume -= 0.01; // Decrement music volume level
// When music volume level equal or lower than 0,
// restore volume level and init another music file
if (volume <= 0)
{
volume = 1.0;
framesCounter = 0;
PlayMusicStream(1, "resources/audio/another_file.ogg");
}
SetMusicVolume(volume);
}
*/
if (IsWindowMinimized()) PauseMusicStream(0);
else ResumeMusicStream(0);
timePlayed = GetMusicTimePlayed(0)/GetMusicTimeLength(0)*100*4; // We scale by 4 to fit 400 pixels
UpdateMusicStream(0); // Update music buffer with new stream data
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
DrawText("MUSIC SHOULD BE PLAYING!", 255, 200, 20, LIGHTGRAY);
DrawRectangle(200, 250, 400, 12, LIGHTGRAY);
DrawRectangle(200, 250, (int)timePlayed, 12, MAROON);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
CloseAudioDevice(); // Close audio device (music streaming is automatically stopped)
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,13 +1,13 @@
/******************************************************************************************* /*******************************************************************************************
* *
* raylib example 08 - Audio loading and playing * raylib [audio] example - Sound loading and playing
* *
* NOTE: This example requires OpenAL32 dll installed (or in the same folder) * NOTE: This example requires OpenAL Soft library installed
* *
* This example has been created using raylib 1.0 (www.raylib.com) * This example has been created using raylib 1.0 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
* *
* Copyright (c) 2013 Ramon Santamaria (Ray San - raysan@raysanweb.com) * Copyright (c) 2014 Ramon Santamaria (@raysan5)
* *
********************************************************************************************/ ********************************************************************************************/
@@ -19,42 +19,50 @@ int main()
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
int screenWidth = 800; int screenWidth = 800;
int screenHeight = 450; int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib example 08 - audio loading and playing"); InitWindow(screenWidth, screenHeight, "raylib [audio] example - sound loading and playing");
InitAudioDevice(); // Initialize audio device InitAudioDevice(); // Initialize audio device
Sound fxWav = LoadSound("resources/audio/weird.wav"); // Load WAV audio file
Sound fxOgg = LoadSound("resources/audio/tanatana.ogg"); // Load OGG audio file
Sound fx = LoadSound("resources/audio/weird.wav"); // Load WAV audio file SetTargetFPS(60);
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
// Main game loop // Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key while (!WindowShouldClose()) // Detect window close button or ESC key
{ {
// Update // Update
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
if (IsKeyPressed(KEY_SPACE)) PlaySound(fx); // Play the sound! if (IsKeyPressed(KEY_SPACE)) PlaySound(fxWav); // Play WAV sound
if (IsKeyPressed(KEY_ENTER)) PlaySound(fxOgg); // Play OGG sound
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Draw // Draw
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
BeginDrawing(); BeginDrawing();
ClearBackground(RAYWHITE); ClearBackground(RAYWHITE);
DrawText("Press SPACE to PLAY the SOUND!", 240, 200, 20, LIGHTGRAY); DrawText("Press SPACE to PLAY the WAV sound!", 200, 180, 20, LIGHTGRAY);
DrawText("Press ENTER to PLAY the OGG sound!", 200, 220, 20, LIGHTGRAY);
EndDrawing(); EndDrawing();
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
} }
// De-Initialization // De-Initialization
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
UnloadSound(fx); // Unload sound data UnloadSound(fxWav); // Unload sound data
UnloadSound(fxOgg); // Unload sound data
CloseAudioDevice(); // Close audio device CloseAudioDevice(); // Close audio device
CloseWindow(); // Close window and OpenGL context CloseWindow(); // Close window and OpenGL context
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
return 0; return 0;
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,74 @@
/*******************************************************************************************
*
* raylib [audio] example - Using audio module as standalone module
*
* NOTE: This example does not require any graphic device, it can run directly on console.
*
* [audio] module requires some external libs:
* OpenAL Soft - Audio device management lib (http://kcat.strangesoft.net/openal.html)
* stb_vorbis - Ogg audio files loading (http://www.nothings.org/stb_vorbis/)
* jar_xm - XM module file loading
* jar_mod - MOD audio file loading
*
* Compile audio module using:
* gcc -c audio.c stb_vorbis.c -Wall -std=c99 -DAUDIO_STANDALONE
*
* Compile example using:
* gcc -o $(NAME_PART).exe $(FILE_NAME) audio.o stb_vorbis.o -lopenal32 -std=c99
*
* This example has been created using raylib 1.5 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2015 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include <stdio.h>
#include <conio.h> // Windows only, no stardard library
#include "audio.h"
#define KEY_ESCAPE 27
int main()
{
unsigned char key;
InitAudioDevice();
Sound fxWav = LoadSound("resources/audio/weird.wav"); // Load WAV audio file
Sound fxOgg = LoadSound("resources/audio/tanatana.ogg"); // Load OGG audio file
PlayMusicStream(0, "resources/audio/guitar_noodling.ogg");
printf("\nPress s or d to play sounds...\n");
while (key != KEY_ESCAPE)
{
if (kbhit()) key = getch();
if (key == 's')
{
PlaySound(fxWav);
key = 0;
}
if (key == 'd')
{
PlaySound(fxOgg);
key = 0;
}
UpdateMusicStream(0);
}
UnloadSound(fxWav); // Unload sound data
UnloadSound(fxOgg); // Unload sound data
CloseAudioDevice();
printf("\n\nPress ENTER to close...");
getchar();
return 0;
}

139
examples/core_2d_camera.c Normal file
View File

@@ -0,0 +1,139 @@
/*******************************************************************************************
*
* raylib [core] example - 2d camera
*
* This example has been created using raylib 1.5 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2016 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
#define MAX_BUILDINGS 100
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [core] example - 2d camera");
Rectangle player = { 400, 280, 40, 40 };
Rectangle buildings[MAX_BUILDINGS];
Color buildColors[MAX_BUILDINGS];
int spacing = 0;
for (int i = 0; i < MAX_BUILDINGS; i++)
{
buildings[i].width = GetRandomValue(50, 200);
buildings[i].height = GetRandomValue(100, 800);
buildings[i].y = screenHeight - 130 - buildings[i].height;
buildings[i].x = -6000 + spacing;
spacing += buildings[i].width;
buildColors[i] = (Color){ GetRandomValue(200, 240), GetRandomValue(200, 240), GetRandomValue(200, 250), 255 };
}
Camera2D camera;
camera.target = (Vector2){ player.x + 20, player.y + 20 };
camera.offset = (Vector2){ 0, 0 };
camera.rotation = 0.0f;
camera.zoom = 1.0f;
SetTargetFPS(60);
//--------------------------------------------------------------------------------------
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
// Update
//----------------------------------------------------------------------------------
if (IsKeyDown(KEY_RIGHT))
{
player.x += 2; // Player movement
camera.offset.x -= 2; // Camera displacement with player movement
}
else if (IsKeyDown(KEY_LEFT))
{
player.x -= 2; // Player movement
camera.offset.x += 2; // Camera displacement with player movement
}
// Camera target follows player
camera.target = (Vector2){ player.x + 20, player.y + 20 };
// Camera rotation controls
if (IsKeyDown(KEY_A)) camera.rotation--;
else if (IsKeyDown(KEY_S)) camera.rotation++;
// Limit camera rotation to 80 degrees (-40 to 40)
if (camera.rotation > 40) camera.rotation = 40;
else if (camera.rotation < -40) camera.rotation = -40;
// Camera zoom controls
camera.zoom += ((float)GetMouseWheelMove()*0.05f);
if (camera.zoom > 3.0f) camera.zoom = 3.0f;
else if (camera.zoom < 0.1f) camera.zoom = 0.1f;
// Camera reset (zoom and rotation)
if (IsKeyPressed(KEY_R))
{
camera.zoom = 1.0f;
camera.rotation = 0.0f;
}
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
Begin2dMode(camera);
DrawRectangle(-6000, 320, 13000, 8000, DARKGRAY);
for (int i = 0; i < MAX_BUILDINGS; i++) DrawRectangleRec(buildings[i], buildColors[i]);
DrawRectangleRec(player, RED);
DrawRectangle(camera.target.x, -500, 1, screenHeight*4, GREEN);
DrawRectangle(-500, camera.target.y, screenWidth*4, 1, GREEN);
End2dMode();
DrawText("SCREEN AREA", 640, 10, 20, RED);
DrawRectangle(0, 0, screenWidth, 5, RED);
DrawRectangle(0, 5, 5, screenHeight - 10, RED);
DrawRectangle(screenWidth - 5, 5, 5, screenHeight - 10, RED);
DrawRectangle(0, screenHeight - 5, screenWidth, 5, RED);
DrawRectangle( 10, 10, 250, 113, Fade(SKYBLUE, 0.5f));
DrawRectangleLines( 10, 10, 250, 113, BLUE);
DrawText("Free 2d camera controls:", 20, 20, 10, BLACK);
DrawText("- Right/Left to move Offset", 40, 40, 10, DARKGRAY);
DrawText("- Mouse Wheel to Zoom in-out", 40, 60, 10, DARKGRAY);
DrawText("- A / S to Rotate", 40, 80, 10, DARKGRAY);
DrawText("- R to reset Zoom and Rotation", 40, 100, 10, DARKGRAY);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

BIN
examples/core_2d_camera.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -0,0 +1,95 @@
/*******************************************************************************************
*
* raylib [core] example - 3d camera first person
*
* This example has been created using raylib 1.3 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2015 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
#define MAX_COLUMNS 20
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera first person");
// Define the camera to look into our 3d world (position, target, up vector)
Camera camera = {{ 0.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 60.0f };
// Generates some random columns
float heights[MAX_COLUMNS];
Vector3 positions[MAX_COLUMNS];
Color colors[MAX_COLUMNS];
for (int i = 0; i < MAX_COLUMNS; i++)
{
heights[i] = (float)GetRandomValue(1, 12);
positions[i] = (Vector3){ GetRandomValue(-15, 15), heights[i]/2, GetRandomValue(-15, 15) };
colors[i] = (Color){ GetRandomValue(20, 255), GetRandomValue(10, 55), 30, 255 };
}
Vector3 playerPosition = { 4.0f, 2.0f, 4.0f }; // Define player position
SetCameraMode(CAMERA_FIRST_PERSON); // Set a first person camera mode
SetCameraFovy(camera.fovy); // Set internal camera field-of-view Y
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
//----------------------------------------------------------------------------------
UpdateCameraPlayer(&camera, &playerPosition); // Update camera and player position
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
Begin3dMode(camera);
DrawPlane((Vector3){ 0.0f, 0.0f, 0.0f }, (Vector2){ 32.0f, 32.0f }, LIGHTGRAY); // Draw ground
DrawCube((Vector3){ -16.0f, 2.5f, 0.0f }, 1.0f, 5.0f, 32.0f, BLUE); // Draw a blue wall
DrawCube((Vector3){ 16.0f, 2.5f, 0.0f }, 1.0f, 5.0f, 32.0f, LIME); // Draw a green wall
DrawCube((Vector3){ 0.0f, 2.5f, 16.0f }, 32.0f, 5.0f, 1.0f, GOLD); // Draw a yellow wall
// Draw some cubes around
for (int i = 0; i < MAX_COLUMNS; i++)
{
DrawCube(positions[i], 2.0f, heights[i], 2.0f, colors[i]);
DrawCubeWires(positions[i], 2.0f, heights[i], 2.0f, MAROON);
}
End3dMode();
DrawRectangle( 10, 10, 220, 70, Fade(SKYBLUE, 0.5f));
DrawRectangleLines( 10, 10, 220, 70, BLUE);
DrawText("First person camera default controls:", 20, 20, 10, BLACK);
DrawText("- Move with keys: W, A, S, D", 40, 40, 10, DARKGRAY);
DrawText("- Mouse move to look around", 40, 60, 10, DARKGRAY);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1,83 @@
/*******************************************************************************************
*
* raylib [core] example - Initialize 3d camera free
*
* This example has been created using raylib 1.3 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2015 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera free");
// Define the camera to look into our 3d world
Camera camera;
camera.position = (Vector3){ 0.0f, 10.0f, 10.0f }; // Camera position
camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target)
camera.fovy = 45.0f; // Camera field-of-view Y
Vector3 cubePosition = { 0.0f, 0.0f, 0.0f };
SetCameraMode(CAMERA_FREE); // Set a free camera mode
SetCameraPosition(camera.position); // Set internal camera position to match our camera position
SetCameraTarget(camera.target); // Set internal camera target to match our camera target
SetCameraFovy(camera.fovy); // Set internal camera field-of-view Y
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
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
Begin3dMode(camera);
DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED);
DrawCubeWires(cubePosition, 2.0f, 2.0f, 2.0f, MAROON);
DrawGrid(10, 1.0f);
End3dMode();
DrawRectangle( 10, 10, 320, 133, Fade(SKYBLUE, 0.5f));
DrawRectangleLines( 10, 10, 320, 133, BLUE);
DrawText("Free camera default controls:", 20, 20, 10, BLACK);
DrawText("- Mouse Wheel to Zoom in-out", 40, 40, 10, DARKGRAY);
DrawText("- Mouse Wheel Pressed to Pan", 40, 60, 10, DARKGRAY);
DrawText("- Alt + Mouse Wheel Pressed to Rotate", 40, 80, 10, DARKGRAY);
DrawText("- Alt + Ctrl + Mouse Wheel Pressed for Smooth Zoom", 40, 100, 10, DARKGRAY);
DrawText("- Z to zoom to (0, 0, 0)", 40, 120, 10, DARKGRAY);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -1,11 +1,11 @@
/******************************************************************************************* /*******************************************************************************************
* *
* raylib example 07a - Initialize 3d mode * raylib [core] example - Initialize 3d mode
* *
* This example has been created using raylib 1.0 (www.raylib.com) * This example has been created using raylib 1.0 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
* *
* Copyright (c) 2013 Ramon Santamaria (Ray San - raysan@raysanweb.com) * Copyright (c) 2014 Ramon Santamaria (@raysan5)
* *
********************************************************************************************/ ********************************************************************************************/
@@ -18,13 +18,20 @@ int main()
int screenWidth = 800; int screenWidth = 800;
int screenHeight = 450; int screenHeight = 450;
Vector3 position = { 0.0, 0.0, 0.0 }; InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d mode");
Camera camera = {{ 0.0, 10.0, 10.0 }, { 0.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }}; // Define the camera to look into our 3d world
Camera camera;
InitWindow(screenWidth, screenHeight, "raylib example 07a - 3d mode"); camera.position = (Vector3){ 0.0f, 10.0f, 10.0f }; // Camera position
camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target)
camera.fovy = 45.0f; // Camera field-of-view Y
Vector3 cubePosition = { 0.0f, 0.0f, 0.0f };
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
// Main game loop // Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key while (!WindowShouldClose()) // Detect window close button or ESC key
{ {
@@ -32,25 +39,26 @@ int main()
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// TODO: Update your variables here // TODO: Update your variables here
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Draw // Draw
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
BeginDrawing(); BeginDrawing();
ClearBackground(WHITE);
Begin3dMode(camera);
DrawCube(position, 2, 2, 2, RED);
DrawGrid(10.0, 1.0); ClearBackground(RAYWHITE);
Begin3dMode(camera);
DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED);
DrawCubeWires(cubePosition, 2.0f, 2.0f, 2.0f, MAROON);
DrawGrid(10, 1.0f);
End3dMode(); End3dMode();
DrawText("Welcome to the third dimension!", 10, 40, 20, DARKGRAY); DrawText("Welcome to the third dimension!", 10, 40, 20, DARKGRAY);
DrawFPS(10, 10); DrawFPS(10, 10);
EndDrawing(); EndDrawing();
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
} }
@@ -59,6 +67,6 @@ int main()
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context CloseWindow(); // Close window and OpenGL context
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
return 0; return 0;
} }

View File

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

106
examples/core_3d_picking.c Normal file
View File

@@ -0,0 +1,106 @@
/*******************************************************************************************
*
* raylib [core] example - Picking in 3d mode
*
* This example has been created using raylib 1.3 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2015 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d picking");
// Define the camera to look into our 3d world
Camera camera;
camera.position = (Vector3){ 0.0f, 10.0f, 10.0f }; // Camera position
camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target)
camera.fovy = 45.0f; // Camera field-of-view Y
Vector3 cubePosition = { 0.0f, 1.0f, 0.0f };
Vector3 cubeSize = { 2.0f, 2.0f, 2.0f };
Ray ray; // Picking line ray
bool collision = false;
SetCameraMode(CAMERA_FREE); // Set a free camera mode
SetCameraPosition(camera.position); // Set internal camera position to match our camera position
SetCameraFovy(camera.fovy); // Set internal camera field-of-view Y
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))
{
// NOTE: This function is NOT WORKING properly!
ray = GetMouseRay(GetMousePosition(), camera);
// Check collision between ray and box
collision = CheckCollisionRayBox(ray,
(BoundingBox){(Vector3){ cubePosition.x - cubeSize.x/2, cubePosition.y - cubeSize.y/2, cubePosition.z - cubeSize.z/2 },
(Vector3){ cubePosition.x + cubeSize.x/2, cubePosition.y + cubeSize.y/2, cubePosition.z + cubeSize.z/2 }});
}
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
Begin3dMode(camera);
if (collision)
{
DrawCube(cubePosition, cubeSize.x, cubeSize.y, cubeSize.z, RED);
DrawCubeWires(cubePosition, cubeSize.x, cubeSize.y, cubeSize.z, MAROON);
DrawCubeWires(cubePosition, cubeSize.x + 0.2f, cubeSize.y + 0.2f, cubeSize.z + 0.2f, GREEN);
}
else
{
DrawCube(cubePosition, cubeSize.x, cubeSize.y, cubeSize.z, GRAY);
DrawCubeWires(cubePosition, cubeSize.x, cubeSize.y, cubeSize.z, DARKGRAY);
}
DrawRay(ray, MAROON);
DrawGrid(10, 1.0f);
End3dMode();
DrawText("Try selecting the box with mouse!", 240, 10, 20, DARKGRAY);
if(collision) DrawText("BOX SELECTED", (screenWidth - MeasureText("BOX SELECTED", 30)) / 2, screenHeight * 0.1f, 30, GREEN);
DrawFPS(10, 10);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -1,11 +1,21 @@
/******************************************************************************************* /*******************************************************************************************
* *
* raylib example 01 - Basic Window * raylib [core] example - Basic window
*
* Welcome to raylib!
*
* To test examples, just press F6 and execute raylib_compile_execute script
* Note that compiled executable is placed in the same folder as .c file
*
* You can find all basic examples on C:\raylib\raylib\examples folder or
* raylib official webpage: www.raylib.com
*
* Enjoy using raylib. :)
* *
* This example has been created using raylib 1.0 (www.raylib.com) * This example has been created using raylib 1.0 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
* *
* Copyright (c) 2013 Ramon Santamaria (Ray San - raysan@raysanweb.com) * Copyright (c) 2014 Ramon Santamaria (@raysan5)
* *
********************************************************************************************/ ********************************************************************************************/
@@ -17,10 +27,12 @@ int main()
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
int screenWidth = 800; int screenWidth = 800;
int screenHeight = 450; int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window");
InitWindow(screenWidth, screenHeight, "raylib example 01a - basic window"); SetTargetFPS(60);
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
// Main game loop // Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key while (!WindowShouldClose()) // Detect window close button or ESC key
{ {
@@ -28,23 +40,23 @@ int main()
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// TODO: Update your variables here // TODO: Update your variables here
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Draw // Draw
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
BeginDrawing(); BeginDrawing();
ClearBackground(RAYWHITE); ClearBackground(RAYWHITE);
DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY); DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);
EndDrawing(); EndDrawing();
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
} }
// De-Initialization // De-Initialization
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context CloseWindow(); // Close window and OpenGL context
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
return 0; return 0;
} }

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -0,0 +1,85 @@
/*******************************************************************************************
*
* raylib [core] example - Basic window (adapted for HTML5 platform)
*
* This example is prepared to compile for PLATFORM_WEB, PLATFORM_DESKTOP and PLATFORM_RPI
* As you will notice, code structure is slightly diferent to the other examples...
* To compile it for PLATFORM_WEB just uncomment #define PLATFORM_WEB at beginning
*
* This example has been created using raylib 1.3 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2015 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
//#define PLATFORM_WEB
#if defined(PLATFORM_WEB)
#include <emscripten/emscripten.h>
#endif
//----------------------------------------------------------------------------------
// Global Variables Definition
//----------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
//----------------------------------------------------------------------------------
// Module Functions Declaration
//----------------------------------------------------------------------------------
void UpdateDrawFrame(void); // Update and Draw one frame
//----------------------------------------------------------------------------------
// Main Enry Point
//----------------------------------------------------------------------------------
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window");
#if defined(PLATFORM_WEB)
emscripten_set_main_loop(UpdateDrawFrame, 0, 1);
#else
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
//--------------------------------------------------------------------------------------
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
UpdateDrawFrame();
}
#endif
// De-Initialization
//--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}
//----------------------------------------------------------------------------------
// Module Functions Definition
//----------------------------------------------------------------------------------
void UpdateDrawFrame(void)
{
// Update
//----------------------------------------------------------------------------------
// TODO: Update your variables here
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY);
EndDrawing();
//----------------------------------------------------------------------------------
}

View File

@@ -1,11 +1,11 @@
/******************************************************************************************* /*******************************************************************************************
* *
* raylib example 06a - Color selection by mouse (collision detection) * raylib [core] example - Color selection by mouse (collision detection)
* *
* This example has been created using raylib 1.0 (www.raylib.com) * This example has been created using raylib 1.0 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
* *
* Copyright (c) 2013 Ramon Santamaria (Ray San - raysan@raysanweb.com) * Copyright (c) 2014 Ramon Santamaria (@raysan5)
* *
********************************************************************************************/ ********************************************************************************************/
@@ -16,79 +16,79 @@ int main()
// Initialization // Initialization
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
int screenWidth = 800; int screenWidth = 800;
int screenHeight = 400; int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [core] example - color selection (collision detection)");
Color colors[21] = { DARKGRAY, MAROON, ORANGE, DARKGREEN, DARKBLUE, DARKPURPLE, DARKBROWN, Color colors[21] = { DARKGRAY, MAROON, ORANGE, DARKGREEN, DARKBLUE, DARKPURPLE, DARKBROWN,
GRAY, RED, GOLD, LIME, BLUE, VIOLET, BROWN, LIGHTGRAY, PINK, YELLOW, GRAY, RED, GOLD, LIME, BLUE, VIOLET, BROWN, LIGHTGRAY, PINK, YELLOW,
GREEN, SKYBLUE, PURPLE, BEIGE }; GREEN, SKYBLUE, PURPLE, BEIGE };
Rectangle recs[21]; // Rectangles array Rectangle colorsRecs[21]; // Rectangles array
// Fills recs data (for every rectangle) // Fills colorsRecs data (for every rectangle)
for (int i = 0; i < 21; i++) for (int i = 0; i < 21; i++)
{ {
recs[i].x = 20 + 100*(i%7) + 10*(i%7); colorsRecs[i].x = 20 + 100*(i%7) + 10*(i%7);
recs[i].y = 40 + 100*(i/7) + 10*(i/7); colorsRecs[i].y = 60 + 100*(i/7) + 10*(i/7);
recs[i].width = 100; colorsRecs[i].width = 100;
recs[i].height = 100; colorsRecs[i].height = 100;
} }
bool selected[21] = { false }; // Selected rectangles indicator bool selected[21] = { false }; // Selected rectangles indicator
Vector2 mousePoint; Vector2 mousePoint;
InitWindowEx(screenWidth, screenHeight, "raylib example 06a - color selection", false, "resources/mouse.png"); SetTargetFPS(60); // Set our game to run at 60 frames-per-second
SetTargetFPS(60);
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
// Main game loop // Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key while (!WindowShouldClose()) // Detect window close button or ESC key
{ {
// Update // Update
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
mousePoint = GetMousePosition(); mousePoint = GetMousePosition();
for (int i = 0; i < 21; i++) // Iterate along all the rectangles for (int i = 0; i < 21; i++) // Iterate along all the rectangles
{ {
if (CheckCollisionPointRec(mousePoint, recs[i])) if (CheckCollisionPointRec(mousePoint, colorsRecs[i]))
{ {
colors[i].a = 120; colors[i].a = 120;
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) selected[i] = !selected[i]; if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) selected[i] = !selected[i];
} }
else colors[i].a = 255; else colors[i].a = 255;
} }
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Draw // Draw
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
BeginDrawing(); BeginDrawing();
ClearBackground(RAYWHITE); ClearBackground(RAYWHITE);
for (int i = 0; i < 21; i++) // Draw all rectangles for (int i = 0; i < 21; i++) // Draw all rectangles
{ {
DrawRectangleRec(recs[i], colors[i]); DrawRectangleRec(colorsRecs[i], colors[i]);
// Draw four rectangles around selected rectangle // Draw four rectangles around selected rectangle
if (selected[i]) if (selected[i])
{ {
DrawRectangle(recs[i].x, recs[i].y, 100, 10, RAYWHITE); // Square top rectangle DrawRectangle(colorsRecs[i].x, colorsRecs[i].y, 100, 10, RAYWHITE); // Square top rectangle
DrawRectangle(recs[i].x, recs[i].y, 10, 100, RAYWHITE); // Square left rectangle DrawRectangle(colorsRecs[i].x, colorsRecs[i].y, 10, 100, RAYWHITE); // Square left rectangle
DrawRectangle(recs[i].x + 90, recs[i].y, 10, 100, RAYWHITE); // Square right rectangle DrawRectangle(colorsRecs[i].x + 90, colorsRecs[i].y, 10, 100, RAYWHITE); // Square right rectangle
DrawRectangle(recs[i].x, recs[i].y + 90, 100, 10, RAYWHITE); // Square bottom rectangle DrawRectangle(colorsRecs[i].x, colorsRecs[i].y + 90, 100, 10, RAYWHITE); // Square bottom rectangle
} }
} }
EndDrawing(); EndDrawing();
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
} }
// De-Initialization // De-Initialization
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context CloseWindow(); // Close window and OpenGL context
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
return 0; return 0;
} }

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -1,11 +1,13 @@
/******************************************************************************************* /*******************************************************************************************
* *
* raylib test - Testing Heightmap Loading and Drawing * raylib [core] example - Windows drop files
* *
* This example has been created using raylib 1.0 (www.raylib.com) * This example only works on platforms that support drag & drop (Windows, Linux, OSX, Html5?)
*
* This example has been created using raylib 1.3 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
* *
* Copyright (c) 2013 Ramon Santamaria (Ray San - raysan@raysanweb.com) * Copyright (c) 2015 Ramon Santamaria (@raysan5)
* *
********************************************************************************************/ ********************************************************************************************/
@@ -18,59 +20,57 @@ int main()
int screenWidth = 800; int screenWidth = 800;
int screenHeight = 450; int screenHeight = 450;
Vector3 position = { 0.0, 0.0, 0.0 }; InitWindow(screenWidth, screenHeight, "raylib [core] example - drop files");
// Define the camera to look into our 3d world int count = 0;
Camera camera = {{ 12.0, 10.0, 12.0 }, { 0.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }}; char **droppedFiles;
InitWindow(screenWidth, screenHeight, "raylib test - Heightmap loading and drawing"); SetTargetFPS(60);
Image img = LoadImage("heightmap.png");
Model map = LoadHeightmap(img, 4);
Texture2D tex = CreateTexture(img);
UnloadImage(img);
SetTargetFPS(60); // Set our game to run at 60 frames-per-second
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
// Main game loop // Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key while (!WindowShouldClose()) // Detect window close button or ESC key
{ {
// Update // Update
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// ... if (IsFileDropped())
{
droppedFiles = GetDroppedFiles(&count);
}
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Draw // Draw
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
BeginDrawing(); BeginDrawing();
ClearBackground(RAYWHITE); ClearBackground(RAYWHITE);
Begin3dMode(camera); if (count == 0) DrawText("Drop your files to this window!", 100, 40, 20, DARKGRAY);
else
//DrawModel(map, position, 0.5f, MAROON); {
DrawModelEx(map, tex, position, 0.5f, WHITE); // Draw 3d model with texture DrawText("Dropped files:", 100, 40, 20, DARKGRAY);
DrawGrid(10.0, 1.0); // Draw a grid for (int i = 0; i < count; i++)
{
if (i%2 == 0) DrawRectangle(0, 85 + 40*i, screenWidth, 40, Fade(LIGHTGRAY, 0.5f));
else DrawRectangle(0, 85 + 40*i, screenWidth, 40, Fade(LIGHTGRAY, 0.3f));
DrawText(droppedFiles[i], 120, 100 + 40*i, 10, GRAY);
}
DrawGizmo(position, false); DrawText("Drop new files...", 100, 110 + 40*count, 20, DARKGRAY);
}
End3dMode();
DrawFPS(10, 10);
EndDrawing(); EndDrawing();
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
} }
// De-Initialization // De-Initialization
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
UnloadTexture(tex); // Unload texture ClearDroppedFiles(); // Clear internal buffers
UnloadModel(map); // Unload model
CloseWindow(); // Close window and OpenGL context CloseWindow(); // Close window and OpenGL context
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
return 0; return 0;
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@@ -0,0 +1,115 @@
/*******************************************************************************************
*
* raylib [core] example - Gestures Detection
*
* This example has been created using raylib 1.4 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2016 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
#include <string.h>
#define MAX_GESTURE_STRINGS 20
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [core] example - gestures detection");
Vector2 touchPosition = { 0, 0 };
Rectangle touchArea = { 220, 10, screenWidth - 230, screenHeight - 20 };
int gesturesCount = 0;
char gestureStrings[MAX_GESTURE_STRINGS][32];
int currentGesture = GESTURE_NONE;
int lastGesture = GESTURE_NONE;
//SetGesturesEnabled(0b0000000000001001); // Enable only some gestures to be detected
SetTargetFPS(60);
//--------------------------------------------------------------------------------------
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
// Update
//----------------------------------------------------------------------------------
lastGesture = currentGesture;
currentGesture = GetGestureDetected();
touchPosition = GetTouchPosition(0);
if (CheckCollisionPointRec(touchPosition, touchArea) && (currentGesture != GESTURE_NONE))
{
if (currentGesture != lastGesture)
{
// Store gesture string
switch (currentGesture)
{
case GESTURE_TAP: strcpy(gestureStrings[gesturesCount], "GESTURE TAP"); break;
case GESTURE_DOUBLETAP: strcpy(gestureStrings[gesturesCount], "GESTURE DOUBLETAP"); break;
case GESTURE_HOLD: strcpy(gestureStrings[gesturesCount], "GESTURE HOLD"); break;
case GESTURE_DRAG: strcpy(gestureStrings[gesturesCount], "GESTURE DRAG"); break;
case GESTURE_SWIPE_RIGHT: strcpy(gestureStrings[gesturesCount], "GESTURE SWIPE RIGHT"); break;
case GESTURE_SWIPE_LEFT: strcpy(gestureStrings[gesturesCount], "GESTURE SWIPE LEFT"); break;
case GESTURE_SWIPE_UP: strcpy(gestureStrings[gesturesCount], "GESTURE SWIPE UP"); break;
case GESTURE_SWIPE_DOWN: strcpy(gestureStrings[gesturesCount], "GESTURE SWIPE DOWN"); break;
case GESTURE_PINCH_IN: strcpy(gestureStrings[gesturesCount], "GESTURE PINCH IN"); break;
case GESTURE_PINCH_OUT: strcpy(gestureStrings[gesturesCount], "GESTURE PINCH OUT"); break;
default: break;
}
gesturesCount++;
// Reset gestures strings
if (gesturesCount >= MAX_GESTURE_STRINGS)
{
for (int i = 0; i < MAX_GESTURE_STRINGS; i++) strcpy(gestureStrings[i], "\0");
gesturesCount = 0;
}
}
}
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
DrawRectangleRec(touchArea, GRAY);
DrawRectangle(225, 15, screenWidth - 240, screenHeight - 30, RAYWHITE);
DrawText("GESTURES TEST AREA", screenWidth - 270, screenHeight - 40, 20, Fade(GRAY, 0.5f));
for (int i = 0; i < gesturesCount; i++)
{
if (i%2 == 0) DrawRectangle(10, 30 + 20*i, 200, 20, Fade(LIGHTGRAY, 0.5f));
else DrawRectangle(10, 30 + 20*i, 200, 20, Fade(LIGHTGRAY, 0.3f));
if (i < gesturesCount - 1) DrawText(gestureStrings[i], 35, 36 + 20*i, 10, DARKGRAY);
else DrawText(gestureStrings[i], 35, 36 + 20*i, 10, MAROON);
}
DrawRectangleLines(10, 29, 200, screenHeight - 50, GRAY);
DrawText("DETECTED GESTURES", 50, 15, 10, GRAY);
if (currentGesture != GESTURE_NONE) DrawCircleV(touchPosition, 30, MAROON);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -1,11 +1,14 @@
/******************************************************************************************* /*******************************************************************************************
* *
* raylib example 03c - Gamepad input * raylib [core] example - Gamepad input
*
* NOTE: This example requires a Gamepad connected to the system
* raylib is configured to work with Xbox 360 gamepad, check raylib.h for buttons configuration
* *
* This example has been created using raylib 1.0 (www.raylib.com) * This example has been created using raylib 1.0 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
* *
* Copyright (c) 2013 Ramon Santamaria (Ray San - raysan@raysanweb.com) * Copyright (c) 2014 Ramon Santamaria (@raysan5)
* *
********************************************************************************************/ ********************************************************************************************/
@@ -17,15 +20,15 @@ int main()
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
int screenWidth = 800; int screenWidth = 800;
int screenHeight = 450; int screenHeight = 450;
Vector2 ballPosition = { screenWidth/2, screenHeight/2 }; InitWindow(screenWidth, screenHeight, "raylib [core] example - gamepad input");
Vector2 gamepadMove = { 0, 0 };
Vector2 ballPosition = { (float)screenWidth/2, (float)screenHeight/2 };
InitWindow(screenWidth, screenHeight, "raylib example 01 - gamepad input"); Vector2 gamepadMovement = { 0.0f, 0.0f };
SetTargetFPS(60); // Set target frames-per-second SetTargetFPS(60); // Set target frames-per-second
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
// Main game loop // Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key while (!WindowShouldClose()) // Detect window close button or ESC key
{ {
@@ -33,29 +36,30 @@ int main()
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
if (IsGamepadAvailable(GAMEPAD_PLAYER1)) if (IsGamepadAvailable(GAMEPAD_PLAYER1))
{ {
gamepadMove = GetGamepadMovement(GAMEPAD_PLAYER1); gamepadMovement.x = GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_LEFT_X);
gamepadMovement.y = GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_LEFT_Y);
ballPosition.x += gamepadMove.x;
ballPosition.y -= gamepadMove.y; ballPosition.x += gamepadMovement.x;
ballPosition.y -= gamepadMovement.y;
if (IsGamepadButtonPressed(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_A)) if (IsGamepadButtonPressed(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_A))
{ {
ballPosition.x = screenWidth/2; ballPosition.x = (float)screenWidth/2;
ballPosition.y = screenHeight/2; ballPosition.y = (float)screenHeight/2;
} }
} }
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Draw // Draw
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
BeginDrawing(); BeginDrawing();
ClearBackground(RAYWHITE); ClearBackground(RAYWHITE);
DrawText("move the ball with gamepad", 10, 10, 20, DARKGRAY); DrawText("move the ball with gamepad", 10, 10, 20, DARKGRAY);
DrawCircleV(ballPosition, 50, MAROON); DrawCircleV(ballPosition, 50, MAROON);
EndDrawing(); EndDrawing();
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
} }
@@ -64,6 +68,6 @@ int main()
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context CloseWindow(); // Close window and OpenGL context
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
return 0; return 0;
} }

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1,51 +1,51 @@
/******************************************************************************************* /*******************************************************************************************
* *
* raylib example 03a - Keyboard input * raylib [core] example - Keyboard input
* *
* This example has been created using raylib 1.0 (www.raylib.com) * This example has been created using raylib 1.0 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
* *
* Copyright (c) 2013 Ramon Santamaria (Ray San - raysan@raysanweb.com) * Copyright (c) 2014 Ramon Santamaria (@raysan5)
* *
********************************************************************************************/ ********************************************************************************************/
#include "raylib.h" #include "raylib.h"
int main() int main()
{ {
// Initialization // Initialization
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
int screenWidth = 800; int screenWidth = 800;
int screenHeight = 450; int screenHeight = 450;
Vector2 ballPosition = { screenWidth/2, screenHeight/2 }; InitWindow(screenWidth, screenHeight, "raylib [core] example - keyboard input");
InitWindow(screenWidth, screenHeight, "raylib example 05 - keyboard input"); Vector2 ballPosition = { (float)screenWidth/2, (float)screenHeight/2 };
SetTargetFPS(60); // Set target frames-per-second SetTargetFPS(60); // Set target frames-per-second
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
// Main game loop // Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key while (!WindowShouldClose()) // Detect window close button or ESC key
{ {
// Update // Update
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
if (IsKeyPressed(KEY_RIGHT)) ballPosition.x += 0.8; if (IsKeyDown(KEY_RIGHT)) ballPosition.x += 0.8f;
if (IsKeyPressed(KEY_LEFT)) ballPosition.x -= 0.8; if (IsKeyDown(KEY_LEFT)) ballPosition.x -= 0.8f;
if (IsKeyPressed(KEY_UP)) ballPosition.y -= 0.8; if (IsKeyDown(KEY_UP)) ballPosition.y -= 0.8f;
if (IsKeyPressed(KEY_DOWN)) ballPosition.y += 0.8; if (IsKeyDown(KEY_DOWN)) ballPosition.y += 0.8f;
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Draw // Draw
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
BeginDrawing(); BeginDrawing();
ClearBackground(RAYWHITE); ClearBackground(RAYWHITE);
DrawText("move the ball with arrow keys", 10, 10, 20, DARKGRAY); DrawText("move the ball with arrow keys", 10, 10, 20, DARKGRAY);
DrawCircleV(ballPosition, 50, MAROON); DrawCircleV(ballPosition, 50, MAROON);
EndDrawing(); EndDrawing();
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
} }
@@ -54,6 +54,6 @@ int main()
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context CloseWindow(); // Close window and OpenGL context
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
return 0; return 0;
} }

View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -1,11 +1,11 @@
/******************************************************************************************* /*******************************************************************************************
* *
* raylib example 03b - Mouse input * raylib [core] example - Mouse input
* *
* This example has been created using raylib 1.0 (www.raylib.com) * This example has been created using raylib 1.0 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
* *
* Copyright (c) 2013 Ramon Santamaria (Ray San - raysan@raysanweb.com) * Copyright (c) 2014 Ramon Santamaria (@raysan5)
* *
********************************************************************************************/ ********************************************************************************************/
@@ -17,39 +17,37 @@ int main()
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
int screenWidth = 800; int screenWidth = 800;
int screenHeight = 450; int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [core] example - mouse input");
Vector2 ballPosition = { -100.0f, -100.0f };
Color ballColor = DARKBLUE;
Vector2 ballPosition = { -100.0, -100.0 }; SetTargetFPS(60);
int counter = 0;
int mouseX, mouseY;
InitWindow(screenWidth, screenHeight, "raylib example 06 - mouse input");
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
// Main game loop // Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key while (!WindowShouldClose()) // Detect window close button or ESC key
{ {
// Update // Update
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) ballPosition = GetMousePosition();
{
mouseX = GetMouseX();
mouseY = GetMouseY();
ballPosition.x = (float)mouseX;
ballPosition.y = (float)mouseY;
}
//----------------------------------------------------------------------------------
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) ballColor = MAROON;
else if (IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) ballColor = LIME;
else if (IsMouseButtonPressed(MOUSE_RIGHT_BUTTON)) ballColor = DARKBLUE;
//----------------------------------------------------------------------------------
// Draw // Draw
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
BeginDrawing(); BeginDrawing();
ClearBackground(RAYWHITE); ClearBackground(RAYWHITE);
DrawCircleV(ballPosition, 40, GOLD); DrawCircleV(ballPosition, 40, ballColor);
DrawText("mouse click to draw the ball", 10, 10, 20, DARKGRAY); DrawText("move ball with mouse and click mouse button to change color", 10, 10, 20, DARKGRAY);
EndDrawing(); EndDrawing();
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
} }
@@ -58,6 +56,6 @@ int main()
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context CloseWindow(); // Close window and OpenGL context
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
return 0; return 0;
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,58 @@
/*******************************************************************************************
*
* raylib [core] examples - Mouse wheel
*
* This test has been created using raylib 1.1 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2014 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [core] example - mouse wheel");
int boxPositionY = screenHeight/2 - 40;
int scrollSpeed = 4; // Scrolling speed in pixels
SetTargetFPS(60);
//--------------------------------------------------------------------------------------
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
// Update
//----------------------------------------------------------------------------------
boxPositionY -= (GetMouseWheelMove()*scrollSpeed);
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
DrawRectangle(screenWidth/2 - 40, boxPositionY, 80, 80, MAROON);
DrawText("Use mouse wheel to move the cube up and down!", 10, 10, 20, GRAY);
DrawText(FormatText("Box position Y: %03i", boxPositionY), 10, 40, 20, LIGHTGRAY);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,82 @@
/*******************************************************************************************
*
* raylib [core] example - Oculus Rift CV1
*
* Compile example using:
* gcc -o $(NAME_PART).exe $(FILE_NAME) -L. -L..\src\external\OculusSDK\LibOVR -lLibOVRRT32_1 -lraylib -lglfw3 -lopengl32 -lgdi32 -std=c99
*
* This example has been created using raylib 1.5 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2016 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 1080;
int screenHeight = 600;
// NOTE: screenWidth/screenHeight should match VR device aspect ratio
InitWindow(screenWidth, screenHeight, "raylib [core] example - oculus rift");
// NOTE: If device is not available, it fallbacks to default device (simulator)
InitVrDevice(HMD_OCULUS_RIFT_CV1); // Init VR device (Oculus Rift CV1)
// Define the camera to look into our 3d world
Camera camera;
camera.position = (Vector3){ 5.0f, 5.0f, 5.0f }; // Camera position
camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point
camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target)
camera.fovy = 60.0f; // Camera field-of-view Y
Vector3 cubePosition = { 0.0f, 0.0f, 0.0f };
SetTargetFPS(90); // Set our game to run at 90 frames-per-second
//--------------------------------------------------------------------------------------
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
// Update
//----------------------------------------------------------------------------------
UpdateVrTracking();
if (IsKeyPressed(KEY_SPACE)) ToggleVrMode();
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
Begin3dMode(camera);
DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED);
DrawCubeWires(cubePosition, 2.0f, 2.0f, 2.0f, MAROON);
DrawGrid(10, 1.0f);
End3dMode();
DrawFPS(10, 10);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
CloseVrDevice(); // Close VR device
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

View File

@@ -0,0 +1,65 @@
/*******************************************************************************************
*
* raylib [core] example - Generate random values
*
* This example has been created using raylib 1.1 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2014 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [core] example - generate random values");
int framesCounter = 0; // Variable used to count frames
int randValue = GetRandomValue(-8, 5); // Get a random integer number between -8 and 5 (both included)
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
//----------------------------------------------------------------------------------
framesCounter++;
// Every two seconds (120 frames) a new random value is generated
if (((framesCounter/120)%2) == 1)
{
randValue = GetRandomValue(-8, 5);
framesCounter = 0;
}
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
DrawText("Every 2 seconds a new random value is generated:", 130, 100, 20, MAROON);
DrawText(FormatText("%i", randValue), 360, 180, 80, LIGHTGRAY);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,85 @@
/*******************************************************************************************
*
* raylib [core] example - Storage save/load values
*
* This example has been created using raylib 1.4 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2015 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
// NOTE: Storage positions must start with 0, directly related to file memory layout
typedef enum { STORAGE_SCORE = 0, STORAGE_HISCORE } StorageData;
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [core] example - storage save/load values");
int score = 0;
int hiscore = 0;
int framesCounter = 0;
SetTargetFPS(60);
//--------------------------------------------------------------------------------------
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
// Update
//----------------------------------------------------------------------------------
if (IsKeyPressed(KEY_R))
{
score = GetRandomValue(1000, 2000);
hiscore = GetRandomValue(2000, 4000);
}
if (IsKeyPressed(KEY_ENTER))
{
StorageSaveValue(STORAGE_SCORE, score);
StorageSaveValue(STORAGE_HISCORE, hiscore);
}
else if (IsKeyPressed(KEY_SPACE))
{
// NOTE: If requested position could not be found, value 0 is returned
score = StorageLoadValue(STORAGE_SCORE);
hiscore = StorageLoadValue(STORAGE_HISCORE);
}
framesCounter++;
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
DrawText(FormatText("SCORE: %i", score), 280, 130, 40, MAROON);
DrawText(FormatText("HI-SCORE: %i", hiscore), 210, 200, 50, BLACK);
DrawText(FormatText("frames: %i", framesCounter), 10, 10, 20, LIME);
DrawText("Press R to generate random numbers", 220, 40, 20, LIGHTGRAY);
DrawText("Press ENTER to SAVE values", 250, 310, 20, LIGHTGRAY);
DrawText("Press SPACE to LOAD values", 252, 350, 20, LIGHTGRAY);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,77 @@
/*******************************************************************************************
*
* raylib [core] example - World to screen
*
* This example has been created using raylib 1.3 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2015 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera free");
// Define the camera to look into our 3d world
Camera camera = {{ 0.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
Vector3 cubePosition = { 0.0f, 0.0f, 0.0f };
Vector2 cubeScreenPosition;
SetCameraMode(CAMERA_FREE); // Set a free camera mode
SetCameraPosition(camera.position); // Set internal camera position to match our camera position
SetCameraTarget(camera.target); // Set internal camera target to match our camera target
SetCameraFovy(camera.fovy); // Set internal camera field-of-view Y
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
// Calculate cube screen space position (with a little offset to be in top)
cubeScreenPosition = GetWorldToScreen((Vector3){cubePosition.x, cubePosition.y + 2.5f, cubePosition.z}, camera);
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
Begin3dMode(camera);
DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED);
DrawCubeWires(cubePosition, 2.0f, 2.0f, 2.0f, MAROON);
DrawGrid(10, 1.0f);
End3dMode();
DrawText("Enemy: 100 / 100", cubeScreenPosition.x - MeasureText("Enemy: 100 / 100", 20) / 2, cubeScreenPosition.y, 20, BLACK);
DrawText("Text is always on top of the cube", (screenWidth - MeasureText("Text is always on top of the cube", 20)) / 2, 25, 20, GRAY);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

View File

@@ -1,76 +0,0 @@
/*******************************************************************************************
*
* raylib example 05b - raylib bitmap font (rbmf) loading and using
*
* This example has been created using raylib 1.0 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2013 Ramon Santamaria (Ray San - raysan@raysanweb.com)
*
********************************************************************************************/
#include "raylib.h"
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 560;
int screenHeight = 800;
InitWindow(screenWidth, screenHeight, "raylib example 05b - rBMF fonts");
// NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required)
SpriteFont font1 = LoadSpriteFont("resources/fonts/alagard.rbmf"); // SpriteFont loading
SpriteFont font2 = LoadSpriteFont("resources/fonts/pixelplay.rbmf"); // SpriteFont loading
SpriteFont font3 = LoadSpriteFont("resources/fonts/mecha.rbmf"); // SpriteFont loading
SpriteFont font4 = LoadSpriteFont("resources/fonts/setback.rbmf"); // SpriteFont loading
SpriteFont font5 = LoadSpriteFont("resources/fonts/romulus.rbmf"); // SpriteFont loading
SpriteFont font6 = LoadSpriteFont("resources/fonts/pixantiqua.rbmf"); // SpriteFont loading
SpriteFont font7 = LoadSpriteFont("resources/fonts/alpha_beta.rbmf"); // SpriteFont loading
SpriteFont font8 = LoadSpriteFont("resources/fonts/jupiter_crash.rbmf"); // SpriteFont loading
//--------------------------------------------------------------------------------------
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
// Update
//----------------------------------------------------------------------------------
// TODO: Update your variables here
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
DrawTextEx(font1, "TESTING ALAGARD FONT", (Vector2){ 100, 100 }, GetFontBaseSize(font1)*2, 2, MAROON);
DrawTextEx(font2, "TESTING PIXELPLAY FONT", (Vector2){ 100, 180 }, GetFontBaseSize(font2)*2, 4, ORANGE);
DrawTextEx(font3, "TESTING MECHA FONT", (Vector2){ 100, 260 }, GetFontBaseSize(font3)*2, 8, DARKGREEN);
DrawTextEx(font4, "TESTING SETBACK FONT", (Vector2){ 100, 350 }, GetFontBaseSize(font4)*2, 4, DARKBLUE);
DrawTextEx(font5, "TESTING ROMULUS FONT", (Vector2){ 100, 430 }, GetFontBaseSize(font5)*2, 3, DARKPURPLE);
DrawTextEx(font6, "TESTING PIXANTIQUA FONT", (Vector2){ 100, 510 }, GetFontBaseSize(font6)*2, 4, LIME);
DrawTextEx(font7, "TESTING ALPHA_BETA FONT", (Vector2){ 100, 590 }, GetFontBaseSize(font7)*2, 4, GOLD);
DrawTextEx(font8, "TESTING JUPITER_CRASH FONT", (Vector2){ 100, 660 }, GetFontBaseSize(font8)*2, 1, RED);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
UnloadSpriteFont(font1); // SpriteFont unloading
UnloadSpriteFont(font2); // SpriteFont unloading
UnloadSpriteFont(font3); // SpriteFont unloading
UnloadSpriteFont(font4); // SpriteFont unloading
UnloadSpriteFont(font5); // SpriteFont unloading
UnloadSpriteFont(font6); // SpriteFont unloading
UnloadSpriteFont(font7); // SpriteFont unloading
UnloadSpriteFont(font8); // SpriteFont unloading
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -1,11 +1,11 @@
/******************************************************************************************* /*******************************************************************************************
* *
* raylib test - Testing DrawBillboard() and DrawBillboardRec() * raylib [models] example - Drawing billboards
* *
* This example has been created using raylib 1.0 (www.raylib.com) * This example has been created using raylib 1.3 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
* *
* Copyright (c) 2013 Ramon Santamaria (Ray San - raysan@raysanweb.com) * Copyright (c) 2015 Ramon Santamaria (@raysan5)
* *
********************************************************************************************/ ********************************************************************************************/
@@ -18,60 +18,56 @@ int main()
int screenWidth = 800; int screenWidth = 800;
int screenHeight = 450; int screenHeight = 450;
Vector3 position = { 0.0, 0.0, 0.0 }; InitWindow(screenWidth, screenHeight, "raylib [models] example - drawing billboards");
// Define the camera to look into our 3d world // Define the camera to look into our 3d world
Camera camera = {{ 10.0, 8.0, 10.0 }, { 0.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }}; Camera camera = {{ 5.0f, 4.0f, 5.0f }, { 0.0f, 2.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
Texture2D bill = LoadTexture("resources/billboard.png"); // Our texture billboard
Vector3 billPosition = { 0.0f, 2.0f, 0.0f }; // Position where draw billboard
InitWindow(screenWidth, screenHeight, "raylib test - Billboards"); SetCameraMode(CAMERA_ORBITAL); // Set an orbital camera mode
SetCameraPosition(camera.position); // Set internal camera position to match our camera position
SetTargetFPS(60); // Set our game to run at 60 frames-per-second SetCameraTarget(camera.target); // Set internal camera target to match our camera target
SetCameraFovy(camera.fovy); // Set internal camera field-of-view Y
Texture2D texture = LoadTexture("resources/raylib_logo.png");
Texture2D lena = LoadTexture("resources/lena.png"); SetTargetFPS(60); // Set our game to run at 60 frames-per-second
Rectangle eyesRec = { 225, 240, 155, 50 };
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
// Main game loop // Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key while (!WindowShouldClose()) // Detect window close button or ESC key
{ {
// Update // Update
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
if (IsKeyDown(KEY_LEFT)) camera.position.x -= 0.2; UpdateCamera(&camera); // Update internal camera and our camera
if (IsKeyDown(KEY_RIGHT)) camera.position.x += 0.2;
if (IsKeyDown(KEY_UP)) camera.position.y -= 0.2;
if (IsKeyDown(KEY_DOWN)) camera.position.y += 0.2;
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Draw // Draw
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
BeginDrawing(); BeginDrawing();
ClearBackground(RAYWHITE); ClearBackground(RAYWHITE);
Begin3dMode(camera); Begin3dMode(camera);
//DrawBillboard(camera, texture, position, 2.0, WHITE); DrawBillboard(camera, bill, billPosition, 2.0f, WHITE);
DrawBillboardRec(camera, lena, eyesRec, position, 4.0, WHITE);
DrawGrid(10.0, 1.0); // Draw a grid
DrawGrid(10, 1.0f); // Draw a grid
End3dMode(); End3dMode();
DrawFPS(10, 10); DrawFPS(10, 10);
EndDrawing(); EndDrawing();
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
} }
// De-Initialization // De-Initialization
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
UnloadTexture(texture); // Unload texture UnloadTexture(bill); // Unload texture
UnloadTexture(lena); // Unload texture
CloseWindow(); // Close window and OpenGL context CloseWindow(); // Close window and OpenGL context
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
return 0; return 0;
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@@ -0,0 +1,121 @@
/*******************************************************************************************
*
* raylib [models] example - Detect basic 3d collisions (box vs sphere vs box)
*
* This example has been created using raylib 1.3 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2015 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [models] example - box collisions");
// Define the camera to look into our 3d world
Camera camera = {{ 0.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
Vector3 playerPosition = { 0.0f, 1.0f, 2.0f };
Vector3 playerSize = { 1.0f, 2.0f, 1.0f };
Color playerColor = GREEN;
Vector3 enemyBoxPos = { -4.0f, 1.0f, 0.0f };
Vector3 enemyBoxSize = { 2.0f, 2.0f, 2.0f };
Vector3 enemySpherePos = { 4.0f, 0.0f, 0.0f };
float enemySphereSize = 1.5f;
bool collision = false;
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
//----------------------------------------------------------------------------------
// Move player
if (IsKeyDown(KEY_RIGHT)) playerPosition.x += 0.2f;
else if (IsKeyDown(KEY_LEFT)) playerPosition.x -= 0.2f;
else if (IsKeyDown(KEY_DOWN)) playerPosition.z += 0.2f;
else if (IsKeyDown(KEY_UP)) playerPosition.z -= 0.2f;
collision = false;
// Check collisions player vs enemy-box
if (CheckCollisionBoxes(
(BoundingBox){(Vector3){ playerPosition.x - playerSize.x/2,
playerPosition.y - playerSize.y/2,
playerPosition.z - playerSize.z/2 },
(Vector3){ playerPosition.x + playerSize.x/2,
playerPosition.y + playerSize.y/2,
playerPosition.z + playerSize.z/2 }},
(BoundingBox){(Vector3){ enemyBoxPos.x - enemyBoxSize.x/2,
enemyBoxPos.y - enemyBoxSize.y/2,
enemyBoxPos.z - enemyBoxSize.z/2 },
(Vector3){ enemyBoxPos.x + enemyBoxSize.x/2,
enemyBoxPos.y + enemyBoxSize.y/2,
enemyBoxPos.z + enemyBoxSize.z/2 }})) collision = true;
// Check collisions player vs enemy-sphere
if (CheckCollisionBoxSphere(
(BoundingBox){(Vector3){ playerPosition.x - playerSize.x/2,
playerPosition.y - playerSize.y/2,
playerPosition.z - playerSize.z/2 },
(Vector3){ playerPosition.x + playerSize.x/2,
playerPosition.y + playerSize.y/2,
playerPosition.z + playerSize.z/2 }},
enemySpherePos, enemySphereSize)) collision = true;
if (collision) playerColor = RED;
else playerColor = GREEN;
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
Begin3dMode(camera);
// Draw enemy-box
DrawCube(enemyBoxPos, enemyBoxSize.x, enemyBoxSize.y, enemyBoxSize.z, GRAY);
DrawCubeWires(enemyBoxPos, enemyBoxSize.x, enemyBoxSize.y, enemyBoxSize.z, DARKGRAY);
// Draw enemy-sphere
DrawSphere(enemySpherePos, enemySphereSize, GRAY);
DrawSphereWires(enemySpherePos, enemySphereSize, 16, 16, DARKGRAY);
// Draw player
DrawCubeV(playerPosition, playerSize, playerColor);
DrawGrid(10, 1.0f); // Draw a grid
End3dMode();
DrawText("Move player with cursors to collide", 220, 40, 20, GRAY);
DrawFPS(10, 10);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -0,0 +1,87 @@
/*******************************************************************************************
*
* raylib [models] example - Cubicmap loading and drawing
*
* This example has been created using raylib 1.3 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2015 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [models] example - cubesmap loading and drawing");
// Define the camera to look into our 3d world
Camera camera = {{ 16.0f, 14.0f, 16.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
Image image = LoadImage("resources/cubicmap.png"); // Load cubicmap image (RAM)
Texture2D cubicmap = LoadTextureFromImage(image); // Convert image to texture to display (VRAM)
Model map = LoadCubicmap(image); // Load cubicmap model (generate model from image)
// NOTE: By default each cube is mapped to one part of texture atlas
Texture2D texture = LoadTexture("resources/cubicmap_atlas.png"); // Load map texture
map.material.texDiffuse = texture; // Set map diffuse texture
Vector3 mapPosition = { -16.0f, 0.0f, -8.0f }; // Set model position
UnloadImage(image); // Unload cubesmap image from RAM, already uploaded to VRAM
SetCameraMode(CAMERA_ORBITAL); // Set an orbital camera mode
SetCameraPosition(camera.position); // Set internal camera position to match our custom camera position
SetCameraFovy(camera.fovy); // Set internal camera field-of-view Y
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
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
Begin3dMode(camera);
DrawModel(map, mapPosition, 1.0f, WHITE);
End3dMode();
DrawTextureEx(cubicmap, (Vector2){ screenWidth - cubicmap.width*4 - 20, 20 }, 0.0f, 4.0f, WHITE);
DrawRectangleLines(screenWidth - cubicmap.width*4 - 20, 20, cubicmap.width*4, cubicmap.height*4, GREEN);
DrawText("cubicmap image used to", 658, 90, 10, GRAY);
DrawText("generate map 3d model", 658, 104, 10, GRAY);
DrawFPS(10, 10);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
UnloadTexture(cubicmap); // Unload cubicmap texture
UnloadTexture(texture); // Unload map texture
UnloadModel(map); // Unload map model
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 KiB

View File

@@ -1,11 +1,11 @@
/******************************************************************************************* /*******************************************************************************************
* *
* raylib example 07b - Draw some basic 3d shapes (cube, sphere, cylinder...) * raylib [models] example - Draw some basic geometric shapes (cube, sphere, cylinder...)
* *
* This example has been created using raylib 1.0 (www.raylib.com) * This example has been created using raylib 1.0 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
* *
* Copyright (c) 2013 Ramon Santamaria (Ray San - raysan@raysanweb.com) * Copyright (c) 2014 Ramon Santamaria (@raysan5)
* *
********************************************************************************************/ ********************************************************************************************/
@@ -18,14 +18,14 @@ int main()
int screenWidth = 800; int screenWidth = 800;
int screenHeight = 450; int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [models] example - geometric shapes");
// Define the camera to look into our 3d world // Define the camera to look into our 3d world
Camera camera = {{ 0.0, 10.0, 10.0 }, { 0.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }}; Camera camera = {{ 0.0f, 10.0f, 10.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
InitWindow(screenWidth, screenHeight, "raylib example 07b - 3d shapes");
SetTargetFPS(60); // Set our game to run at 60 frames-per-second SetTargetFPS(60); // Set our game to run at 60 frames-per-second
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
// Main game loop // Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key while (!WindowShouldClose()) // Detect window close button or ESC key
{ {
@@ -33,35 +33,35 @@ int main()
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// TODO: Update your variables here // TODO: Update your variables here
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Draw // Draw
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
BeginDrawing(); BeginDrawing();
ClearBackground(RAYWHITE);
Begin3dMode(camera);
DrawCube((Vector3){-4, 0, 2}, 2, 5, 2, RED);
DrawCubeWires((Vector3){-4, 0, 2}, 2, 5, 2, GOLD);
DrawCubeWires((Vector3){-4, 0, -2}, 3, 6, 2, MAROON);
DrawSphere((Vector3){-1, 0, -2}, 1, GREEN);
DrawSphereWires((Vector3){1, 0, 2}, 2, LIME);
DrawCylinder((Vector3){4, 0, -2}, 1, 2, 3, 4, SKYBLUE);
DrawCylinderWires((Vector3){4, 0, -2}, 1, 2, 3, 4, DARKBLUE);
DrawCylinderWires((Vector3){4.5, -1, 2}, 1, 1, 2, 6, BROWN);
DrawCylinder((Vector3){1, 0, -4}, 0, 1.5, 3, 8, GOLD);
DrawCylinderWires((Vector3){1, 0, -4}, 0, 1.5, 3, 8, PINK);
DrawGrid(10.0, 1.0); // Draw a grid ClearBackground(RAYWHITE);
Begin3dMode(camera);
DrawCube((Vector3){-4.0f, 0.0f, 2.0f}, 2.0f, 5.0f, 2.0f, RED);
DrawCubeWires((Vector3){-4.0f, 0.0f, 2.0f}, 2.0f, 5.0f, 2.0f, GOLD);
DrawCubeWires((Vector3){-4.0f, 0.0f, -2.0f}, 3.0f, 6.0f, 2.0f, MAROON);
DrawSphere((Vector3){-1.0f, 0.0f, -2.0f}, 1.0f, GREEN);
DrawSphereWires((Vector3){1.0f, 0.0f, 2.0f}, 2.0f, 16, 16, LIME);
DrawCylinder((Vector3){4.0f, 0.0f, -2.0f}, 1.0f, 2.0f, 3.0f, 4, SKYBLUE);
DrawCylinderWires((Vector3){4.0f, 0.0f, -2.0f}, 1.0f, 2.0f, 3.0f, 4, DARKBLUE);
DrawCylinderWires((Vector3){4.5f, -1.0f, 2.0f}, 1.0f, 1.0f, 2.0f, 6, BROWN);
DrawCylinder((Vector3){1.0f, 0.0f, -4.0f}, 0.0f, 1.5f, 3.0f, 8, GOLD);
DrawCylinderWires((Vector3){1.0f, 0.0f, -4.0f}, 0.0f, 1.5f, 3.0f, 8, PINK);
DrawGrid(10, 1.0f); // Draw a grid
End3dMode(); End3dMode();
DrawFPS(10, 10); DrawFPS(10, 10);
EndDrawing(); EndDrawing();
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
} }
@@ -70,6 +70,6 @@ int main()
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context CloseWindow(); // Close window and OpenGL context
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
return 0; return 0;
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -0,0 +1,81 @@
/*******************************************************************************************
*
* raylib [models] example - Heightmap loading and drawing
*
* This example has been created using raylib 1.3 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* Copyright (c) 2015 Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [models] example - heightmap loading and drawing");
// Define our custom camera to look into our 3d world
Camera camera = {{ 18.0f, 16.0f, 18.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
Image image = LoadImage("resources/heightmap.png"); // Load heightmap image (RAM)
Texture2D texture = LoadTextureFromImage(image); // Convert image to texture (VRAM)
Model map = LoadHeightmap(image, (Vector3){ 16, 8, 16 }); // Load heightmap model with defined size
map.material.texDiffuse = texture; // Set map diffuse texture
Vector3 mapPosition = { -8.0f, 0.0f, -8.0f }; // Set model position (depends on model scaling!)
UnloadImage(image); // Unload heightmap image from RAM, already uploaded to VRAM
SetCameraMode(CAMERA_ORBITAL); // Set an orbital camera mode
SetCameraPosition(camera.position); // Set internal camera position to match our custom camera position
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
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
Begin3dMode(camera);
// NOTE: Model is scaled to 1/4 of its original size (128x128 units)
DrawModel(map, mapPosition, 1.0f, RED);
DrawGrid(20, 1.0f);
End3dMode();
DrawTexture(texture, screenWidth - texture.width - 20, 20, WHITE);
DrawRectangleLines(screenWidth - texture.width - 20, 20, texture.width, texture.height, GREEN);
DrawFPS(10, 10);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
UnloadTexture(texture); // Unload texture
UnloadModel(map); // Unload model
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

View File

@@ -1,11 +1,11 @@
/******************************************************************************************* /*******************************************************************************************
* *
* raylib example 07c - Load and draw a 3d model (OBJ) * raylib [models] example - Load and draw a 3d model (OBJ)
* *
* This example has been created using raylib 1.0 (www.raylib.com) * This example has been created using raylib 1.3 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
* *
* Copyright (c) 2013 Ramon Santamaria (Ray San - raysan@raysanweb.com) * Copyright (c) 2014 Ramon Santamaria (@raysan5)
* *
********************************************************************************************/ ********************************************************************************************/
@@ -18,48 +18,47 @@ int main()
int screenWidth = 800; int screenWidth = 800;
int screenHeight = 450; int screenHeight = 450;
Vector3 position = { 0.0, 0.0, 0.0 }; InitWindow(screenWidth, screenHeight, "raylib [models] example - obj model loading");
// Define the camera to look into our 3d world // Define the camera to look into our 3d world
Camera camera = {{ 10.0, 8.0, 10.0 }, { 0.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }}; Camera camera = {{ 3.0f, 3.0f, 3.0f }, { 0.0f, 1.5f, 0.0f }, { 0.0f, 1.0f, 0.0f }, 45.0f };
InitWindow(screenWidth, screenHeight, "raylib example 07c - 3d models"); Model dwarf = LoadModel("resources/model/dwarf.obj"); // Load OBJ model
Texture2D texture = LoadTexture("resources/model/dwarf_diffuse.png"); // Load model texture
dwarf.material.texDiffuse = texture; // Set dwarf model diffuse texture
Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position
SetTargetFPS(60); // Set our game to run at 60 frames-per-second SetTargetFPS(60); // Set our game to run at 60 frames-per-second
Texture2D texture = LoadTexture("resources/catwhite.png");
Model cat = LoadModel("resources/cat.obj");
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
// Main game loop // Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key while (!WindowShouldClose()) // Detect window close button or ESC key
{ {
// Update // Update
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
if (IsKeyPressed(KEY_LEFT)) position.x -= 0.2; //...
if (IsKeyPressed(KEY_RIGHT)) position.x += 0.2;
if (IsKeyPressed(KEY_UP)) position.z -= 0.2;
if (IsKeyPressed(KEY_DOWN)) position.z += 0.2;
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
// Draw // Draw
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
BeginDrawing(); BeginDrawing();
ClearBackground(RAYWHITE);
Begin3dMode(camera);
DrawModelEx(cat, texture, position, 0.1f, WHITE); // Draw 3d model with texture
DrawGrid(10.0, 1.0); // Draw a grid ClearBackground(RAYWHITE);
DrawGizmo(position, false); Begin3dMode(camera);
DrawModel(dwarf, position, 2.0f, WHITE); // Draw 3d model with texture
DrawGrid(10, 1.0f); // Draw a grid
DrawGizmo(position); // Draw gizmo
End3dMode(); End3dMode();
DrawText("(c) Dwarf 3D model by David Moreno", screenWidth - 200, screenHeight - 20, 10, GRAY);
DrawFPS(10, 10); DrawFPS(10, 10);
EndDrawing(); EndDrawing();
//---------------------------------------------------------------------------------- //----------------------------------------------------------------------------------
} }
@@ -67,10 +66,10 @@ int main()
// De-Initialization // De-Initialization
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
UnloadTexture(texture); // Unload texture UnloadTexture(texture); // Unload texture
UnloadModel(cat); // Unload model UnloadModel(dwarf); // Unload model
CloseWindow(); // Close window and OpenGL context CloseWindow(); // Close window and OpenGL context
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
return 0; return 0;
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

View File

@@ -0,0 +1,128 @@
/*******************************************************************************************
*
* raylib [physac] example - Basic rigidbody
*
* This example has been created using raylib 1.5 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
*
* Compile example using:
* cmd /c IF NOT EXIST pthreadGC2.dll copy C:\raylib\raylib\src\external\pthread\pthreadGC2.dll $(CURRENT_DIRECTORY) /Y
*
* Copyright (c) 2016 Victor Fisac and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
#define PHYSAC_IMPLEMENTATION
#include "physac.h"
#define MOVE_VELOCITY 5
#define JUMP_VELOCITY 30
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [physac] example - basic rigidbody");
InitPhysics((Vector2){ 0.0f, -9.81f/2 }); // Initialize physics module
// Debug variables
bool isDebug = false;
// Create rectangle physic object
PhysicBody rectangle = CreatePhysicBody((Vector2){ screenWidth*0.25f, screenHeight/2 }, 0.0f, (Vector2){ 75, 50 });
rectangle->rigidbody.enabled = true; // Enable physic object rigidbody behaviour
rectangle->rigidbody.applyGravity = true;
rectangle->rigidbody.friction = 0.1f;
rectangle->rigidbody.bounciness = 6.0f;
// Create square physic object
PhysicBody square = CreatePhysicBody((Vector2){ screenWidth*0.75f, screenHeight/2 }, 0.0f, (Vector2){ 50, 50 });
square->rigidbody.enabled = true; // Enable physic object rigidbody behaviour
square->rigidbody.applyGravity = true;
square->rigidbody.friction = 0.1f;
// Create walls physic objects
PhysicBody floor = CreatePhysicBody((Vector2){ screenWidth/2, screenHeight*0.95f }, 0.0f, (Vector2){ screenWidth*0.9f, 100 });
PhysicBody leftWall = CreatePhysicBody((Vector2){ 0.0f, screenHeight/2 }, 0.0f, (Vector2){ screenWidth*0.1f, screenHeight });
PhysicBody rightWall = CreatePhysicBody((Vector2){ screenWidth, screenHeight/2 }, 0.0f, (Vector2){ screenWidth*0.1f, screenHeight });
PhysicBody roof = CreatePhysicBody((Vector2){ screenWidth/2, screenHeight*0.05f }, 0.0f, (Vector2){ screenWidth*0.9f, 100 });
// Create pplatform physic object
PhysicBody platform = CreatePhysicBody((Vector2){ screenWidth/2, screenHeight*0.7f }, 0.0f, (Vector2){ screenWidth*0.25f, 20 });
SetTargetFPS(60);
//--------------------------------------------------------------------------------------
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
// Update
//----------------------------------------------------------------------------------
// Check rectangle movement inputs
if (IsKeyPressed('W')) rectangle->rigidbody.velocity.y = JUMP_VELOCITY;
if (IsKeyDown('A')) rectangle->rigidbody.velocity.x = -MOVE_VELOCITY;
else if (IsKeyDown('D')) rectangle->rigidbody.velocity.x = MOVE_VELOCITY;
// Check square movement inputs
if (IsKeyDown(KEY_UP) && square->rigidbody.isGrounded) square->rigidbody.velocity.y = JUMP_VELOCITY;
if (IsKeyDown(KEY_LEFT)) square->rigidbody.velocity.x = -MOVE_VELOCITY;
else if (IsKeyDown(KEY_RIGHT)) square->rigidbody.velocity.x = MOVE_VELOCITY;
// Check debug switch input
if (IsKeyPressed('P')) isDebug = !isDebug;
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
// Draw floor, roof and walls rectangles
DrawRectangleRec(TransformToRectangle(floor->transform), DARKGRAY); // Convert transform values to rectangle data type variable
DrawRectangleRec(TransformToRectangle(leftWall->transform), DARKGRAY);
DrawRectangleRec(TransformToRectangle(rightWall->transform), DARKGRAY);
DrawRectangleRec(TransformToRectangle(roof->transform), DARKGRAY);
// Draw middle platform rectangle
DrawRectangleRec(TransformToRectangle(platform->transform), DARKGRAY);
// Draw physic objects
DrawRectangleRec(TransformToRectangle(rectangle->transform), RED);
DrawRectangleRec(TransformToRectangle(square->transform), BLUE);
// Draw collider lines if debug is enabled
if (isDebug)
{
DrawRectangleLines(floor->collider.bounds.x, floor->collider.bounds.y, floor->collider.bounds.width, floor->collider.bounds.height, GREEN);
DrawRectangleLines(leftWall->collider.bounds.x, leftWall->collider.bounds.y, leftWall->collider.bounds.width, leftWall->collider.bounds.height, GREEN);
DrawRectangleLines(rightWall->collider.bounds.x, rightWall->collider.bounds.y, rightWall->collider.bounds.width, rightWall->collider.bounds.height, GREEN);
DrawRectangleLines(roof->collider.bounds.x, roof->collider.bounds.y, roof->collider.bounds.width, roof->collider.bounds.height, GREEN);
DrawRectangleLines(platform->collider.bounds.x, platform->collider.bounds.y, platform->collider.bounds.width, platform->collider.bounds.height, GREEN);
DrawRectangleLines(rectangle->collider.bounds.x, rectangle->collider.bounds.y, rectangle->collider.bounds.width, rectangle->collider.bounds.height, GREEN);
DrawRectangleLines(square->collider.bounds.x, square->collider.bounds.y, square->collider.bounds.width, square->collider.bounds.height, GREEN);
}
// Draw help message
DrawText("Use WASD to move rectangle and ARROWS to move square", screenWidth/2 - MeasureText("Use WASD to move rectangle and ARROWS to move square", 20)/2, screenHeight*0.075f, 20, LIGHTGRAY);
DrawFPS(10, 10);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
ClosePhysics(); // Unitialize physics (including all loaded objects)
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

187
examples/physics_forces.c Normal file
View File

@@ -0,0 +1,187 @@
/*******************************************************************************************
*
* raylib [physac] example - Forces
*
* This example has been created using raylib 1.5 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
* NOTE: This example requires raylib module [rlgl]
*
* Compile example using:
* cmd /c IF NOT EXIST pthreadGC2.dll copy C:\raylib\raylib\src\external\pthread\pthreadGC2.dll $(CURRENT_DIRECTORY) /Y
*
* Copyright (c) 2016 Victor Fisac and Ramon Santamaria (@raysan5)
*
********************************************************************************************/
#include "raylib.h"
#define PHYSAC_IMPLEMENTATION
#include "physac.h"
#define FORCE_AMOUNT 5.0f
#define FORCE_RADIUS 150
#define LINE_LENGTH 75
#define TRIANGLE_LENGTH 12
int main()
{
// Initialization
//--------------------------------------------------------------------------------------
int screenWidth = 800;
int screenHeight = 450;
InitWindow(screenWidth, screenHeight, "raylib [physac] example - forces");
InitPhysics((Vector2){ 0.0f, -9.81f/2 }); // Initialize physics module
// Global variables
Vector2 mousePosition;
bool isDebug = false;
// Create rectangle physic objects
PhysicBody rectangles[3];
for (int i = 0; i < 3; i++)
{
rectangles[i] = CreatePhysicBody((Vector2){ screenWidth/4*(i+1), (((i % 2) == 0) ? (screenHeight/3) : (screenHeight/1.5f)) }, 0.0f, (Vector2){ 50, 50 });
rectangles[i]->rigidbody.enabled = true; // Enable physic object rigidbody behaviour
rectangles[i]->rigidbody.friction = 0.1f;
}
// Create circles physic objects
// NOTE: when creating circle physic objects, transform.scale must be { 0, 0 } and object radius must be defined in collider.radius and use this value to draw the circle.
PhysicBody circles[3];
for (int i = 0; i < 3; i++)
{
circles[i] = CreatePhysicBody((Vector2){ screenWidth/4*(i+1), (((i % 2) == 0) ? (screenHeight/1.5f) : (screenHeight/4)) }, 0.0f, (Vector2){ 0, 0 });
circles[i]->rigidbody.enabled = true; // Enable physic object rigidbody behaviour
circles[i]->rigidbody.friction = 0.1f;
circles[i]->collider.type = COLLIDER_CIRCLE;
circles[i]->collider.radius = 25;
}
// Create walls physic objects
PhysicBody leftWall = CreatePhysicBody((Vector2){ -25, screenHeight/2 }, 0.0f, (Vector2){ 50, screenHeight });
PhysicBody rightWall = CreatePhysicBody((Vector2){ screenWidth + 25, screenHeight/2 }, 0.0f, (Vector2){ 50, screenHeight });
PhysicBody topWall = CreatePhysicBody((Vector2){ screenWidth/2, -25 }, 0.0f, (Vector2){ screenWidth, 50 });
PhysicBody bottomWall = CreatePhysicBody((Vector2){ screenWidth/2, screenHeight + 25 }, 0.0f, (Vector2){ screenWidth, 50 });
SetTargetFPS(60);
//--------------------------------------------------------------------------------------
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
// Update
//----------------------------------------------------------------------------------
// Update mouse position value
mousePosition = GetMousePosition();
// Check force input
if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) ApplyForceAtPosition(mousePosition, FORCE_AMOUNT, FORCE_RADIUS);
// Check reset input
if (IsKeyPressed('R'))
{
// Reset rectangle physic objects positions
for (int i = 0; i < 3; i++)
{
rectangles[i]->transform.position = (Vector2){ screenWidth/4*(i+1) - rectangles[i]->transform.scale.x/2, (((i % 2) == 0) ? (screenHeight/3) : (screenHeight/1.5f)) - rectangles[i]->transform.scale.y/2 };
rectangles[i]->rigidbody.velocity =(Vector2){ 0.0f, 0.0f };
}
// Reset circles physic objects positions
for (int i = 0; i < 3; i++)
{
circles[i]->transform.position = (Vector2){ screenWidth/4*(i+1), (((i % 2) == 0) ? (screenHeight/1.5f) : (screenHeight/4)) };
circles[i]->rigidbody.velocity =(Vector2){ 0.0f, 0.0f };
}
}
// Check debug switch input
if (IsKeyPressed('P')) isDebug = !isDebug;
//----------------------------------------------------------------------------------
// Draw
//----------------------------------------------------------------------------------
BeginDrawing();
ClearBackground(RAYWHITE);
// Draw rectangles
for (int i = 0; i < 3; i++)
{
// Convert transform values to rectangle data type variable
DrawRectangleRec(TransformToRectangle(rectangles[i]->transform), RED);
if (isDebug) DrawRectangleLines(rectangles[i]->collider.bounds.x, rectangles[i]->collider.bounds.y, rectangles[i]->collider.bounds.width, rectangles[i]->collider.bounds.height, GREEN);
// Draw force radius
DrawCircleLines(mousePosition.x, mousePosition.y, FORCE_RADIUS, BLACK);
// Draw direction lines
if (CheckCollisionPointCircle((Vector2){ rectangles[i]->transform.position.x + rectangles[i]->transform.scale.x/2, rectangles[i]->transform.position.y + rectangles[i]->transform.scale.y/2 }, mousePosition, FORCE_RADIUS))
{
Vector2 direction = { rectangles[i]->transform.position.x + rectangles[i]->transform.scale.x/2 - mousePosition.x, rectangles[i]->transform.position.y + rectangles[i]->transform.scale.y/2 - mousePosition.y };
float angle = atan2l(direction.y, direction.x);
// Calculate arrow start and end positions
Vector2 startPosition = { rectangles[i]->transform.position.x + rectangles[i]->transform.scale.x/2, rectangles[i]->transform.position.y + rectangles[i]->transform.scale.y/2 };
Vector2 endPosition = { rectangles[i]->transform.position.x + rectangles[i]->transform.scale.x/2 + (cos(angle)*LINE_LENGTH), rectangles[i]->transform.position.y + rectangles[i]->transform.scale.y/2 + (sin(angle)*LINE_LENGTH) };
// Draw arrow line
DrawLineV(startPosition, endPosition, BLACK);
// Draw arrow triangle
DrawTriangleLines((Vector2){ endPosition.x - cos(angle + 90*DEG2RAD)*LINE_LENGTH/TRIANGLE_LENGTH, endPosition.y - sin(angle + 90*DEG2RAD)*LINE_LENGTH/TRIANGLE_LENGTH },
(Vector2){ endPosition.x + cos(angle + 90*DEG2RAD)*LINE_LENGTH/TRIANGLE_LENGTH, endPosition.y + sin(angle + 90*DEG2RAD)*LINE_LENGTH/TRIANGLE_LENGTH },
(Vector2){ endPosition.x + cos(angle)*LINE_LENGTH/TRIANGLE_LENGTH*2, endPosition.y + sin(angle)*LINE_LENGTH/TRIANGLE_LENGTH*2 }, BLACK);
}
}
// Draw circles
for (int i = 0; i < 3; i++)
{
DrawCircleV(circles[i]->transform.position, circles[i]->collider.radius, BLUE);
if (isDebug) DrawCircleLines(circles[i]->transform.position.x, circles[i]->transform.position.y, circles[i]->collider.radius, GREEN);
// Draw force radius
DrawCircleLines(mousePosition.x, mousePosition.y, FORCE_RADIUS, BLACK);
// Draw direction lines
if (CheckCollisionPointCircle((Vector2){ circles[i]->transform.position.x, circles[i]->transform.position.y }, mousePosition, FORCE_RADIUS))
{
Vector2 direction = { circles[i]->transform.position.x - mousePosition.x, circles[i]->transform.position.y - mousePosition.y };
float angle = atan2l(direction.y, direction.x);
// Calculate arrow start and end positions
Vector2 startPosition = { circles[i]->transform.position.x, circles[i]->transform.position.y };
Vector2 endPosition = { circles[i]->transform.position.x + (cos(angle)*LINE_LENGTH), circles[i]->transform.position.y + (sin(angle)*LINE_LENGTH) };
// Draw arrow line
DrawLineV(startPosition, endPosition, BLACK);
// Draw arrow triangle
DrawTriangleLines((Vector2){ endPosition.x - cos(angle + 90*DEG2RAD)*LINE_LENGTH/TRIANGLE_LENGTH, endPosition.y - sin(angle + 90*DEG2RAD)*LINE_LENGTH/TRIANGLE_LENGTH },
(Vector2){ endPosition.x + cos(angle + 90*DEG2RAD)*LINE_LENGTH/TRIANGLE_LENGTH, endPosition.y + sin(angle + 90*DEG2RAD)*LINE_LENGTH/TRIANGLE_LENGTH },
(Vector2){ endPosition.x + cos(angle)*LINE_LENGTH/TRIANGLE_LENGTH*2, endPosition.y + sin(angle)*LINE_LENGTH/TRIANGLE_LENGTH*2 }, BLACK);
}
}
// Draw help messages
DrawText("Use LEFT MOUSE BUTTON to apply a force", screenWidth/2 - MeasureText("Use LEFT MOUSE BUTTON to apply a force", 20)/2, screenHeight*0.075f, 20, LIGHTGRAY);
DrawText("Use R to reset objects position", screenWidth/2 - MeasureText("Use R to reset objects position", 20)/2, screenHeight*0.875f, 20, GRAY);
DrawFPS(10, 10);
EndDrawing();
//----------------------------------------------------------------------------------
}
// De-Initialization
//--------------------------------------------------------------------------------------
ClosePhysics(); // Unitialize physics module
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
}

BIN
examples/physics_forces.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
examples/resources/cat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -0,0 +1,99 @@
info face="Arial Black" size=-32 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=2,2 outline=0
common lineHeight=45 base=35 scaleW=512 scaleH=256 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4
page id=0 file="bmfont.png"
chars count=95
char id=32 x=423 y=141 width=3 height=45 xoffset=-1 yoffset=0 xadvance=11 page=0 chnl=15
char id=33 x=323 y=141 width=9 height=45 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15
char id=34 x=123 y=141 width=16 height=45 xoffset=0 yoffset=0 xadvance=16 page=0 chnl=15
char id=35 x=221 y=47 width=21 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=36 x=244 y=47 width=21 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=37 x=70 y=0 width=30 height=45 xoffset=1 yoffset=0 xadvance=32 page=0 chnl=15
char id=38 x=390 y=0 width=25 height=45 xoffset=2 yoffset=0 xadvance=28 page=0 chnl=15
char id=39 x=378 y=141 width=8 height=45 xoffset=1 yoffset=0 xadvance=9 page=0 chnl=15
char id=40 x=222 y=141 width=11 height=45 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15
char id=41 x=499 y=94 width=11 height=45 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15
char id=42 x=497 y=47 width=13 height=45 xoffset=2 yoffset=0 xadvance=18 page=0 chnl=15
char id=43 x=394 y=94 width=19 height=45 xoffset=1 yoffset=0 xadvance=21 page=0 chnl=15
char id=44 x=367 y=141 width=9 height=45 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15
char id=45 x=261 y=141 width=11 height=45 xoffset=0 yoffset=0 xadvance=11 page=0 chnl=15
char id=46 x=356 y=141 width=9 height=45 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15
char id=47 x=248 y=141 width=11 height=45 xoffset=-1 yoffset=0 xadvance=9 page=0 chnl=15
char id=48 x=382 y=47 width=21 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=49 x=496 y=0 width=14 height=45 xoffset=2 yoffset=0 xadvance=21 page=0 chnl=15
char id=50 x=134 y=94 width=20 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=51 x=359 y=47 width=21 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=52 x=313 y=47 width=21 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=53 x=336 y=47 width=21 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=54 x=178 y=94 width=20 height=45 xoffset=1 yoffset=0 xadvance=21 page=0 chnl=15
char id=55 x=478 y=94 width=19 height=45 xoffset=1 yoffset=0 xadvance=21 page=0 chnl=15
char id=56 x=290 y=47 width=21 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=57 x=90 y=94 width=20 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=58 x=345 y=141 width=9 height=45 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15
char id=59 x=334 y=141 width=9 height=45 xoffset=1 yoffset=0 xadvance=11 page=0 chnl=15
char id=60 x=0 y=141 width=19 height=45 xoffset=1 yoffset=0 xadvance=21 page=0 chnl=15
char id=61 x=21 y=141 width=19 height=45 xoffset=1 yoffset=0 xadvance=21 page=0 chnl=15
char id=62 x=310 y=94 width=19 height=45 xoffset=1 yoffset=0 xadvance=21 page=0 chnl=15
char id=63 x=352 y=94 width=19 height=45 xoffset=1 yoffset=0 xadvance=20 page=0 chnl=15
char id=64 x=279 y=0 width=26 height=45 xoffset=-1 yoffset=0 xadvance=24 page=0 chnl=15
char id=65 x=193 y=0 width=27 height=45 xoffset=-1 yoffset=0 xadvance=25 page=0 chnl=15
char id=66 x=150 y=47 width=22 height=45 xoffset=2 yoffset=0 xadvance=25 page=0 chnl=15
char id=67 x=444 y=0 width=24 height=45 xoffset=1 yoffset=0 xadvance=25 page=0 chnl=15
char id=68 x=174 y=47 width=22 height=45 xoffset=2 yoffset=0 xadvance=25 page=0 chnl=15
char id=69 x=156 y=94 width=20 height=45 xoffset=2 yoffset=0 xadvance=23 page=0 chnl=15
char id=70 x=63 y=141 width=18 height=45 xoffset=2 yoffset=0 xadvance=21 page=0 chnl=15
char id=71 x=417 y=0 width=25 height=45 xoffset=1 yoffset=0 xadvance=27 page=0 chnl=15
char id=72 x=125 y=47 width=23 height=45 xoffset=2 yoffset=0 xadvance=27 page=0 chnl=15
char id=73 x=388 y=141 width=8 height=45 xoffset=2 yoffset=0 xadvance=12 page=0 chnl=15
char id=74 x=200 y=94 width=20 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=75 x=251 y=0 width=26 height=45 xoffset=2 yoffset=0 xadvance=27 page=0 chnl=15
char id=76 x=373 y=94 width=19 height=45 xoffset=2 yoffset=0 xadvance=21 page=0 chnl=15
char id=77 x=134 y=0 width=28 height=45 xoffset=1 yoffset=0 xadvance=30 page=0 chnl=15
char id=78 x=100 y=47 width=23 height=45 xoffset=2 yoffset=0 xadvance=27 page=0 chnl=15
char id=79 x=363 y=0 width=25 height=45 xoffset=1 yoffset=0 xadvance=27 page=0 chnl=15
char id=80 x=112 y=94 width=20 height=45 xoffset=2 yoffset=0 xadvance=23 page=0 chnl=15
char id=81 x=335 y=0 width=26 height=45 xoffset=1 yoffset=0 xadvance=27 page=0 chnl=15
char id=82 x=470 y=0 width=24 height=45 xoffset=2 yoffset=0 xadvance=25 page=0 chnl=15
char id=83 x=75 y=47 width=23 height=45 xoffset=0 yoffset=0 xadvance=23 page=0 chnl=15
char id=84 x=50 y=47 width=23 height=45 xoffset=0 yoffset=0 xadvance=23 page=0 chnl=15
char id=85 x=25 y=47 width=23 height=45 xoffset=2 yoffset=0 xadvance=27 page=0 chnl=15
char id=86 x=307 y=0 width=26 height=45 xoffset=0 yoffset=0 xadvance=25 page=0 chnl=15
char id=87 x=0 y=0 width=34 height=45 xoffset=-1 yoffset=0 xadvance=32 page=0 chnl=15
char id=88 x=222 y=0 width=27 height=45 xoffset=-1 yoffset=0 xadvance=25 page=0 chnl=15
char id=89 x=164 y=0 width=27 height=45 xoffset=-1 yoffset=0 xadvance=25 page=0 chnl=15
char id=90 x=0 y=47 width=23 height=45 xoffset=0 yoffset=0 xadvance=23 page=0 chnl=15
char id=91 x=274 y=141 width=11 height=45 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15
char id=92 x=300 y=141 width=10 height=45 xoffset=-1 yoffset=0 xadvance=9 page=0 chnl=15
char id=93 x=287 y=141 width=11 height=45 xoffset=0 yoffset=0 xadvance=12 page=0 chnl=15
char id=94 x=457 y=94 width=19 height=45 xoffset=1 yoffset=0 xadvance=21 page=0 chnl=15
char id=95 x=103 y=141 width=18 height=45 xoffset=-1 yoffset=0 xadvance=16 page=0 chnl=15
char id=96 x=312 y=141 width=9 height=45 xoffset=0 yoffset=0 xadvance=11 page=0 chnl=15
char id=97 x=474 y=47 width=21 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=98 x=68 y=94 width=20 height=45 xoffset=1 yoffset=0 xadvance=21 page=0 chnl=15
char id=99 x=267 y=47 width=21 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=100 x=46 y=94 width=20 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=101 x=198 y=47 width=21 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=102 x=141 y=141 width=15 height=45 xoffset=-1 yoffset=0 xadvance=12 page=0 chnl=15
char id=103 x=222 y=94 width=20 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=104 x=415 y=94 width=19 height=45 xoffset=1 yoffset=0 xadvance=21 page=0 chnl=15
char id=105 x=398 y=141 width=7 height=45 xoffset=2 yoffset=0 xadvance=11 page=0 chnl=15
char id=106 x=235 y=141 width=11 height=45 xoffset=-2 yoffset=0 xadvance=11 page=0 chnl=15
char id=107 x=405 y=47 width=21 height=45 xoffset=1 yoffset=0 xadvance=21 page=0 chnl=15
char id=108 x=407 y=141 width=7 height=45 xoffset=2 yoffset=0 xadvance=11 page=0 chnl=15
char id=109 x=102 y=0 width=30 height=45 xoffset=1 yoffset=0 xadvance=32 page=0 chnl=15
char id=110 x=331 y=94 width=19 height=45 xoffset=1 yoffset=0 xadvance=21 page=0 chnl=15
char id=111 x=428 y=47 width=21 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=112 x=266 y=94 width=20 height=45 xoffset=1 yoffset=0 xadvance=21 page=0 chnl=15
char id=113 x=288 y=94 width=20 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=114 x=158 y=141 width=15 height=45 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15
char id=115 x=244 y=94 width=20 height=45 xoffset=0 yoffset=0 xadvance=20 page=0 chnl=15
char id=116 x=175 y=141 width=14 height=45 xoffset=0 yoffset=0 xadvance=14 page=0 chnl=15
char id=117 x=436 y=94 width=19 height=45 xoffset=1 yoffset=0 xadvance=21 page=0 chnl=15
char id=118 x=451 y=47 width=21 height=45 xoffset=0 yoffset=0 xadvance=20 page=0 chnl=15
char id=119 x=36 y=0 width=32 height=45 xoffset=-1 yoffset=0 xadvance=30 page=0 chnl=15
char id=120 x=0 y=94 width=21 height=45 xoffset=0 yoffset=0 xadvance=21 page=0 chnl=15
char id=121 x=23 y=94 width=21 height=45 xoffset=0 yoffset=0 xadvance=20 page=0 chnl=15
char id=122 x=83 y=141 width=18 height=45 xoffset=0 yoffset=0 xadvance=18 page=0 chnl=15
char id=123 x=191 y=141 width=14 height=45 xoffset=-1 yoffset=0 xadvance=12 page=0 chnl=15
char id=124 x=416 y=141 width=5 height=45 xoffset=2 yoffset=0 xadvance=9 page=0 chnl=15
char id=125 x=207 y=141 width=13 height=45 xoffset=0 yoffset=0 xadvance=12 page=0 chnl=15
char id=126 x=42 y=141 width=19 height=45 xoffset=1 yoffset=0 xadvance=21 page=0 chnl=15

Some files were not shown because too many files have changed in this diff Show More