创建项目并设置




项目目录结构如下





代码如下
#include <iostream>
#include <sdl/SDL.h>
using namespace std;
#undef main
#pragma comment(lib, "SDL2.lib")
int main(int argc, char*argv[])
{
int w = 800;
int h = 600;
if(SDL_Init(SDL_INIT_VIDEO))
{
cout << SDL_GetError() << endl;
return -1;
}
auto screen = SDL_CreateWindow("test sdl",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
w, h,
SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE
);
if (!screen)
{
cout << SDL_GetError() << endl;
return -2;
}
auto render = SDL_CreateRenderer(screen, -1, SDL_RENDERER_ACCELERATED);
if (!render)
{
cout << SDL_GetError() << endl;
return -3;
}
auto texture = SDL_CreateTexture(render, SDL_PIXELFORMAT_ABGR8888,
SDL_TEXTUREACCESS_STREAMING,
w, h
);
if (!texture)
{
cout << SDL_GetError() << endl;
return -4;
}
shared_ptr<unsigned char> rgb(new unsigned char[w * h * 4]);
auto r = rgb.get();
for (int j = 0; j < h; j++)
{
int b = j * w * 4;
for (int i = 0; i < w * 4; i+=4)
{
r[b + i] = 255;
r[b + i + 1] = 0;
r[b + i + 2] = 0;
r[b + i + 3] = 0;
}
}
SDL_UpdateTexture(texture, NULL, r, w * 4);
SDL_RenderClear(render);
SDL_Rect sdl_rect;
sdl_rect.x = 0;
sdl_rect.y = 0;
sdl_rect.w = w;
sdl_rect.h = h;
SDL_RenderCopy(render, texture,
NULL,
&sdl_rect
);
SDL_RenderPresent(render);
getchar();
return 0;
}
测试
