void templateAppInit(int width, int height) { GFX_start(); glViewport(0.0f, 0.0f, width, height); GFX_set_matrix_mode(PROJECTION_MATRIX); GFX_load_identity(); GFX_set_perspective(45.0f, (float)width / (float)height, 0.1f, 100.0f, -90.0f); obj = OBJ_load(OBJ_FILE, 1); unsigned int i = 0; while (i != obj->n_objmesh) { OBJ_build_mesh(obj, i); OBJ_free_mesh_vertex_data(obj, i); ++i; } i = 0; while (i != obj->n_texture) { OBJ_build_texture(obj, i, obj->texture_path, TEXTURE_MIPMAP, TEXTURE_FILTER_2X, 0.0f); ++i; } i = 0; while (i != obj->n_objmaterial) { MEMORY *fragment_shader = mopen((char *)"fragment.glsl", 1); MEMORY *vertex_shader = mopen((char *)"vertex.glsl", 1); OBJMATERIAL *objmaterial = &obj->objmaterial[i]; OBJ_build_material(obj, i, NULL); if (objmaterial->dissolve == 1.0f) minsert(fragment_shader, (char *)"#define SOLID_OBJECT\n", 0); else if (!objmaterial->dissolve) minsert(fragment_shader, (char *)"#define ALPHA_TESTED_OBJECT\n", 0); else minsert(fragment_shader, (char *)"#define TRANSPARENT_OBJECT\n", 0); if (objmaterial->illumination_model) { minsert(vertex_shader, (char *)"#define LIGHTING_SHADER\n", 0); minsert(fragment_shader, (char *)"#define LIGHTING_SHADER\n", 0); } objmaterial->program = PROGRAM_init(objmaterial->name); objmaterial->program->vertex_shader = SHADER_init((char *)"vertex", GL_VERTEX_SHADER); objmaterial->program->fragment_shader = SHADER_init((char *)"fragment", GL_FRAGMENT_SHADER); SHADER_compile(objmaterial->program->vertex_shader, (char *)vertex_shader->buffer, 1); SHADER_compile(objmaterial->program->fragment_shader, (char *)fragment_shader->buffer, 1); PROGRAM_set_bind_attrib_location_callback(objmaterial->program, program_bind_attrib_location); PROGRAM_link(objmaterial->program, 1); OBJ_set_draw_callback_material(obj, i, material_draw_callback); mclose(fragment_shader); mclose(vertex_shader); ++i; } }
void templateAppInit( int width, int height ) { atexit( templateAppExit ); GFX_start(); glViewport( 0.0f, 0.0f, width, height ); glGetIntegerv( GL_VIEWPORT, viewport_matrix ); vec4 color = { 1.0f, 1.0f, 1.0f, 1.0f }; light = LIGHT_create_directional( ( char * )"point", &color, 45.0f, 0.0f, 0.0f ); obj = ( OBJ * ) calloc( 1, sizeof( OBJ ) ); OBJ_load_mtl( obj, MTL_FILE, 1 ); unsigned int i = 0; while( i != obj->n_texture ) { OBJ_build_texture( obj, i, obj->texture_path, TEXTURE_MIPMAP | TEXTURE_CLAMP | TEXTURE_16_BITS, TEXTURE_FILTER_3X, 0.0f ); ++i; } i = 0; while( i != obj->n_program ) { OBJ_build_program( obj, i, program_bind_attrib_location, NULL, 1, obj->program_path ); ++i; } i = 0; while( i != obj->n_objmaterial ) { OBJ_build_material( obj, i, NULL ); OBJ_set_draw_callback_material( obj, i, material_draw ); ++i; } md5 = MD5_load_mesh( MD5_MESH, 1 ); MD5_optimize( md5, 128 ); MD5_build( md5 ); i = 0; while( i != md5->n_mesh ) { MD5MESH *md5mesh = &md5->md5mesh[ i ]; MD5_set_mesh_material( md5mesh, OBJ_get_material( obj, md5mesh->shader, 0 ) ); ++i; } MD5_load_action( md5, ( char * )"idle", ( char * )"bob_idle.md5anim", 1 ); idle = MD5_get_action( md5, ( char * )"idle", 0 ); MD5_set_action_fps( idle, 24.0f ); //MD5_action_play( idle, // MD5_METHOD_FRAME, // 1 ); //MD5_action_play( idle, // MD5_METHOD_LERP, // 1 ); MD5_action_play( idle, MD5_METHOD_SLERP, 1 ); MD5_free_mesh_data( md5 ); glDisable( GL_CULL_FACE ); }
void templateAppInit( int width, int height ) { atexit( templateAppExit ); GFX_start(); glViewport( 0.0f, 0.0f, width, height ); GFX_set_matrix_mode( PROJECTION_MATRIX ); GFX_load_identity(); GFX_set_perspective( 45.0f, ( float )width / ( float )height, 0.1f, 100.0f, 0.0f ); obj = OBJ_load( OBJ_FILE, 1 ); unsigned int i = 0; while( i != obj->n_objmesh ) { console_print( "%s: %d: GL_TRIANGLES\n", obj->objmesh[ i ].name, obj->objmesh[ i ].objtrianglelist[ 0 ].n_indice_array ); OBJ_optimize_mesh( obj, i, 128 ); console_print( "%s: %d: GL_TRIANGLE_STRIP\n", obj->objmesh[ i ].name, obj->objmesh[ i ].objtrianglelist[ 0 ].n_indice_array ); OBJ_build_mesh( obj, i ); OBJ_free_mesh_vertex_data( obj, i ); ++i; } i = 0; while( i != obj->n_texture ) { OBJ_build_texture( obj, i, obj->texture_path, TEXTURE_MIPMAP | TEXTURE_16_BITS | TEXTURE_16_BITS_5551, TEXTURE_FILTER_2X, 0.0f ); ++i; } i = 0; while( i != obj->n_objmaterial ) { OBJ_build_material( obj, i, PROGRAM_create( ( char * )"default", VERTEX_SHADER, FRAGMENT_SHADER, 1, 1, program_bind_attrib_location, NULL ) ); OBJ_set_draw_callback_material( obj, i, material_draw_callback ); ++i; } }