00001 00002 00003 00004 #ifndef faogenlib_h 00005 #define faogenlib_h 00006 00007 #define FAOGEN_API 00008 00010 namespace faogenlib 00011 { 00013 typedef unsigned int size_type; 00014 00016 typedef int obj_handle; 00017 00020 FAOGEN_API bool __stdcall initialize(); 00021 00024 FAOGEN_API void __stdcall shutdown(); 00025 00027 enum e_index_type 00028 { 00029 INDEX_U16, 00030 INDEX_U32 00031 }; 00032 00049 FAOGEN_API obj_handle __stdcall create_object_v( 00050 float const * vertices3f, size_type vertices_stride, 00051 size_type num_vertices, 00052 e_index_type index_type, 00053 void const * triangle_indices, size_type num_indices ); 00054 00076 FAOGEN_API obj_handle __stdcall create_object_vn( 00077 float const * vertices3f, size_type vertices_stride, 00078 float const * normals3f, size_type normals_stride, 00079 size_type num_vertices, 00080 e_index_type index_type, 00081 void const * triangle_indices, size_type num_indices ); 00082 00110 FAOGEN_API obj_handle __stdcall create_object_vnt( 00111 float const * vertices3f, size_type vertices_stride, 00112 float const * normals3f, size_type normals_stride, 00113 float const * texcoords2f, size_type texcoords_stride, 00114 size_type num_vertices, 00115 e_index_type index_type, 00116 void const * triangle_indices, size_type num_indices ); 00117 00151 FAOGEN_API obj_handle __stdcall create_object_vnta( 00152 float const * vertices3f, size_type vertices_stride, 00153 float const * normals3f, size_type normals_stride, 00154 float const * texcoords2f, size_type texcoords_stride, 00155 float const * atest_texcoords2f, size_type atest_texcoords_stride, 00156 size_type num_vertices, 00157 e_index_type index_type, 00158 void const * triangle_indices, size_type num_indices ); 00159 00168 FAOGEN_API void __stdcall set_object_alphamap( obj_handle object_id, 00169 size_type width, size_type height, size_type num_channels, 00170 unsigned char const * pixels ); 00171 00176 FAOGEN_API void __stdcall set_object_matrix( obj_handle object_id, float const * matrix ); 00177 00202 FAOGEN_API bool __stdcall start_ao_gen_vert( obj_handle object_id, 00203 size_type depth_size, float zoffset, float overbright, 00204 size_type quality, bool cosine_mode, int hemisphere_mode, bool bent_n ); 00205 00234 FAOGEN_API bool __stdcall start_ao_gen_tex( obj_handle object_id, 00235 size_type depth_size, float zoffset, float overbright, 00236 size_type quality, bool cosine_mode, 00237 size_type width, size_type height, int hemisphere_mode, bool bent_n ); 00238 00241 inline size_type num_iterations( size_type quality ) 00242 { 00243 return quality*quality*10 + 2; 00244 } 00245 00248 FAOGEN_API void __stdcall ao_vert_generate( size_type iterations ); 00249 00252 FAOGEN_API void __stdcall ao_tex_generate( size_type iterations ); 00253 00256 FAOGEN_API bool __stdcall results_ready(); 00257 00265 FAOGEN_API float const * __stdcall get_vert_results(); 00266 00278 FAOGEN_API float const * __stdcall get_tex_results( size_type edge_padding ); 00279 00283 FAOGEN_API void __stdcall destroy_object( obj_handle object_id ); 00284 } 00285 00286 #endif //faogenlib_h