/************************************************ Render the currently selected item list to screen ************************************************/ void screen_display(context_t * ctx) { SDL_Event event; int i; for(i=0; i<SCREEN_LAST; i++) { virtual_x[i] = INT_MAX; virtual_y[i] = INT_MAX; virtual_z[i] = -1.0; } while( screen_end == -1) { frame_start(ctx); if(compose) { compose = 0; compose_scr(ctx); } display_fps(); while (SDL_PollEvent(&event)) { compose |= sdl_screen_manager(ctx->window, ctx->render, &event); sdl_mouse_manager(ctx->render,&event,item_list); sdl_keyboard_manager(&event); } sdl_mouse_position_manager(ctx->render,item_list); SDL_RenderClear(ctx->render); sdl_blit_item_list(ctx->render,item_list); sdl_blit_to_screen(ctx->render); sdl_loop_manager(); } return; }
/** * @brief Renders the game itself (player flying around and friends). * * Blitting order (layers): * - BG * - stars and planets * - background player stuff (planet targetting) * - background particles * - back layer weapons * - N * - NPC ships * - front layer weapons * - normal layer particles (above ships) * - FG * - player * - foreground particles * - text and GUI */ static void render_all (void) { double dt; dt = (paused) ? 0. : game_dt; /* setup */ spfx_begin(dt); /* BG */ space_render(dt); planets_render(); weapons_render(WEAPON_LAYER_BG, dt); /* N */ pilots_render(dt); weapons_render(WEAPON_LAYER_FG, dt); spfx_render(SPFX_LAYER_BACK); /* FG */ player_render(dt); spfx_render(SPFX_LAYER_FRONT); space_renderOverlay(dt); spfx_end(); gui_render(dt); display_fps( real_dt ); /* Exception. */ }
static void draw_gl(Evas_Object *obj) { static int i=0; appdata_s *ad = evas_object_data_get(obj, "ad"); float model[16], view[16]; float aspect; if (!ad) return; init_matrix(model); init_matrix(view); aspect = (float) ad->glview_w / (float) ad->glview_h; view_set_perspective(view, 60.0f, aspect, 1.0f, 20.0f); translate_xyz(model, 0.0f, 0.0f, -2.5f); rotate_xyz(model, ad->xangle, ad->yangle, 0.0f); multiply_matrix(ad->mvp, view, model); glViewport(0, 0, ad->glview_w, ad->glview_h); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glVertexAttribPointer(ad->idx_position, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), cube_vertices); glVertexAttribPointer(ad->idx_color, 4, GL_FLOAT, GL_FALSE, 4 * sizeof(float), cube_colors); glEnableVertexAttribArray(ad->idx_position); glEnableVertexAttribArray(ad->idx_color); glUniformMatrix4fv(ad->idx_mvp, 1, GL_FALSE, ad->mvp); glDrawElements(GL_TRIANGLES, cube_indices_count, GL_UNSIGNED_SHORT, cube_indices); //3rd glVertexAttribPointer(ad->idx_position, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), cubeBFL_vertices); glVertexAttribPointer(ad->idx_color, 4, GL_FLOAT, GL_FALSE, 4 * sizeof(float), cube_colors); glEnableVertexAttribArray(ad->idx_position); glEnableVertexAttribArray(ad->idx_color); glUniformMatrix4fv(ad->idx_mvp, 1, GL_FALSE, ad->mvp); //glRotatef(45,0,1,1); i = (i+10)%360; glDrawElements(GL_TRIANGLES, cubeBFL_indices_count, GL_UNSIGNED_SHORT, cubeBFL_indices); glFlush(); display_fps(); }