【问题标题】:How do I render with OpenGL but still use SDL for events?如何使用 OpenGL 进行渲染,但仍使用 SDL 处理事件?
【发布时间】:2011-10-19 14:58:55
【问题描述】:

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

【问题讨论】:

    标签: c opengl sdl


    【解决方案1】:

    您可以先阅读: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;
            } 
        }
    }
    

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2021-11-11
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多