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;
}
AI 代码解读

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;
}
AI 代码解读
目录
打赏
0
2
2
1
25
分享
相关文章
【Android 应用开发】Android 组件 位置坐标 属性 ( 组件位置属性 | 父容器坐标系坐标 | 窗口坐标系坐标 | 屏幕坐标系坐标 | 触摸坐标 )
【Android 应用开发】Android 组件 位置坐标 属性 ( 组件位置属性 | 父容器坐标系坐标 | 窗口坐标系坐标 | 屏幕坐标系坐标 | 触摸坐标 )
362 0
Pixi绘制带箭头的线
这篇文章讲解了如何使用Pixi.js来绘制带有箭头的线条,并提供了绘制箭头的具体实现方法和技术细节。
84 4
Pixi绘制带箭头的线
Pixi绘制各种图形
这篇文章作为Pixi.js入门教程的一部分,详细介绍了如何使用Pixi.js绘制各种基本图形,如矩形、圆角矩形、圆形和椭圆,并提供了具体的实现代码。
92 0
Pixi绘制各种图形
|
6月前
|
ThreeJs绘制仓库场景
这篇文章详细介绍了如何使用Three.js来创建和渲染一个仓库场景,包括构建货架和其他3D元素的具体实现方法。
169 0
Canvas添加了橡皮擦工具的画板项目和只能画圆的源码
Canvas添加了橡皮擦工具的画板项目和只能画圆的源码
|
11月前
|
Android开发之OpenGL绘制三维图形的流程
即将连载的系列文章将探索Android上的OpenGL开发,这是一种用于创建3D图形和动画的技术。OpenGL是跨平台的图形库,Android已集成其API。文章以2D绘图为例,解释了OpenGL的3个核心元素:GLSurfaceView(对应View)、GLSurfaceView.Renderer(类似Canvas)和GL10(类似Paint)。通过将这些结合,Android能实现3D图形渲染。文章介绍了Renderer接口的三个方法,分别对应2D绘图的构造、测量布局和绘制过程。示例代码展示了如何在布局中添加GLSurfaceView并注册渲染器。
266 1
Android开发之OpenGL绘制三维图形的流程
QT使用QML实现地图绘制虚线
QML提供了MapPolyline用于在地图上绘制线段,该线段是实线,因此我使用Canvas自定义绘制的方式在地图上绘制线段
247 0
【unity细节】基于unity子对象(如相机)为什么无法进行z轴的拖拽移动和z轴自动归位的问题
【unity细节】基于unity子对象(如相机)为什么无法进行z轴的拖拽移动和z轴自动归位的问题
192 0
Delphi绘图功能[1] —— 入门(绘制直线和矩形)
Delphi绘图功能[1] —— 入门(绘制直线和矩形)
546 0
Delphi绘图功能[1] —— 入门(绘制直线和矩形)
案例分享:Qt+OSG三维点云引擎(支持原点,缩放,单独轴或者组合多轴拽拖旋转,支持导入点云文件)
案例分享:Qt+OSG三维点云引擎(支持原点,缩放,单独轴或者组合多轴拽拖旋转,支持导入点云文件)