小编Rok*_*jar的帖子

如何使用SDL_CreateTexture

我想知道ho使用SDL_CreateTexture函数.
我只是想创建纹理,给它一个颜色并在屏幕上的某个地方绘制它.我不想加载任何图片.
我以为我可以SDL_CreateTexture, SDL_SetTextureColorMod, SDL_RenderCopy, SDL_RenderPresent按顺序使用,但我总是得到一个黑色矩形而不是红色矩形.

#include <SDL.h>

int main(int argc, char* argv[]) {

    SDL_Init(SDL_INIT_EVERYTHING);

    SDL_Window *MainWindow = SDL_CreateWindow("My Game Window",
                                  SDL_WINDOWPOS_CENTERED,
                                  SDL_WINDOWPOS_CENTERED,
                                  1024, 768,
                                  SDL_WINDOW_SHOWN
                                  );

    SDL_Renderer *renderer = SDL_CreateRenderer(MainWindow, -1, 0);

    SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);

    SDL_RenderClear(renderer);


    SDL_Texture *Tile = SDL_CreateTexture(renderer,SDL_PIXELFORMAT_RGBA8888,SDL_TEXTUREACCESS_TARGET,8,8);

    //I want my texture to be red
    SDL_SetTextureColorMod(Tile,255,0,0);

    //I just try this i dont know if I have to do that
    SDL_SetTextureAlphaMod(Tile,255);

    SDL_Rect destination = {320,240,8,8};
    SDL_RenderCopy(renderer,Tile,NULL,&destination);
    SDL_RenderPresent(renderer);
    SDL_Delay(3000);

    //Clean up …
Run Code Online (Sandbox Code Playgroud)

c++ sdl-2

4
推荐指数
1
解决办法
3616
查看次数

SDL2 中的渲染器究竟是什么?

我不完全理解渲染器是什么。我可以有多个渲染器还是总是只有一个?

例如,如何使用渲染器在不同颜色的背景上绘制具有特定颜色的矩形?

我相信答案在于函数SDL_RenderDrawRect()SDL_RenderFillRect(). 我对吗?

我知道表面和 bliting 是如何工作的,但我不知道渲染器究竟象征着什么。

如果有人可以告诉我如何绘制矩形,我想我会理解渲染器的工作原理。

到目前为止,我有这个:

#include <SDL.h>

int main(int argc, char* argv[]) {

    //Initialization
    SDL_Init(SDL_INIT_EVERYTHING);

    //Window
    SDL_Window *MainWindow = SDL_CreateWindow("My Game Window",
                                  SDL_WINDOWPOS_CENTERED,
                                  SDL_WINDOWPOS_CENTERED,
                                  640, 480,
                                  SDL_WINDOW_SHOWN
                                  );

    //Renderer
    SDL_Renderer *Background = SDL_CreateRenderer(MainWindow, -1, 0);

    SDL_SetRenderDrawColor(Background, 255, 255, 255, 255);

    SDL_RenderClear(Background);

    SDL_Delay(3000);

    //Clean up
    SDL_DestroyWindow(MainWindow);
    SDL_Quit();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ sdl-2

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×2

sdl-2 ×2