1 /*
2  * Copyright (c) 2014 Derelict Developers
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  *   notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  *   notice, this list of conditions and the following disclaimer in the
14  *   documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the names 'Derelict', 'DerelictILUT', nor the names of its contributors
17  *   may be used to endorse or promote products derived from this software
18  *   without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 module derelict.bgfx.funcs;
33 
34 
35 // For function documentation, see the original header here: https://github.com/bkaradzic/bgfx/blob/master/include/bgfx.c99.h
36 
37 private
38 {
39     import derelict.bgfx.types;
40     import derelict.util.xtypes;
41     import derelict.util.wintypes;
42 }
43 
44 extern(C) nothrow 
45 {
46     alias da_bgfx_vertex_decl_begin = void function(bgfx_vertex_decl_t* _decl, bgfx_renderer_type_t _renderer = BGFX_RENDERER_TYPE_NULL);
47 
48     alias da_bgfx_vertex_decl_add = void function(bgfx_vertex_decl_t* _decl, bgfx_attrib_t _attrib, uint8_t _num, bgfx_attrib_type_t _type, bool _normalized = false, bool _asInt = false);
49     alias da_bgfx_vertex_decl_skip = void function(bgfx_vertex_decl_t* _decl, uint8_t _num);
50     alias da_bgfx_vertex_decl_end = void function(bgfx_vertex_decl_t* _decl);
51     alias da_bgfx_vertex_pack = void function(const float _input[4], bool _inputNormalized, bgfx_attrib_t _attr, const bgfx_vertex_decl_t* _decl, void* _data, uint32_t _index = 0);
52     alias da_bgfx_vertex_unpack = void function(float _output[4], bgfx_attrib_t _attr, const bgfx_vertex_decl_t* _decl, const void* _data, uint32_t _index = 0);
53     alias da_bgfx_vertex_convert = void function(const bgfx_vertex_decl_t* _destDecl, void* _destData, const bgfx_vertex_decl_t* _srcDecl, const void* _srcData, uint32_t _num = 1);
54     alias da_bgfx_weld_vertices = uint16_t function(uint16_t* _output, const bgfx_vertex_decl_t* _decl, const void* _data, uint16_t _num, float _epsilon = 0.001f);
55     alias da_bgfx_image_swizzle_bgra8 = void function(uint32_t _width, uint32_t _height, uint32_t _pitch, const void* _src, void* _dst);
56     alias da_bgfx_image_rgba8_downsample_2x2 = void function(uint32_t _width, uint32_t _height, uint32_t _pitch, const void* _src, void* _dst);
57     alias da_bgfx_get_supported_renderers = uint8_t function(bgfx_renderer_type_t _enum[BGFX_RENDERER_TYPE_COUNT]);
58     alias da_bgfx_get_renderer_name = const char* function(bgfx_renderer_type_t _type);
59 
60     // TODO once DMD 2.066 is release, pass extern(C++) interfaces here
61     alias da_bgfx_init = void function(bgfx_renderer_type_t _type = BGFX_RENDERER_TYPE_COUNT, CallbackI _callback = null, ReallocatorI _allocator = null);
62     alias da_bgfx_shutdown = void function();
63     alias da_bgfx_reset = void function(uint32_t _width, uint32_t _height, uint32_t _flags = BGFX_RESET_NONE);
64     alias da_bgfx_frame = uint32_t function();
65     alias da_bgfx_get_renderer_type = bgfx_renderer_type_t function();
66     alias da_bgfx_get_caps = bgfx_caps_t* function();
67     alias da_bgfx_alloc = const bgfx_memory_t* function(uint32_t _size);
68     alias da_bgfx_copy = const bgfx_memory_t* function(const(void)* _data, uint32_t _size);
69     alias da_bgfx_make_ref = const bgfx_memory_t* function(const(void)* _data, uint32_t _size);
70     alias da_bgfx_set_debug = void function(uint32_t _debug);
71     alias da_bgfx_dbg_text_clear = void function(uint8_t _attr = 0, bool _small = false);
72     alias da_bgfx_dbg_text_printf = void function(uint16_t _x, uint16_t _y, uint8_t _attr, const(char)* _format, ...);
73     alias da_bgfx_create_index_buffer = bgfx_index_buffer_handle_t function(const(bgfx_memory_t)* _mem);
74     alias da_bgfx_destroy_index_buffer = void function(bgfx_index_buffer_handle_t _handle);
75     alias da_bgfx_create_vertex_buffer = bgfx_vertex_buffer_handle_t function(const(bgfx_memory_t)* _mem, const(bgfx_vertex_decl_t)* _decl);
76     alias da_bgfx_destroy_vertex_buffer = void function(bgfx_vertex_buffer_handle_t _handle);
77     alias da_bgfx_create_dynamic_index_buffer = bgfx_dynamic_index_buffer_handle_t function(uint32_t _num);
78     alias da_bgfx_create_dynamic_index_buffer_mem = bgfx_dynamic_index_buffer_handle_t function(const(bgfx_memory_t)* _mem);
79     alias da_bgfx_update_dynamic_index_buffer = void function(bgfx_dynamic_index_buffer_handle_t _handle, const bgfx_memory_t* _mem);
80     alias da_bgfx_destroy_dynamic_index_buffer = void function(bgfx_dynamic_index_buffer_handle_t _handle);
81     alias da_bgfx_create_dynamic_vertex_buffer = bgfx_dynamic_vertex_buffer_handle_t function(uint16_t _num, const(bgfx_vertex_decl_t)* _decl);
82     alias da_bgfx_create_dynamic_vertex_buffer_mem = bgfx_dynamic_vertex_buffer_handle_t function(const(bgfx_memory_t)* _mem, const(bgfx_vertex_decl_t)* _decl);
83     alias da_bgfx_update_dynamic_vertex_buffer = void function(bgfx_dynamic_vertex_buffer_handle_t _handle, const(bgfx_memory_t)* _mem);
84     alias da_bgfx_destroy_dynamic_vertex_buffer = void function(bgfx_dynamic_vertex_buffer_handle_t _handle);
85     alias da_bgfx_check_avail_transient_index_buffer = bool function(uint32_t _num);
86     alias da_bgfx_check_avail_transient_vertex_buffer = bool function(uint32_t _num, const(bgfx_vertex_decl_t)* _decl);
87     alias da_bgfx_check_avail_instance_data_buffer = bool function(uint32_t _num, uint16_t _stride);
88     alias da_bgfx_check_avail_transient_buffers = bool function(uint32_t _numVertices, const(bgfx_vertex_decl_t)* _decl, uint32_t _numIndices);
89     alias da_bgfx_alloc_transient_index_buffer = void function(bgfx_transient_index_buffer_t* _tib, uint32_t _num);
90     alias da_bgfx_alloc_transient_vertex_buffer = void function(bgfx_transient_vertex_buffer_t* _tvb, uint32_t _num, const(bgfx_vertex_decl_t)* _decl);
91     alias da_bgfx_alloc_transient_buffers = bool function(bgfx_transient_vertex_buffer_t* _tvb, const(bgfx_vertex_decl_t)* _decl, uint16_t _numVertices, bgfx_transient_index_buffer_t* _tib, uint16_t _numIndices);
92     alias da_bgfx_alloc_instance_data_buffer = const(bgfx_instance_data_buffer_t)* function(uint32_t _num, uint16_t _stride);
93     alias da_bgfx_create_shader = bgfx_shader_handle_t function(const bgfx_memory_t* _mem);
94     alias da_bgfx_get_shader_uniforms = uint16_t function(bgfx_shader_handle_t _handle, bgfx_uniform_handle_t* _uniforms = null, uint16_t _max = 0);
95     alias da_bgfx_destroy_shader = void function(bgfx_shader_handle_t _handle);
96     alias da_bgfx_create_program = bgfx_program_handle_t function(bgfx_shader_handle_t _vsh, bgfx_shader_handle_t _fsh, bool _destroyShaders = false);
97     alias da_bgfx_destroy_program = void function(bgfx_program_handle_t _handle);
98     alias da_bgfx_calc_texture_size = void function(bgfx_texture_info_t* _info, uint16_t _width, uint16_t _height, uint16_t _depth, uint8_t _numMips, bgfx_texture_format_t _format);
99     alias da_bgfx_create_texture = bgfx_texture_handle_t function(const bgfx_memory_t* _mem, uint32_t _flags = BGFX_TEXTURE_NONE, uint8_t _skip = 0, bgfx_texture_info_t* _info = null);
100     alias da_bgfx_create_texture_2d = bgfx_texture_handle_t function(uint16_t _width, uint16_t _height, uint8_t _numMips, bgfx_texture_format_t _format, uint32_t _flags = BGFX_TEXTURE_NONE, const bgfx_memory_t* _mem = null);
101     alias da_bgfx_create_texture_3d = bgfx_texture_handle_t function(uint16_t _width, uint16_t _height, uint16_t _depth, uint8_t _numMips, bgfx_texture_format_t _format, uint32_t _flags = BGFX_TEXTURE_NONE, const bgfx_memory_t* _mem = null);
102     alias da_bgfx_create_texture_cube = bgfx_texture_handle_t function(uint16_t _size, uint8_t _numMips, bgfx_texture_format_t _format, uint32_t _flags = BGFX_TEXTURE_NONE, const bgfx_memory_t* _mem = null);
103     alias da_bgfx_update_texture_2d = void function(bgfx_texture_handle_t _handle, uint8_t _mip, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const bgfx_memory_t* _mem, uint16_t _pitch = uint16_t.max);
104     alias da_bgfx_update_texture_3d = void function(bgfx_texture_handle_t _handle, uint8_t _mip, uint16_t _x, uint16_t _y, uint16_t _z, uint16_t _width, uint16_t _height, uint16_t _depth, const bgfx_memory_t* _mem);
105     alias da_bgfx_update_texture_cube = void function(bgfx_texture_handle_t _handle, uint8_t _side, uint8_t _mip, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const bgfx_memory_t* _mem, uint16_t _pitch = uint16_t.max);
106     alias da_bgfx_destroy_texture = void function(bgfx_texture_handle_t _handle);
107     alias da_bgfx_create_frame_buffer = bgfx_frame_buffer_handle_t function(uint16_t _width, uint16_t _height, bgfx_texture_format_t _format, uint32_t _textureFlags = (BGFX_TEXTURE_U_CLAMP | BGFX_TEXTURE_V_CLAMP) );
108     alias da_bgfx_create_frame_buffer_from_handles = bgfx_frame_buffer_handle_t function(uint8_t _num, bgfx_texture_handle_t* _handles, bool _destroyTextures = false);
109     alias da_bgfx_destroy_frame_buffer = void function(bgfx_frame_buffer_handle_t _handle);
110     alias da_bgfx_create_uniform = bgfx_uniform_handle_t function(const char* _name, bgfx_uniform_type_t _type, uint16_t _num = 1);
111     alias da_bgfx_destroy_uniform = void function(bgfx_uniform_handle_t _handle);
112     alias da_bgfx_set_view_name = void function(uint8_t _id, const char* _name);
113     alias da_bgfx_set_view_rect = void function(uint8_t _id, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height);
114     alias da_bgfx_set_view_rect_mask = void function(uint32_t _viewMask, uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height);
115     alias da_bgfx_set_view_scissor = void function(uint8_t _id, uint16_t _x = 0, uint16_t _y = 0, uint16_t _width = 0, uint16_t _height = 0);
116     alias da_bgfx_set_view_scissor_mask = void function(uint32_t _viewMask, uint16_t _x = 0, uint16_t _y = 0, uint16_t _width = 0, uint16_t _height = 0);
117     alias da_bgfx_set_view_clear = void function(uint8_t _id, uint8_t _flags, uint32_t _rgba = 0x000000ff, float _depth =  1.0f, uint8_t _stencil = 0);
118     alias da_bgfx_set_view_clear_mask = void function(uint32_t _viewMask, uint8_t _flags, uint32_t _rgba = 0x000000ff, float _depth =  1.0f, uint8_t _stencil = 0);
119     alias da_bgfx_set_view_seq = void function(uint8_t _id, bool _enabled);
120     alias da_bgfx_set_view_seq_mask = void function(uint32_t _viewMask, bool _enabled);
121     alias da_bgfx_set_view_frame_buffer = void function(uint8_t _id, bgfx_frame_buffer_handle_t _handle);
122     alias da_bgfx_set_view_frame_buffer_mask = void function(uint32_t _viewMask, bgfx_frame_buffer_handle_t _handle);
123     alias da_bgfx_set_view_transform = void function(uint8_t _id, const void* _view, const void* _proj);
124     alias da_bgfx_set_view_transform_mask = void function(uint32_t _viewMask, const void* _view, const void* _proj);
125     alias da_bgfx_set_marker = void function(const char* _marker);
126     alias da_bgfx_set_state = void function(uint64_t _state, uint32_t _rgba = 0);
127     alias da_bgfx_set_stencil = void function(uint32_t _fstencil, uint32_t _bstencil = BGFX_STENCIL_NONE);
128     alias da_bgfx_set_scissor = uint16_t function(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height);
129     alias da_bgfx_set_scissor_cached = void function(uint16_t _cache = uint16_t.max);
130     alias da_bgfx_set_transform = uint32_t function(const void* _mtx, uint16_t _num = 1);
131     alias da_bgfx_set_transform_cached = void function(uint32_t _cache, uint16_t _num = 1);
132     alias da_bgfx_set_uniform = void function(bgfx_uniform_handle_t _handle, const void* _value, uint16_t _num = 1);
133     alias da_bgfx_set_index_buffer = void function(bgfx_index_buffer_handle_t _handle, uint32_t _firstIndex = 0, uint32_t _numIndices = uint32_t.max);
134     alias da_bgfx_set_dynamic_index_buffer = void function(bgfx_dynamic_index_buffer_handle_t _handle, uint32_t _firstIndex = 0, uint32_t _numIndices = uint32_t.max);
135     alias da_bgfx_set_transient_index_buffer = void function(const bgfx_transient_index_buffer_t* _tib, uint32_t _firstIndex = 0, uint32_t _numIndices = uint32_t.max);
136     alias da_bgfx_set_vertex_buffer = void function(bgfx_vertex_buffer_handle_t _handle, uint32_t _startVertex = 0, uint32_t _numVertices = uint32_t.max);
137     alias da_bgfx_set_dynamic_vertex_buffer = void function(bgfx_dynamic_vertex_buffer_handle_t _handle, uint32_t _numVertices = uint32_t.max);
138     alias da_bgfx_set_transient_vertex_buffer = void function(const bgfx_transient_vertex_buffer_t* _tvb, uint32_t _startVertex = 0, uint32_t _numVertices = uint32_t.max);
139     alias da_bgfx_set_instance_data_buffer = void function(const bgfx_instance_data_buffer_t* _idb, uint16_t _num = uint16_t.max);
140     alias da_bgfx_set_program = void function(bgfx_program_handle_t _handle);
141     alias da_bgfx_set_texture = void function(uint8_t _stage, bgfx_uniform_handle_t _sampler, bgfx_texture_handle_t _handle, uint32_t _flags = uint32_t.max);
142     alias da_bgfx_set_texture_from_frame_buffer = void function(uint8_t _stage, bgfx_uniform_handle_t _sampler, bgfx_frame_buffer_handle_t _handle, uint8_t _attachment = 0, uint32_t _flags = uint32_t.max);
143     alias da_bgfx_submit = uint32_t function(uint8_t _id, int32_t _depth = 0);
144     alias da_bgfx_submit_mask = uint32_t function(uint32_t _viewMask, int32_t _depth = 0);
145     alias da_bgfx_discard = void function();
146     alias da_bgfx_save_screen_shot = void function(const char* _filePath);
147 
148     // bgfxplatform.c99.h
149 
150     alias da_bgfx_render_frame = bgfx_render_frame_t function();
151 
152     version (Android)
153     {
154         struct ANativeWindow;
155         alias da_bgfx_android_set_window = void function(ANativeWindow* _window);
156     }
157     version(linux)
158     {
159         struct Display;
160         alias da_bgfx_x11_set_display_window = void function(Display* _display, Window _window);
161     }
162 
163     version(OSX)
164     {
165         alias da_bgfx_osx_set_ns_window = void function(void* _window);
166     }
167 
168     version(Windows)
169     {
170         alias da_bgfx_win_set_hwnd = void function(HWND _window);
171     }
172 
173     // TODO when iOS supported
174     //BGFX_C_API void bgfx_ios_set_eagl_layer(void* _layer);
175 }
176 
177 __gshared
178 {
179     da_bgfx_vertex_decl_begin bgfx_vertex_decl_begin;
180     da_bgfx_vertex_decl_add bgfx_vertex_decl_add;
181     da_bgfx_vertex_decl_skip bgfx_vertex_decl_skip;
182     da_bgfx_vertex_decl_end bgfx_vertex_decl_end;
183     da_bgfx_vertex_pack bgfx_vertex_pack;
184     da_bgfx_vertex_unpack bgfx_vertex_unpack;
185     da_bgfx_vertex_convert bgfx_vertex_convert;
186     da_bgfx_weld_vertices bgfx_weld_vertices;
187     da_bgfx_image_swizzle_bgra8 bgfx_image_swizzle_bgra8;
188     da_bgfx_image_rgba8_downsample_2x2 bgfx_image_rgba8_downsample_2x2;
189     da_bgfx_get_supported_renderers bgfx_get_supported_renderers;
190     da_bgfx_get_renderer_name bgfx_get_renderer_name;
191     da_bgfx_init bgfx_init;
192     da_bgfx_shutdown bgfx_shutdown;
193     da_bgfx_reset bgfx_reset;
194     da_bgfx_frame bgfx_frame;
195     da_bgfx_get_renderer_type bgfx_get_renderer_type;
196     da_bgfx_get_caps bgfx_get_caps;
197     da_bgfx_alloc bgfx_alloc;
198     da_bgfx_copy bgfx_copy;
199     da_bgfx_make_ref bgfx_make_ref;
200     da_bgfx_set_debug bgfx_set_debug;
201     da_bgfx_dbg_text_clear bgfx_dbg_text_clear;
202     da_bgfx_dbg_text_printf bgfx_dbg_text_printf;
203     da_bgfx_create_index_buffer bgfx_create_index_buffer;
204     da_bgfx_destroy_index_buffer bgfx_destroy_index_buffer;
205     da_bgfx_create_vertex_buffer bgfx_create_vertex_buffer;
206     da_bgfx_destroy_vertex_buffer bgfx_destroy_vertex_buffer;
207     da_bgfx_create_dynamic_index_buffer bgfx_create_dynamic_index_buffer;
208     da_bgfx_create_dynamic_index_buffer_mem bgfx_create_dynamic_index_buffer_mem;
209     da_bgfx_update_dynamic_index_buffer bgfx_update_dynamic_index_buffer;
210     da_bgfx_destroy_dynamic_index_buffer bgfx_destroy_dynamic_index_buffer;
211     da_bgfx_create_dynamic_vertex_buffer bgfx_create_dynamic_vertex_buffer;
212     da_bgfx_create_dynamic_vertex_buffer_mem bgfx_create_dynamic_vertex_buffer_mem;
213     da_bgfx_update_dynamic_vertex_buffer bgfx_update_dynamic_vertex_buffer;
214     da_bgfx_destroy_dynamic_vertex_buffer bgfx_destroy_dynamic_vertex_buffer;
215     da_bgfx_check_avail_transient_index_buffer bgfx_check_avail_transient_index_buffer;
216     da_bgfx_check_avail_transient_vertex_buffer bgfx_check_avail_transient_vertex_buffer;
217     da_bgfx_check_avail_instance_data_buffer bgfx_check_avail_instance_data_buffer;
218     da_bgfx_check_avail_transient_buffers bgfx_check_avail_transient_buffers;
219     da_bgfx_alloc_transient_index_buffer bgfx_alloc_transient_index_buffer;
220     da_bgfx_alloc_transient_vertex_buffer bgfx_alloc_transient_vertex_buffer;
221     da_bgfx_alloc_transient_buffers bgfx_alloc_transient_buffers;
222     da_bgfx_alloc_instance_data_buffer bgfx_alloc_instance_data_buffer;
223     da_bgfx_create_shader bgfx_create_shader;
224     da_bgfx_get_shader_uniforms bgfx_get_shader_uniforms;
225     da_bgfx_destroy_shader bgfx_destroy_shader;
226     da_bgfx_create_program bgfx_create_program;
227     da_bgfx_destroy_program bgfx_destroy_program;
228     da_bgfx_calc_texture_size bgfx_calc_texture_size;
229     da_bgfx_create_texture bgfx_create_texture;
230     da_bgfx_create_texture_2d bgfx_create_texture_2d;
231     da_bgfx_create_texture_3d bgfx_create_texture_3d;
232     da_bgfx_create_texture_cube bgfx_create_texture_cube;
233     da_bgfx_update_texture_2d bgfx_update_texture_2d;
234     da_bgfx_update_texture_3d bgfx_update_texture_3d;
235     da_bgfx_update_texture_cube bgfx_update_texture_cube;
236     da_bgfx_destroy_texture bgfx_destroy_texture;
237     da_bgfx_create_frame_buffer bgfx_create_frame_buffer;
238     da_bgfx_create_frame_buffer_from_handles bgfx_create_frame_buffer_from_handles;
239     da_bgfx_destroy_frame_buffer bgfx_destroy_frame_buffer;
240     da_bgfx_create_uniform bgfx_create_uniform;
241     da_bgfx_destroy_uniform bgfx_destroy_uniform;
242     da_bgfx_set_view_name bgfx_set_view_name;
243     da_bgfx_set_view_rect bgfx_set_view_rect;
244     da_bgfx_set_view_rect_mask bgfx_set_view_rect_mask;
245     da_bgfx_set_view_scissor bgfx_set_view_scissor;
246     da_bgfx_set_view_scissor_mask bgfx_set_view_scissor_mask;
247     da_bgfx_set_view_clear bgfx_set_view_clear;
248     da_bgfx_set_view_clear_mask bgfx_set_view_clear_mask;
249     da_bgfx_set_view_seq bgfx_set_view_seq;
250     da_bgfx_set_view_seq_mask bgfx_set_view_seq_mask;
251     da_bgfx_set_view_frame_buffer bgfx_set_view_frame_buffer;
252     da_bgfx_set_view_frame_buffer_mask bgfx_set_view_frame_buffer_mask;
253     da_bgfx_set_view_transform bgfx_set_view_transform;
254     da_bgfx_set_view_transform_mask bgfx_set_view_transform_mask;
255     da_bgfx_set_marker bgfx_set_marker;
256     da_bgfx_set_state bgfx_set_state;
257     da_bgfx_set_stencil bgfx_set_stencil;
258     da_bgfx_set_scissor bgfx_set_scissor;
259     da_bgfx_set_scissor_cached bgfx_set_scissor_cached;
260     da_bgfx_set_transform bgfx_set_transform;
261     da_bgfx_set_transform_cached bgfx_set_transform_cached;
262     da_bgfx_set_uniform bgfx_set_uniform;
263     da_bgfx_set_index_buffer bgfx_set_index_buffer;
264     da_bgfx_set_dynamic_index_buffer bgfx_set_dynamic_index_buffer;
265     da_bgfx_set_transient_index_buffer bgfx_set_transient_index_buffer;
266     da_bgfx_set_vertex_buffer bgfx_set_vertex_buffer;
267     da_bgfx_set_dynamic_vertex_buffer bgfx_set_dynamic_vertex_buffer;
268     da_bgfx_set_transient_vertex_buffer bgfx_set_transient_vertex_buffer;
269     da_bgfx_set_instance_data_buffer bgfx_set_instance_data_buffer;
270     da_bgfx_set_program bgfx_set_program;
271     da_bgfx_set_texture bgfx_set_texture;
272     da_bgfx_set_texture_from_frame_buffer bgfx_set_texture_from_frame_buffer;
273     da_bgfx_submit bgfx_submit;
274     da_bgfx_submit_mask bgfx_submit_mask;
275     da_bgfx_discard bgfx_discard;
276     da_bgfx_save_screen_shot bgfx_save_screen_shot;
277 
278     da_bgfx_render_frame bgfx_render_frame;
279 
280     version (Android)
281     {
282         da_bgfx_android_set_window bgfx_android_set_window;
283     }
284     version(linux)
285     {
286         da_bgfx_x11_set_display_window bgfx_x11_set_display_window;
287     }
288 
289     version(OSX)
290     {
291         da_bgfx_osx_set_ns_window bgfx_osx_set_ns_window;
292     }
293 
294     version(Windows)
295     {  
296         da_bgfx_win_set_hwnd bgfx_win_set_hwnd;
297     }
298 }