看了很久雷神的FFmpeg ,发现需要SDL的技术也比较多 。就总结了一下。
在复杂的SDL内容也是这几个构成的。
2.0比1.0内容变化的还比较大 主要参考了这几篇文章
SDL1.2到2.0的迁移指南_蓝黑墨水的博客-CSDN博客
// SDL.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
extern "C"
{
#include "SDL.h"
#include "SDL_main.h"
};
int main()
{
SDL_Surface* pHello = nullptr;
SDL_Window * pScreen = nullptr;
SDL_Renderer* pRenderer = nullptr;
SDL_Texture* pTexture = nullptr;
bool bQuit = false;
SDL_Init(SDL_INIT_EVERYTHING);
pScreen = SDL_CreateWindow("SDL_Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);
// 全屏
//pScreen = SDL_CreateWindow("SDL_Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 0, 0, SDL_WINDOW_FULLSCREEN_DESKTOP);
if (pScreen == nullptr)
{
goto Exit;
}
pHello = SDL_LoadBMP("hello.bmp");
if (pHello == nullptr)
{
goto Exit;
}
pRenderer = SDL_CreateRenderer(pScreen, -1, 0);
pTexture = SDL_CreateTextureFromSurface(pRenderer, pHello);
// 清空渲染器
SDL_RenderClear(pRenderer);
// 将材质放入渲染器
SDL_RenderCopy(pRenderer, pTexture, nullptr, nullptr);
SDL_RenderPresent(pRenderer);
SDL_Event event;
while (!bQuit)
{
SDL_WaitEvent(&event);
switch (event.type)
{
case SDL_QUIT:
bQuit = true;
default:
break;
}
}
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_INFORMATION, u8"提示", u8"即将退出", pScreen);
Exit:
if (pTexture)
{
SDL_DestroyTexture(pTexture);
}
if (pHello)
{
SDL_FreeSurface(pHello);
}
if (pRenderer)
{
SDL_DestroyRenderer(pRenderer);
}
if (pScreen)
{
SDL_DestroyWindow(pScreen);
}
SDL_Quit();
return 0;
}