本文整理汇总了C++中CSurface::draw方法的典型用法代码示例。如果您正苦于以下问题:C++ CSurface::draw方法的具体用法?C++ CSurface::draw怎么用?C++ CSurface::draw使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CSurface
的用法示例。
在下文中一共展示了CSurface::draw方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
void * Creeping::
redraw_window(void * _this)
{
DEBUG_PRINT_LINE;
Creeping * self = (Creeping *) _this;
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
pthread_cleanup_push(&Creeping::exit_redraw_window, _this);
int current_pos = 0;
int window_x, window_y, window_width, window_height;
self->mutex.lock();
CTimer timer;
timer.set_interval(1000000/self->conf.get_conf()->ScrollingSpeed);
self->wnd->open(&self->conf);
self->wnd->get_current_rect(&window_x, &window_y, &window_width, &window_height);
self->init();
self->wnd->draw();
timer.start();
self->mutex.unlock();
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
for(;;)
{
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
self->mutex.lock();
self->wnd->clear();
CSurface * logo = self->wnd->get_logo();
std::vector<CSurface*> * surfaces = self->wnd->get_surfaces();
std::vector<CSurface*>::iterator i = surfaces->begin();
current_pos = timer.get_val();
int length = window_width - current_pos;
if(!surfaces->empty() && (current_pos - (*i)->get_width()) > window_width)
{
timer.offset( (*i)->get_width());
length += (*i)->get_width();
delete (*i);
surfaces = self->wnd->get_surfaces();
}
for (i = surfaces->begin(); i != surfaces->end(); i++)
{
(*i)->draw(length);
length += (*i)->get_width() ;
if(length > window_width)
break;
}
if(logo != NULL)
logo->draw(0);
self->wnd->draw();
self->mutex.unlock();
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
pthread_testcancel();
if(surfaces->empty() && self->is_once)
pthread_exit(NULL);
if(surfaces->empty() && self->is_once == false)
{
self->init();
timer.set_val(0);
}
}
pthread_cleanup_pop(0);
DEBUG_PRINT_LINE;
}
示例2: main
int main(int argc, char *argv[])
{
init(); //init SDL
g_CWindow.SSurface = SDL_SetVideoMode( WIDTH , HEIGHT , 32 , SDL_DOUBLEBUF|SDL_HWSURFACE|SDL_ANYFORMAT); //assign surface
g_pCMenu = MD2Model::load("menu.md2");
g_SPlayer.pCModel = MD2Model::load("player.md2");
g_SPlayer.pCLaser = MD2Model::load("laser.md2");
g_pCLoop = MD2Model::load("loop.md2");
Uint32 u32Start;
while (g_bRunning)
{
u32Start = SDL_GetTicks(); //Get the tick this cycle started on
if(g_dAngle>360)
g_dAngle = 0;
if(g_dAngle < 0 )
g_dAngle = 360;
control(); //get user input
if(!g_bStart)
draw_menu(); //Draw 'Seizure Ships!
else
if(!lost)
game(); //Update game status
else
lose();
if(!lost) {
if(g_bThreadVisualization) { //Shows triangles drawn by each thread
g_CWindow.draw_text("Work thread 1",0,24*2,RED);
g_CWindow.draw_text("Work thread 2",0,24*3,GREEN);
g_CWindow.draw_text("Work thread 3",0,24*4,BLUE);
g_CWindow.draw_text("Work thread 4",0,24*5,CYAN);
g_CWindow.draw_text("Work thread 5",0,24*6,PURPLE);
g_CWindow.draw_text("Work thread 6",0,24*7,YELLOW);
g_CWindow.draw_text("Press 'v' to disable Thread Visualization mode",0,24*19,WHITE);
}
else {
g_CWindow.draw_text("Press 'v' to enable Thread Visualization mode",0,24*19,WHITE);
}
g_CWindow.draw_text("Press 'p' to pause",0,24*17,WHITE);
g_CWindow.draw_text("Controls: ARROWS to move and ENTER to fire",0,24*18,WHITE);
backdrop(); //Draw our g_pCLoop backdrop
}
if((g_bRestart)&&(lost)) { //you suck at this game
thread a(system,"start.exe");
SDL_Delay(100); //Give system enough time to execute new instance
exit(0);
}
else
g_bRestart = false;
g_CWindow.draw(); //Update screen
if(1000/60>(SDL_GetTicks()-u32Start)) //Always keep constant framerate (60fps)
SDL_Delay(1000/60-(SDL_GetTicks()-u32Start));
}
return 0;
}