Jump to content
  • Advertisement
Sign in to follow this  
Timoteo2010

gforth OpenGL Interface Coding Example

This topic is 2972 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

This is an example of how to interface the OpenGL libraries to gforth. The gforth libcc interface code parses and writes the lines between the c-library/end-c-library lines to the mini_opengl_lib.c file and then calls the gcc compiler. The resulting .o file is then linked to the gforth system, allowing access to the OpenGL functions that have been defined.

Lines preceded by \c are copied verbatim to the mini_opengl_lib.c file.

c-library mini_opengl_lib

s" GL" add-lib
s" GLU" add-lib

\c #if defined(__APPLE__) && defined(__MACH__)
\c #include <OpenGL/gl.h>
\c #include <OpenGL/glu.h>
\c #else
\c #include <GL/gl.h>
\c #include <GL/glu.h>
\c #endif

c-function gl-clear glClear n -- void
c-function gl-clear-color glClearColor r r r r -- void
c-function gl-clear-depth glClearDepth r -- void
c-function gl-enable glEnable n -- void
c-function gl-depth-func glDepthFunc n -- void
c-function gl-hint glHint n n -- void
c-function gl-load-identity glLoadIdentity -- void
c-function gl-matrix-mode glMatrixMode n -- void
c-function gl-shade-model glShadeModel n -- void
c-function gl-viewport glViewport n n n n -- void
c-function glu-perspective gluPerspective r r r r -- void

end-c-library

<n> indicates a 32-bit integer value is passed.
<r> indicates a floating point value is passed.
<void> indicates there is no return value from this function call.

In the first c-function line, gl-clear is the name of the function that is created in the gforth dictionary, while glClear is the actual OpenGL library function accessed.

This gives gforth a portable cross-platform OpenGL implementation capability.

A similar interface is used for the SDL library functions.

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!