Sag*_*Kar 2 c++ rendering sdl sdl-2
在阅读lazyfoo.net上有关SDL2的教程时,我的问题突然出现了,并且代码正在从此页面复制
int main( int argc, char* args[] )
{
//Start up SDL and create window
if( !init() )
{
printf( "Failed to initialize!\n" );
}
else
{
//Load media
if( !loadMedia() )
{
printf( "Failed to load media!\n" );
}
else
{
//Main loop flag
bool quit = false;
//Event handler
SDL_Event e;
//While application is running
while( !quit )
{
//Handle events on queue
while( SDL_PollEvent( &e ) != 0 )
{
//User requests quit
if( e.type == SDL_QUIT )
{
quit = true;
}
}
//Clear screen
SDL_RenderClear( gRenderer );
//Render texture to screen
SDL_RenderCopy( gRenderer, gTexture, NULL, NULL );
//Update screen
SDL_RenderPresent( gRenderer );
}
}
}
//Free resources and close SDL
close();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在这里,为什么我们要在主循环中渲染效果并使其一次又一次地运行而不是像这样:
int main( int argc, char* args[] )
{
//Start up SDL and create window
if( !init() )
{
printf( "Failed to initialize!\n" );
}
else
{
//Load media
if( !loadMedia() )
{
printf( "Failed to load media!\n" );
}
else
{
//Main loop flag
bool quit = false;
//Event handler
SDL_Event e;
//Clear screen
SDL_RenderClear( gRenderer );
//Render texture to screen
SDL_RenderCopy( gRenderer, gTexture, NULL, NULL );
//Update screen
SDL_RenderPresent( gRenderer );
//While application is running
while( !quit )
{
//Handle events on queue
while( SDL_PollEvent( &e ) != 0 )
{
//User requests quit
if( e.type == SDL_QUIT )
{
quit = true;
}
}
}
}
}
//Free resources and close SDL
close();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想这是有原因的,因为在许多教程中都这样做。但是我无法找到原因。
您一次又一次渲染屏幕,因为通常在屏幕上表示的事物在变化。要表示这些更改,您需要更新显示。例如,如果一个球在屏幕上移动,而您只渲染一次屏幕,则该球似乎不会移动。但是,如果继续“反复运行”,则可以看到球在屏幕上移动。
| 归档时间: |
|
| 查看次数: |
13754 次 |
| 最近记录: |