Skip to content

prideout/pez

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Image test

Pez lets you create a simple, fixed-size window and render to it with OpenGL. It's composed of a single header file and single C99 source file.

It's intended for creating small demos on Linux. If you're building a real application, you should probably use a real library like SDL or GLFW.

Your OpenGL demo needs to implement a few functions:

PezConfig PezInitialize()             // One-time setup, return a small struct with window size & title
void PezRender()                      // Do your drawing here!
void PezUpdate(float elapsedSeconds)  // Perform animation and physics

You can also optionally implement the following handler functions, depending on which #define statements you've got enabled in the header file:

void PezHandleMouse(int x, int y, int action) // Respond to a mouse click or move event
void PezReceiveDrop(const char* filename)     // Respond to a file being drag-n-dropped to your window

Pez provides some utility functions to help make assertions with printf-style error messages:

void pezFatal(const char* pStr, ...)
void pezCheck(int condition, ...)
void pezPrintString(const char* pStr, ...)

Note that your job is to implement functions that are prefixed with a capital Pez, whereas functions that prefixed with a lowercase pez are already implemented for you.

Pez provides some OS-specific functions for you:

const char* pezOpenFileDialog()
const char* pezGetDesktopFolder()
int pezIsPressing(char key)

Pez never makes any OpenGL calls (that's up to you), but it provides a few helper functions to make it easy to load GLSL strings:

const char* pezGetShader(const char* effectKey)
int pezAddDirective(const char* token, const char* directive)

Take a look at glsw to see how the above functions work. pez also makes it easy to create vertex buffer objects from blobs of data:

PezVerts pezLoadVerts(const char* filename)
PezVerts pezGenQuad(float left, float top, float right, float bottom)
void pezFreeVerts(PezVerts verts)
void pezSaveVerts(PezVerts verts, const char* filename)

Likewise, here are some functions to help with textures or pixel buffer objects:

PezPixels pezLoadPixels(const char* filename)
void pezFreePixels(PezPixels pixels)
void pezSavePixels(PezPixels pixels, const char* filename)
void pezRenderText(PezPixels pixels, const char* message)
PezPixels pezGenNoise(PezPixels desc, float alpha, float beta, int n)

License

Creative Commons Attribution

About

teeny tiny platform layer for simple OpenGL demos

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published