当前位置: 首页 > news >正文

SDL窗口创建以及简单显示(1)

 项目创建步骤

 1. 使用Qt Creator创建一个C项目

 2. 将SDL库文件放到源文件目录下

 在项目pro文件中添加库文件

win32{INCLUDEPATH += $$PWD/SDL2-2.0.10/includeLIBS += $$PWD/SDL2-2.0.10/lib/x86/SDL2.lib
}

 使用SDL创建一个窗口

#include <stdio.h>#include <SDL.h>#undef main    // 先取消main函数(因为SDL内部使用了main函数)
int main()
{// 创建一个SDL_VIDEO窗口SDL_Window* window = NULL;SDL_Init(SDL_INIT_VIDEO);window = SDL_CreateWindow("Title",SDL_WINDOWPOS_UNDEFINED,       // 默认x y 显示到窗口中间SDL_WINDOWPOS_UNDEFINED,640,480,SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);// 设置窗口属性if(!window){printf("Can't create window, err:%s\n", SDL_GetError());return 666;}SDL_Delay(5000);                // 延迟5000msSDL_DestroyWindow(window);      // 销毁窗口SDL_Quit();                     // 释放资源return 0;
}

运行效果

 

SDL简单显示案例

#include <stdio.h>
#include <SDL.h>#undef main
int main()
{SDL_Window* window = NULL;          // 窗口SDL_Renderer* renderer = NULL;      // 渲染器SDL_Texture* texture = NULL;        // 纹理SDL_Init(SDL_INIT_VIDEO);// 创建窗口window = SDL_CreateWindow("Window Title",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,640,480,SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);if(NULL == window){printf("Create Window error: %s\n", SDL_GetError());return -1;}// 创建渲染器(一个窗口可有多个渲染器)renderer = SDL_CreateRenderer(window, -1, 0);if(NULL == renderer){printf("Create Renderer error: %s\n", SDL_GetError());// 销毁窗口,释放资源SDL_DestroyWindow(window);SDL_Quit();return -1;}// 基于渲染器创建纹理texture = SDL_CreateTexture(renderer,SDL_PIXELFORMAT_RGBA8888,SDL_TEXTUREACCESS_TARGET,640,480);if(NULL == texture){printf("Create Texture error: %s\n", SDL_GetError());// 销毁渲染器 窗口 释放资源SDL_DestroyRenderer(renderer);SDL_DestroyWindow(window);SDL_Quit();return -1;}int showCnt = 0;    // 显示次数int run = 1;        // 循环退出条件SDL_Rect rect;      // 定义一个SDL矩形rect.w = 50;rect.h = 50;while(run){// 随机rect的位置rect.x = rand() % 600;rect.y = rand() % 400;// 设置渲染目标为纹理SDL_SetRenderTarget(renderer, texture);// 设置渲染绘制颜色SDL_SetRenderDrawColor(renderer, 255, 0, 255, 255);// 刷新渲染SDL_RenderClear(renderer);// 设置渲染绘制颜色SDL_SetRenderDrawColor(renderer, 0, 255, 0, 255);// 绘制矩形SDL_RenderDrawRect(renderer, &rect);// 绘制填充矩形SDL_RenderFillRect(renderer, &rect);// 恢复渲染目标为窗口SDL_SetRenderTarget(renderer, NULL);SDL_RenderCopy(renderer, texture, NULL, NULL);// 显示纹理SDL_RenderPresent(renderer);SDL_Delay(300);if(showCnt++ >= 30)run = 0;}// 销毁 纹理 渲染器 窗口,释放资源SDL_DestroyTexture(texture);SDL_DestroyRenderer(renderer);SDL_DestroyWindow(window);SDL_Quit();return 0;
}

http://www.lryc.cn/news/207661.html

相关文章:

  • 【Html】交通灯问题
  • 用IntelliJ远程打断点调试
  • Spring-Bean的生命周期概述
  • SENet 学习
  • 目前和未来的缓存构建
  • aws亚马逊云免费账号代充值!!!什么是 AWS Lambda?
  • 《从零开始大模型开发与微调 :基于PyTorch与ChatGLM》简介
  • 【LeetCode】102. 二叉树的层序遍历
  • golang连接池检查连接失败时如何重试
  • 从JavaScript到Rust的三年时间小结
  • 【Python机器学习】零基础掌握VotingRegressor集成学习
  • 云计算模式的区域LIS系统源码,基于ASP.NET+JQuery、EasyUI+MVC技术架构开发
  • 面向对象设计原则之接口隔离原则
  • haproxy 负载均衡
  • 在el-dialog中使用tinymce 点击工具栏下拉框被遮挡
  • CloudQuery + StarRocks:打造高效、安全的数据库管控新模式
  • 各类统计模型R语言的详细使用教程-R语言的线性回归使用教程
  • 点云从入门到精通技术详解100篇-基于尺度统一的三维激光点云与高清影像配准
  • <蓝桥杯软件赛>零基础备赛20周--第2周
  • CMake多文件构建初步
  • 游戏研发的解决方案有哪些?
  • Bayes决策:身高与体重特征进行性别分类
  • 【考研数学】数学“背诵”手册 | 需要记忆且容易遗忘的知识点
  • HJ3 明明的随机数
  • 如何恢复u盘删除文件?2023最新分享四种方法恢复文件
  • 8.稳定性专题
  • 基于51单片机的四种波形信号发生器仿真设计(仿真+程序源码+设计说明书+讲解视频)
  • 不同网段的IP怎么互通
  • C#序列化与反序列化详解
  • 如何在k8s的Java服务镜像(Linux)中设置中文字体