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;
}
相关文章
|
6月前
|
程序员 C# 图形学
Unity3D学习笔记1——绘制一个三角形
Unity3D学习笔记1——绘制一个三角形
133 0
|
7月前
|
前端开发
Canvas添加了橡皮擦工具的画板项目和只能画圆的源码
Canvas添加了橡皮擦工具的画板项目和只能画圆的源码
|
9月前
|
前端开发 API vr&ar
Android开发之OpenGL绘制三维图形的流程
即将连载的系列文章将探索Android上的OpenGL开发,这是一种用于创建3D图形和动画的技术。OpenGL是跨平台的图形库,Android已集成其API。文章以2D绘图为例,解释了OpenGL的3个核心元素:GLSurfaceView(对应View)、GLSurfaceView.Renderer(类似Canvas)和GL10(类似Paint)。通过将这些结合,Android能实现3D图形渲染。文章介绍了Renderer接口的三个方法,分别对应2D绘图的构造、测量布局和绘制过程。示例代码展示了如何在布局中添加GLSurfaceView并注册渲染器。
248 1
Android开发之OpenGL绘制三维图形的流程
|
9月前
|
Android开发 开发者
Android开发之OpenGL的画笔工具GL10
这篇文章简述了OpenGL通过GL10进行三维图形绘制,强调颜色取值范围为0.0到1.0,背景和画笔颜色设置方法;介绍了三维坐标系及与之相关的旋转、平移和缩放操作;最后探讨了坐标矩阵变换,包括设置绘图区域、调整镜头参数和改变观测方位。示例代码展示了如何使用这些方法创建简单的三维立方体。
111 1
Android开发之OpenGL的画笔工具GL10
|
异构计算
[笔记]音视频学习之SDL篇《十》绘制矩形,线条
[笔记]音视频学习之SDL篇《十》绘制矩形,线条
164 0
|
编译器 API 图形学
【unity细节】基于unity子对象(如相机)为什么无法进行z轴的拖拽移动和z轴自动归位的问题
【unity细节】基于unity子对象(如相机)为什么无法进行z轴的拖拽移动和z轴自动归位的问题
178 0
|
数据可视化
Qt开发技术:Q3D图表开发笔记(三):Q3DSurface三维曲面图介绍、Demo以及代码详解
qt提供了q3d进行三维开发,虽然这个框架没有得到大量运用也不是那么成功,性能上也有很大的欠缺,但是普通的点到为止的应用展示还是可以的。其中就包括华丽绚烂的三维图表,数据量不大的时候是可以使用的。前面介绍了基础的q3d散点图、柱状图,本篇介绍基础的三维曲面图。Q3DSurface类提供了渲染3D曲面图的方法。该类使开发人员能够渲染3D表面图,并通过自由旋转场景来查看它们。可以通过QSurface3DSeries控制曲面的视觉财产,例如绘制模式和着色。
|
存储 Python
海龟编程 python绘图工具turtle库的用法 turtle库使用方法大全,画笔设置 画布设置 绘图设置,画笔粗细,画笔颜色, 画笔速度。
海龟编程 Python绘图工具trutle库的使用方法 trutle库命令大全,总结了常用命令,学会这些命令,玩转turtle库
1067 0
|
缓存 容器
案例 01、OpenGL入门--绘制三角形
OpenGL中三角形的绘制,就类似于学习编程时的Hello world,是一个入门级的使用,重点在于理解图形是如何绘制的
288 0
案例 01、OpenGL入门--绘制三角形
|
图形学
【Unity3D Shader】学习笔记-渐变映射①
Gradient-Map(渐变映射)常用于Color Gradient颜色分级、颜色校正等。本篇主要用于将图像中的灰度范围映射到指定的渐变填充色中,通过渐变映射图来制作不同的效果。 通过修改不同的渐变映射纹理就可以获得不同的效果,好的的效果就需要根据场景制作特定的映射纹理进行调效果,Shader代码相对简单,在片段着色器中进行效果处理,
734 0
【Unity3D Shader】学习笔记-渐变映射①