8 #include <luabind/luabind.hpp>
9 #include <luabind/class.hpp>
10 #include <luabind/function.hpp>
11 #include <luabind/object.hpp>
18 struct glut_constants
{};
19 struct gl_constants
{};
21 using luabind::object
;
23 namespace glut_bindings
27 void displayfunc_callback()
32 void set_displayfunc(object
const& fun
)
34 glutDisplayFunc(&displayfunc_callback
);
40 void idlefunc_callback()
45 void set_idlefunc(object
const& fun
)
47 glutIdleFunc(&idlefunc_callback
);
54 void reshapefunc_callback(int w
, int h
)
59 void set_reshapefunc(object
const& fun
)
66 void keyboardfunc_callback(unsigned char key
, int x
, int y
)
68 keyboardfunc(key
, x
, y
);
71 void set_keyboardfunc(object
const& fun
)
73 glutKeyboardFunc(&keyboardfunc_callback
);
79 void mousefunc_callback(int button
, int state
, int x
, int y
)
81 mousefunc(button
, state
, x
, y
);
84 void set_mousefunc(object
const& fun
)
90 void bind_glut(lua_State
* L
)
92 using namespace luabind
;
93 using namespace glut_bindings
;
99 def("glutInitWindowSize", &glutInitWindowSize
),
100 def("glutInitWindowPosition", &glutInitWindowPosition
),
101 def("glutInitDisplayMode", &glutInitDisplayMode
),
103 class_
<glut_constants
>("glut")
106 value("RGB", GLUT_RGB
),
107 value("RGBA", GLUT_RGBA
),
108 value("INDEX", GLUT_INDEX
),
109 value("SINGLE", GLUT_SINGLE
),
110 value("DOUBLE", GLUT_DOUBLE
),
111 value("DEPTH", GLUT_DEPTH
),
112 value("STENCIL", GLUT_STENCIL
),
113 value("LEFT_BUTTON", GLUT_LEFT_BUTTON
),
114 value("MIDDLE_BUTTON", GLUT_MIDDLE_BUTTON
),
115 value("RIGHT_BUTTON", GLUT_RIGHT_BUTTON
),
116 value("UP", GLUT_UP
),
117 value("DOWN", GLUT_DOWN
),
118 value("ELAPSED_TIME", GLUT_ELAPSED_TIME
)
121 def("glutCreateWindow", &glutCreateWindow
),
122 def("glutDestroyWindow", &glutDestroyWindow
),
123 def("glutFullScreen", &glutFullScreen
),
124 def("glutDisplayFunc", &set_displayfunc
),
125 def("glutKeyboardFunc", &set_keyboardfunc
),
126 def("glutReshapeFunc", &set_reshapefunc
),
127 def("glutIdleFunc", &set_idlefunc
),
128 def("glutMainLoop", &glutMainLoop
),
129 def("glutSwapBuffers", &glutSwapBuffers
),
130 def("glutGet", &glutGet
),
131 def("glutSolidSphere", &glutSolidSphere
),
132 def("glutWireSphere", &glutWireSphere
),
133 def("glutWireTeapot", &glutWireTeapot
),
134 def("glutSolidTeapot", &glutSolidTeapot
),
138 class_
<gl_constants
>("gl")
141 value("COLOR_BUFFER_BIT", GL_COLOR_BUFFER_BIT
),
142 value("DEPTH_BUFFER_BIT", GL_DEPTH_BUFFER_BIT
),
143 value("TRIANGLES", GL_TRIANGLES
),
144 value("MODELVIEW", GL_MODELVIEW
),
145 value("PROJECTION", GL_PROJECTION
)
148 def("glBegin", &glBegin
),
149 def("glVertex3", &glVertex3f
),
150 def("glEnd", &glEnd
),
151 def("glClear", &glClear
),
152 def("glPushMatrix", &glPushMatrix
),
153 def("glPopMatrix", &glPopMatrix
),
154 def("glRotate", &glRotatef
),
155 def("glColor3", &glColor3f
),
156 def("glColor4", &glColor4f
),
157 def("glMatrixMode", &glMatrixMode
),
158 def("glLoadIdentity", &glLoadIdentity
),
159 def("glViewport", &glViewport
),
160 def("glTranslate", &glTranslatef
),
164 def("gluPerspective", &gluPerspective
)
168 int main(int argc
, char* argv
[])
170 lua_State
* L
= lua_open();
175 glutInit (&argc
, argv
);
177 lua_dofile(L
, "glut_bindings.lua");