コード例 #1
0
ファイル: gr.c プロジェクト: gameplayer22/d1x
int gr_set_mode(u_int32_t mode)
{
    unsigned int w,h;
    char *gr_bm_data;

#ifdef NOGRAPH
    return 0;
#endif
//	mode=0;
    if (mode<=0)
        return 0;

    w=SM_W(mode);
    h=SM_H(mode);

    //if (screen != NULL) gr_palette_clear();

//	ogl_init_state();

    gr_bm_data=grd_curscreen->sc_canvas.cv_bitmap.bm_data;//since we use realloc, we want to keep this pointer around.
    memset( grd_curscreen, 0, sizeof(grs_screen));
    grd_curscreen->sc_mode = mode;
    grd_curscreen->sc_w = w;
    grd_curscreen->sc_h = h;
    grd_curscreen->sc_aspect = fixdiv(grd_curscreen->sc_w*3,grd_curscreen->sc_h*4);
    grd_curscreen->sc_canvas.cv_bitmap.bm_x = 0;
    grd_curscreen->sc_canvas.cv_bitmap.bm_y = 0;
    grd_curscreen->sc_canvas.cv_bitmap.bm_w = w;
    grd_curscreen->sc_canvas.cv_bitmap.bm_h = h;
    //grd_curscreen->sc_canvas.cv_bitmap.bm_rowsize = screen->pitch;
    grd_curscreen->sc_canvas.cv_bitmap.bm_rowsize = w;
    grd_curscreen->sc_canvas.cv_bitmap.bm_type = BM_OGL;
    //grd_curscreen->sc_canvas.cv_bitmap.bm_data = (unsigned char *)screen->pixels;
//	mprintf((0,"ogl/gr.c: reallocing %p to %i\n",grd_curscreen->sc_canvas.cv_bitmap.bm_data,w*h));
    grd_curscreen->sc_canvas.cv_bitmap.bm_data = realloc(gr_bm_data,w*h);
    gr_set_current_canvas(NULL);
    //gr_enable_default_palette_loading();

    ogl_init_window(w,h);//platform specific code

    ogl_get_verinfo();

    OGL_VIEWPORT(0,0,w,h);

    ogl_set_screen_mode();

    gamefont_choose_game_font(w,h);

    return 0;
}
コード例 #2
0
ファイル: gr.c プロジェクト: gameplayer22/d1x
void ogl_set_screen_mode(void) {
    if (last_screen_mode==Screen_mode)
        return;
    OGL_VIEWPORT(0,0,grd_curscreen->sc_w,grd_curscreen->sc_h);
//	OGL_VIEWPORT(grd_curcanv->cv_bitmap.bm_x,grd_curcanv->cv_bitmap.bm_y,grd_curcanv->cv_bitmap.bm_w,grd_curcanv->cv_bitmap.bm_h);
    if (Screen_mode==SCREEN_GAME) {
        glDrawBuffer(GL_BACK);
    } else {
        glClearColor(0.0, 0.0, 0.0, 0.0);
        glDrawBuffer(GL_FRONT);
        glClear(GL_COLOR_BUFFER_BIT);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();//clear matrix
        glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();//clear matrix
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    }
    last_screen_mode=Screen_mode;
}
コード例 #3
0
ファイル: gr.c プロジェクト: CDarrow/DXX-Retro
int gr_set_mode(u_int32_t mode)
{
	unsigned int w, h;
	char *gr_bm_data;

	if (mode<=0)
		return 0;

	w=SM_W(mode);
	h=SM_H(mode);

	if (!gr_check_mode(mode))
	{
		con_printf(CON_URGENT,"Cannot set %ix%i. Fallback to 640x480\n",w,h);
		w=640;
		h=480;
		Game_screen_mode=mode=SM(w,h);
	}

	gr_bm_data=(char *)grd_curscreen->sc_canvas.cv_bitmap.bm_data;//since we use realloc, we want to keep this pointer around.
	memset( grd_curscreen, 0, sizeof(grs_screen));
	grd_curscreen->sc_mode = mode;
	grd_curscreen->sc_w = w;
	grd_curscreen->sc_h = h;
	grd_curscreen->sc_aspect = fixdiv(grd_curscreen->sc_w*GameCfg.AspectX,grd_curscreen->sc_h*GameCfg.AspectY);
	gr_init_canvas(&grd_curscreen->sc_canvas, d_realloc(gr_bm_data,w*h), BM_OGL, w, h);
	gr_set_current_canvas(NULL);

	ogl_init_window(w,h);//platform specific code
	ogl_get_verinfo();
	OGL_VIEWPORT(0,0,w,h);
	ogl_init_state();
	gamefont_choose_game_font(w,h);
	gr_remap_color_fonts();
	gr_remap_mono_fonts();

	return 0;
}
コード例 #4
0
ファイル: vid.c プロジェクト: btb/d2x
int vid_set_mode(uint32_t mode)
{
	short w, h;

#ifdef NOGRAPH
return 0;
#endif
//	mode=0;
	if (mode<=0)
		return 0;

	if (mode == Vid_current_mode)
		return 0;

	w=SM_W(mode);
	h=SM_H(mode);
	Vid_current_mode = mode;

	//if (screen != NULL) gr_palette_clear();

//	ogl_init_state();

	gr_init_screen(BM_OGL, w, h, 0, 0, w, NULL);

	//gr_enable_default_palette_loading();
	
	ogl_init_window(w,h);//platform specific code

	ogl_get_verinfo();

	OGL_VIEWPORT(0,0,w,h);

	ogl_set_screen_mode();

//	gamefont_choose_game_font(w,h);
	
	return 0;
}