SDL基础使用01( 项目创建,绘制矩形)

简介: 在Visual Studio中创建SDL项目、集成SDL库、绘制矩形的步骤和代码示例。

SDL在VS编译环境下的使用

  • 创建一个VS项目
  • 将下载的sdl库include和lib文件夹放到项目工程下
  • 添加附加包含目录路径

  • 添加依赖路径

1. 项目创建

#include <iostream>
/* SDL项目基本使用 */

// 1. 在cpp文件中调用C函数包含头文件时需要用extern "C"包一下
extern "C"
{
#include <SDL.h>
}
// 2. 包含静态库文件(或者直接在项目属性中添加 链接器 -> 输入 -> 附加依赖项)
#pragma comment(lib, "x86/SDL2.lib")

// 3. 将SDL中的main函数解除定义,从而识别自己写的main函数
#undef main
// 4. 将dll文件放到可执行程序同级目录下
int main()
{
    int nRet = SDL_Init(SDL_INIT_VIDEO);    // 初始化SDL
    if (nRet == -1) return -1;                // 初始化失败

    SDL_Delay(1000);                        // 延时一秒

    SDL_Quit();                                // 退出

    return 0;
}

2. 绘制矩形

#include <iostream>
/* 绘制矩形 */
extern "C"
{
    #include <SDL.h>
}

#pragma comment(lib, "SDL2.lib")

#undef main
int main()
{
    // 1. 初始化
    int nRet = SDL_Init(SDL_INIT_EVERYTHING);        
    if (nRet < 0)
    {
        std::cout << "SDL Error: " << SDL_GetError() << std::endl;
        return -1;
    }

    // 2. 创建窗口
    SDL_Window* pWnd = SDL_CreateWindow("title",    
                                        SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,    // 默认屏幕中间位置
                                        640, 480,                                            // 宽高
                                        SDL_WINDOW_SHOWN);                                    // 窗口显示方式
    if (NULL == pWnd)
    {
        std::cout << "SDL Error: " << SDL_GetError() << std::endl;
        return -1;
    }

    // 3. 获取窗口的表面(画布)
    SDL_Surface* pSurface = SDL_GetWindowSurface(pWnd);    
    if (NULL == pSurface)
    {
        std::cout << "SDL Error: " << SDL_GetError() << std::endl;
        return -1;
    }

    // 4. 绘图
    SDL_Rect rect = { 100, 100, 50, 50 };
    SDL_FillRect(pSurface, &rect, SDL_MapRGB(pSurface->format, 255, 0, 0));

    // 5. 更新画布
    SDL_UpdateWindowSurface(pWnd);

    SDL_Delay(3000);        // 延时

    // 6. 释放窗口资源,退出
    if (pWnd)                        
    {
        SDL_DestroyWindow(pWnd);    
    }
    SDL_Quit();                        

    return 0;
}
相关文章
|
API 调度 语音技术
基于Qt的简易语音助手设计与实现
基于Qt的简易语音助手设计与实现
800 2
|
虚拟化 Windows
Windows 10 version 22H2 中文版、英文版下载 (2025 年 6 月更新)
Windows 10 version 22H2 中文版、英文版下载 (2025 年 6 月更新)
1538 0
|
文字识别 测试技术 数据安全/隐私保护
案例:批量区域识别内容重命名,批量识别扫描PDF区域内容识别重命名,批量识别图片区域内容重命名图片修改图片名字,批量识别图片区域文字并重命名,批量图片部分识别内容重命文件,PDF区域内容提取重命名
该内容介绍了如何使用区域识别重命名软件高效整理图片,例如将图片按时间及内容重命名,适用于简历、单据等识别。文中提供了软件下载链接(百度云盘和腾讯网盘),并列出软件使用的几个关键条件,包括文字清晰、文件名长度限制等。示例展示了银行单据和公司工作单据的识别情况。文章还提及OCR技术在图片文字识别中的应用,强调了识别率、误识率和用户友好性等评估指标。如有类似需求,读者可留言或下载软件测试,并提供图片以获取定制的识别方案。
765 2
|
Ubuntu Linux 开发工具
windows11安装WLS2+Ubuntu
windows11安装WLS2+Ubuntu
在Linux中,如何挂载一个ISO文件?
在Linux中,如何挂载一个ISO文件?
|
人工智能 自然语言处理 数据可视化
体验评测报告:阿里云百炼平台——大模型应用构建的全方位工具箱
体验评测报告:阿里云百炼平台——大模型应用构建的全方位工具箱
1134 2
|
机器学习/深度学习 开发工具 git
Jupyter 与版本控制系统的集成
【8月更文第29天】在数据科学和机器学习项目中,Jupyter Notebook 提供了一个强大的环境来编写代码、执行实验和记录结果。然而,随着项目的复杂度增加以及团队规模的扩大,版本控制变得至关重要。Git 是最常用的版本控制系统之一,它可以帮助团队协作、追踪变更历史、管理分支等。本文将探讨如何将 Git 与 Jupyter Notebook 集成起来,从而更好地管理代码和文档。
473 0
|
数据采集 搜索推荐 机器人
Python 神器:wxauto 库
Python 神器:wxauto 库
2782 1
|
人工智能 JSON 机器人
【Chat GPT】用 ChatGPT 运行 Python
【Chat GPT】用 ChatGPT 运行 Python
421 1
|
存储 弹性计算 大数据
阿里云16核32G服务器价格多少?2024年阿里云16核32G云服务器配置价格及测评参考
阿里云16核32G服务器价格多少?给你提供阿里云16核32G云服务器的详细测评。关于2024年阿里云16核32G云服务器的价格:阿里云16核32G云服务器的价格因不同的实例类型和配置选项而有所不同。一般来说,这种高配置的服务器适用于需要处理大规模数据或运行高负载业务的企业级用户。
2000 1