Make Screenshots over backbuffer; Implmented filtered mouse delta reading

This commit is contained in:
zicodxx 2008-05-21 13:58:27 +00:00
parent 9af74225ed
commit d6e16c54d4
4 changed files with 28 additions and 12 deletions

View file

@ -1,5 +1,9 @@
D1X-Rebirth Changelog
20080521
--------
arch/ogl/gr.c, arch/sdl/mouse.c, main/game.h: Make Screenshots over backbuffer; Implmented filtered mouse delta reading
20080520
--------
main/kconfig.c: Decreasing divisor for mouse axis reading - making mouse sensitivity practically much higher

View file

@ -45,6 +45,7 @@
#include "config.h"
#include "playsave.h"
#include "vers_id.h"
#include "gr.h"
int gr_installed = 0;
int gl_initialized=0;
@ -585,8 +586,7 @@ void save_screen_shot(int automap_flag)
char savename[13+sizeof(SCRNS_DIR)];
unsigned char *buf;
if (!GameArg.DbgGlReadPixelsOk)
{
if (!GameArg.DbgGlReadPixelsOk){
if (!automap_flag)
hud_message(MSGC_GAME_FEEDBACK,"glReadPixels not supported on your configuration");
return;
@ -602,7 +602,7 @@ void save_screen_shot(int automap_flag)
sprintf(savename, "%sscrn%04d.tga",SCRNS_DIR, savenum++);
} while (PHYSFS_exists(savename));
sprintf( message, "%s '%s'", TXT_DUMPING_SCREEN, savename );
sprintf( message, "%s 'scrn%04d.tga'", TXT_DUMPING_SCREEN, savenum-1 );
if (!automap_flag)
hud_message(MSGC_GAME_FEEDBACK,message);
@ -613,12 +613,13 @@ void save_screen_shot(int automap_flag)
render_frame(0);
gr_set_curfont(MEDIUM2_FONT);
gr_printf(SWIDTH-FSPACX(92),SHEIGHT-LINE_SPACING,"DXX-Rebirth\n");
glReadBuffer(GL_BACK);
}
else
{
glReadBuffer(GL_FRONT);
game_do_render_frame(0);
}
ogl_do_palfx();
glReadBuffer(GL_BACK);
buf = d_malloc(grd_curscreen->sc_w*grd_curscreen->sc_h*3);
write_bmp(savename,grd_curscreen->sc_w,grd_curscreen->sc_h,buf);
d_free(buf);

View file

@ -120,19 +120,29 @@ void mouse_get_pos( int *x, int *y, int *z )
void mouse_get_delta( int *dx, int *dy, int *dz )
{
static int old_delta_x = 0, old_delta_y = 0, old_delta_z = 0;
Mouse.delta_time += FrameTime;
event_poll();
*dx = Mouse.delta_x;
*dy = Mouse.delta_y;
*dz = Mouse.delta_z;
// reset all ~33ms
if (Mouse.delta_time >= F1_0/30)
{
Mouse.delta_x = 0;
Mouse.delta_y = 0;
SDL_GetRelativeMouseState( Mouse.delta_x, Mouse.delta_y );
*dz = old_delta_dz = Mouse.delta_z;
Mouse.delta_z = 0;
Mouse.delta_time = 0;
}
else
{
*dx = old_delta_dx;
*dy = old_delta_dy;
*dz = old_delta_dz;
}
// filter delta
*dx = (Mouse.delta_x + old_delta_dx) * 0.5;
*dy = (Mouse.delta_y + old_delta_dy) * 0.5;
old_delta_dx = Mouse.delta_x;
old_delta_dy = Mouse.delta_y;
}
int mouse_get_btns()

View file

@ -218,6 +218,7 @@ extern grs_canvas VR_screen_sub_pages[2]; // Two sub pages of VRAM if paging is
extern grs_canvas *VR_offscreen_menu; // The offscreen data buffer for menus
void game_init_render_buffers (int render_max_w, int render_max_h, int render_method);
void game_do_render_frame(int flip);
extern int Allow_primary_cycle;
extern int Allow_secondary_cycle;