如何使用 OpenGL 渲染但仍使用 SDL 处理事件?

发布于 2024-11-27 13:51:04 字数 127 浏览 0 评论 0原文

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

I want to make sure I am using OpenGL for 2d rendering, but SDL for events. From what I have heard SDL uses software rendering, and OpenGL is hardware accelerated. I am in the middle of reading one book on SDL, but it has not yet mentioned the use of OpenGL to render and SDL for events.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不醒的梦 2024-12-04 13:51:04

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

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

You can start by reading: http://www.gpwiki.org/index.php/SDL:Tutorials:Using_SDL_with_OpenGL

You will use SDL to create an OpenGL context within which you will do all of your OpenGL based rendering.

By events do you mean user input? If so, then simply at the end of each frame/loop make use of SDL to check for input like so:

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;
        } 
    }
}

Obviously there are much more elegant and effective means of getting input but just wanted to show a simple example.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文