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;
}
相关文章
|
传感器 芯片
STM32--PWR电源控制
STM32--PWR电源控制
362 0
STM32--PWR电源控制
|
API 调度 语音技术
基于Qt的简易语音助手设计与实现
基于Qt的简易语音助手设计与实现
723 2
|
11月前
SDL基础使用04(SDL_image与SDL_mixer扩展库)
本文介绍了如何使用SDL_image和SDL_mixer扩展库在SDL项目中加载和显示图片以及播放音频文件。
510 1
|
虚拟化 Windows
Windows 10 version 22H2 中文版、英文版下载 (2025 年 6 月更新)
Windows 10 version 22H2 中文版、英文版下载 (2025 年 6 月更新)
1035 0
|
11月前
|
存储 安全 数据库
Flask-Login 扩展中,如何安全地存储用户密码?
【10月更文挑战第4天】Flask-Login 扩展中,如何安全地存储用户密码?
|
8月前
|
XML JSON 前端开发
HTTP协议,Content-Type格式介绍篇
通过理解和正确使用Content-Type头字段,可以确保数据在网络上传输时的正确性和高效性,提升网络应用的可靠性和用户体验。
740 25
|
文字识别 测试技术 数据安全/隐私保护
案例:批量区域识别内容重命名,批量识别扫描PDF区域内容识别重命名,批量识别图片区域内容重命名图片修改图片名字,批量识别图片区域文字并重命名,批量图片部分识别内容重命文件,PDF区域内容提取重命名
该内容介绍了如何使用区域识别重命名软件高效整理图片,例如将图片按时间及内容重命名,适用于简历、单据等识别。文中提供了软件下载链接(百度云盘和腾讯网盘),并列出软件使用的几个关键条件,包括文字清晰、文件名长度限制等。示例展示了银行单据和公司工作单据的识别情况。文章还提及OCR技术在图片文字识别中的应用,强调了识别率、误识率和用户友好性等评估指标。如有类似需求,读者可留言或下载软件测试,并提供图片以获取定制的识别方案。
676 2
|
11月前
|
SQL 监控 Oracle
Oracle SQL性能优化全面指南
在数据库管理领域,Oracle SQL性能优化是确保数据库高效运行和数据查询速度的关键
1435 6
|
人工智能 自然语言处理 数据可视化
体验评测报告:阿里云百炼平台——大模型应用构建的全方位工具箱
体验评测报告:阿里云百炼平台——大模型应用构建的全方位工具箱
975 2
|
数据采集 搜索推荐 机器人
Python 神器:wxauto 库
Python 神器:wxauto 库
2337 1

热门文章

最新文章