static void menu_display_d3d_restore_clear_color(void) { d3d_video_t *d3d = (d3d_video_t*)video_driver_get_ptr(NULL); DWORD clear_color = 0x00000000; d3d_clear(d3d->dev, 0, NULL, D3DCLEAR_TARGET, clear_color, 0, 0); }
static void menu_display_d3d_clear_color(float r, float g, float b, float a) { d3d_video_t *d3d = (d3d_video_t*)video_driver_get_ptr(NULL); DWORD clear_color = D3DCOLOR_ARGB(BYTE_CLAMP(a * 255.0f), BYTE_CLAMP(r * 255.0f), BYTE_CLAMP(g * 255.0f), BYTE_CLAMP(b * 255.0f)); d3d_clear(d3d->dev, 0, NULL, D3DCLEAR_TARGET, clear_color, 0, 0); }
static void menu_display_d3d_clear_color(menu_display_ctx_clearcolor_t *clearcolor) { DWORD clear_color = 0; d3d_video_t *d3d = (d3d_video_t*)video_driver_get_ptr(false); if (!d3d || !clearcolor) return; clear_color = D3DCOLOR_ARGB( BYTE_CLAMP(clearcolor->a * 255.0f), /* A */ BYTE_CLAMP(clearcolor->r * 255.0f), /* R */ BYTE_CLAMP(clearcolor->g * 255.0f), /* G */ BYTE_CLAMP(clearcolor->b * 255.0f) /* B */ ); d3d_clear(d3d->dev, 0, NULL, D3DCLEAR_TARGET, clear_color, 0, 0); }
static void menu_display_d3d_clear_color( menu_display_ctx_clearcolor_t *clearcolor, video_frame_info_t *video_info) { DWORD clear_color = 0; d3d_video_t *d3d = video_info ? (d3d_video_t*)video_info->userdata : NULL; if (!d3d || !clearcolor) return; clear_color = D3DCOLOR_ARGB( BYTE_CLAMP(clearcolor->a * 255.0f), /* A */ BYTE_CLAMP(clearcolor->r * 255.0f), /* R */ BYTE_CLAMP(clearcolor->g * 255.0f), /* G */ BYTE_CLAMP(clearcolor->b * 255.0f) /* B */ ); d3d_clear(d3d->dev, 0, NULL, D3D_COMM_CLEAR_TARGET, clear_color, 0, 0); }
static bool cg_d3d9_renderchain_render( void *data, const void *frame_data, unsigned width, unsigned height, unsigned pitch, unsigned rotation) { Pass *last_pass; LPDIRECT3DDEVICE d3dr; LPDIRECT3DSURFACE back_buffer, target; unsigned i, current_width, current_height, out_width = 0, out_height = 0; d3d_video_t *d3d = (d3d_video_t*)data; cg_renderchain_t *chain = d3d ? (cg_renderchain_t*)d3d->renderchain_data : NULL; if (chain) d3dr = (LPDIRECT3DDEVICE)chain->dev; renderchain_start_render(chain); current_width = width; current_height = height; cg_d3d9_renderchain_convert_geometry(chain, &chain->passes[0].info, &out_width, &out_height, current_width, current_height, chain->final_viewport); renderchain_blit_to_texture(chain, frame_data, width, height, pitch); /* Grab back buffer. */ d3dr->GetRenderTarget(0, &back_buffer); /* In-between render target passes. */ for (i = 0; i < chain->passes.size() - 1; i++) { D3DVIEWPORT viewport = {0}; Pass *from_pass = (Pass*)&chain->passes[i]; Pass *to_pass = (Pass*)&chain->passes[i + 1]; to_pass->tex->GetSurfaceLevel(0, &target); d3dr->SetRenderTarget(0, target); cg_d3d9_renderchain_convert_geometry(chain, &from_pass->info, &out_width, &out_height, current_width, current_height, chain->final_viewport); /* Clear out whole FBO. */ viewport.Width = to_pass->info.tex_w; viewport.Height = to_pass->info.tex_h; viewport.MinZ = 0.0f; viewport.MaxZ = 1.0f; d3d_set_viewports(d3dr, &viewport); d3d_clear(d3dr, 0, 0, D3DCLEAR_TARGET, 0, 1, 0); viewport.Width = out_width; viewport.Height = out_height; renderchain_set_viewport(chain, &viewport); renderchain_set_vertices(chain, from_pass, current_width, current_height, out_width, out_height, out_width, out_height, 0); renderchain_render_pass(chain, from_pass, i + 1); current_width = out_width; current_height = out_height; target->Release(); } /* Final pass */ d3dr->SetRenderTarget(0, back_buffer); last_pass = (Pass*)&chain->passes.back(); cg_d3d9_renderchain_convert_geometry(chain, &last_pass->info, &out_width, &out_height, current_width, current_height, chain->final_viewport); renderchain_set_viewport(chain, chain->final_viewport); renderchain_set_vertices(chain, last_pass, current_width, current_height, out_width, out_height, chain->final_viewport->Width, chain->final_viewport->Height, rotation); renderchain_render_pass(chain, last_pass, chain->passes.size()); chain->frame_count++; back_buffer->Release(); renderchain_end_render(chain); renderchain_set_shaders(chain->fStock, chain->vStock); renderchain_set_mvp(chain, chain->vStock, chain->final_viewport->Width, chain->final_viewport->Height, 0); return true; }