In this guide we will describe how to use Tiny Lib in your project.
Tiny Lib is a "one header" library. This means that the declarations (the functions, types, etc..) and the definitions (the actual source code/implementation) are all in the same file. To make sure that the definitions are compiled we need to inject it somewhere in your project.
There are two reasons why we store the definitions and declarations in the same file:
- This allows you to use this library in your project w/o any complicated compile scripts
- This allows you to use your own openGL wrapper code that includes the GL headers
As described above we need to inject the definitions somewhere in your code. To do this
you need to define ROXLU_IMPLEMENTATION
in one file (and only one file!) in your project
before including tinylib.h. A common place to do this is in your main.cpp after you've
included all the necessary openGL headers (if you want to make use of the tiny lib opengl
features). Besides defining the ROXLU_IMPLEMENTATION
you need to tell tiny lib what
features you want to use. You can use the following defines:
ROXLU_USE_MATH
To enable mat4, mat3, vec4, vec3, vec2, Perlin, SplineROXLU_USE_PNG
To enable loading and saving of PNG filesROXLU_USE_JPG
To enable loading of JPG filesROXLU_USE_OPENGL
To enable Shader, Program, OBJ, Painter, VertexP, etc..ROXLU_USE_CURL
To enable loading of remote data over httpROXLU_USE_AUDIO
To enable audio outputROXLU_USE_FONT
To enable PixelFont to draw bitmap strings (with opengl)ROXLU_USE_ALL
To enable everything
Note that some of these defines enable code that are depending on other libraries see
below in the dependencies section. In the following code examples we show you an example
of how to use the ROXLU_IMPLEMENTATION
in your main.cpp file and how to enable features
in a common header (MyApplication).
Example main.cpp:
#define GLFW_INCLUDE_GLCOREARB
#include <GLFW/glfw3.h>
#define ROXLU_USE_MATH
#define ROXLU_USE_PNG
#define ROXLU_USE_OPENGL
#define ROXLU_IMPLEMENTATION
#include <tinylib.h>
Example MyApplication.h:
#define ROXLU_USE_OPENGL
#define ROXLU_USE_MATH
#include <tinylib.h>
class MyApplication() {
}
When you enable certain features there are some dependencies which are listed below:
- ROXLU_USE_CURL
- ROXLU_USE_PNG
- ROXLU_USE_JPG
- ROXLU_USE_AUDIO
-
On Mac you need to link with the following libraries and frameworks:
- pthreads
- AudioUnit framework
- CoreAudio framework
- AudioToolbox framework
On Linux you need to link with the following libraries:
- pthread
- dl
- asound
- z
- vorbis
- vorbisenc
- FLAC
- ogg