1 ! (c)2009 Joe Groff bsd license
2 USING: kernel namespaces opengl.capabilities opengl.gl variants ;
5 TUPLE: gpu-object < identity-tuple handle ;
12 SYMBOL: has-vertex-array-objects?
15 "2.0" require-gl-version
16 "3.0" { { "GL_ARB_vertex_array_object" "GL_APPLE_vertex_array_object" } }
17 has-gl-version-or-extensions? has-vertex-array-objects? set-global
18 "3.0" has-gl-version? opengl-3 opengl-2 ? gpu-api set-global ;
20 HOOK: init-gpu-api gpu-api ( -- )
22 M: opengl-2 init-gpu-api
23 GL_POINT_SPRITE glEnable ;
24 M: opengl-3 init-gpu-api
34 "3.0" { { "GL_APPLE_vertex_array_object" "GL_ARB_vertex_array_object" } }
35 has-gl-version-or-extensions?
36 [ 0 glBindVertexArray ] when
38 "3.0" { { "GL_EXT_framebuffer_object" "GL_ARB_framebuffer_object" } }
39 has-gl-version-or-extensions? [
40 GL_DRAW_FRAMEBUFFER 0 glBindFramebuffer
41 GL_READ_FRAMEBUFFER 0 glBindFramebuffer
42 GL_RENDERBUFFER 0 glBindRenderbuffer
45 "1.5" { "GL_ARB_vertex_buffer_object" }
46 has-gl-version-or-extensions? [
47 GL_ARRAY_BUFFER 0 glBindBuffer
48 GL_ELEMENT_ARRAY_BUFFER 0 glBindBuffer
51 "2.1" { "GL_ARB_pixel_buffer_object" }
52 has-gl-version-or-extensions? [
53 GL_PIXEL_PACK_BUFFER 0 glBindBuffer
54 GL_PIXEL_UNPACK_BUFFER 0 glBindBuffer
57 "2.0" { "GL_ARB_shader_objects" }
58 has-gl-version-or-extensions?
59 [ 0 glUseProgram ] when ;