首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是SDL渲染器?

什么是SDL渲染器?
EN

Stack Overflow用户
提问于 2014-01-09 05:51:27
回答 1查看 57.4K关注 0票数 116

我从SDL2开始,在尝试理解SDL_Renderer是什么时遇到了一些麻烦。

那是什么?是干什么的呢?SDL_Renderer、SDL_Window、SDL_Surface和SDL_Texture之间有什么区别以及它们是如何联系在一起的?

在尝试理解这段介绍性代码时,我遇到了一些问题:

代码语言:javascript
复制
#include <iostream>
#include <SDL2/SDL.h>

int main()
{
    /* Starting SDL */
    if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
        std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl;
        return 1;
    }

    /* Create a Window */
    SDL_Window *window = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN);
    if (window == nullptr) {
        std::cout << "SDL_CreateWindow Error: " << SDL_GetError() << std::endl;
        return 1;
    }

    /* Create a Render */
    SDL_Renderer *render = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
    if (render == nullptr) {
        std::cout << "SDL_CreateRenderer Error: " << SDL_GetError() << std::endl;
        return 1;
    }

    /* Load bitmap image */
    SDL_Surface *bmp = SDL_LoadBMP("./Tutorial/res/Lesson1/hello.bmp");
    if (bmp == nullptr) {
        std::cout << "SDL_LoadBMP Error: " << SDL_GetError() << std::endl;
        return 1;
    }

    /* Upload surface to render, and then, free the surface */
    SDL_Texture *texture = SDL_CreateTextureFromSurface(render, bmp);
    SDL_FreeSurface(bmp);
    if (texture == nullptr){
        std::cout << "SDL_CreateTextureFromSurface Error: " << SDL_GetError() << std::endl;
        return 1;
    }

    /* Draw the render on window */
    SDL_RenderClear(render); // Fill render with color
    SDL_RenderCopy(render, texture, NULL, NULL); // Copy the texture into render
    SDL_RenderPresent(render); // Show render on window

    /* Wait 2 seconds */
    SDL_Delay(5000);

    /* Free all objects*/
    SDL_DestroyTexture(texture);
    SDL_DestroyRenderer(render);
    SDL_DestroyWindow(window);

    /* Quit program */
    SDL_Quit();
    return 0;
}

我使用的是Twinklebear教程(建议在SDL Wiki上使用),还查看了SDL Wiki文档和一些书籍。但他们都假设我知道这些定义。

EN

回答 1

Stack Overflow用户

发布于 2014-01-09 05:55:48

SDL_Window看作是物理像素,把SDL_Renderer看作是存储设置/上下文的地方。

因此,您创建了一堆资源,并将它们挂在渲染器上;然后在准备就绪时,告诉渲染器将它们放在一起,并将结果发送到窗口。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21007329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档