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