如何使用OpenGL渲染但仍然使用SDL进行事件?

时间:2011-08-04 02:51:22

标签: c opengl sdl

我想确保我使用OpenGL进行2D渲染,但使用SDL进行事件处理。据我所知,SDL使用软件渲染,OpenGL是硬件加速的。我正在阅读一本关于SDL的书,但它还没有提到使用OpenGL来渲染事件和SDL。

1 个答案:

答案 0 :(得分:5)

您可以先阅读:http://www.gpwiki.org/index.php/SDL:Tutorials:Using_SDL_with_OpenGL

您将使用SDL创建一个OpenGL上下文,您可以在其中执行所有基于OpenGL的渲染。

通过事件你的意思是用户输入?如果是这样,那么只需在每个帧/循环结束时使用SDL来检查输入,如下所示:

int main( )
{
    ...

    while( running )
    {
        ...

        update( );
        draw( );

        ...

        handleKeys( );
    }

    return 0;
}

void handleKeys( )
{
    SDL_Event event;

    while( SDL_PollEvent( &event ) )
    {
        switch( event.type )
        {
        case SDL_KEYDOWN:
            //Check for event and act accordingly
            break;

        case SDL_KEYUP:
            //Check for event and act accordingly
            break;

        case SDL_MOUSEBUTTONDOWN:
            //Check for event and act accordingly
            break;

        default:
            break;
        } 
    }
}

显然,有更多优雅和有效的方式来获取输入,但只是想展示一个简单的例子。