博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SDL2.0比较浅的学习教程
阅读量:5325 次
发布时间:2019-06-14

本文共 2132 字,大约阅读时间需要 7 分钟。

来自http://tieba.baidu.com/p/2967590846

#include "SDL2\SDL.h"

#include "SDL2\SDL_image.h"
#undef main
int main(int argc, char* args[])
{
SDL_Window *p = NULL;/*窗口*/
SDL_Renderer *px = NULL;/*渲染器*/
SDL_Surface *t = NULL;
SDL_Surface *t2 = NULL;
SDL_Texture *ps = NULL;/*硬件加速器*/
SDL_Init(SDL_INIT_EVERYTHING);
p = SDL_CreateWindow("Hello World!", 100, 100, 565, 67, SDL_WINDOW_RESIZABLE);/*能让我们绘制的窗口前两个参数控制窗口位置,然后是窗口大小 再然后是位标(falg)*/
t = IMG_Load("../Debug/SDL1.jpg");
px = SDL_CreateRenderer(p, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);/*渲染器 第一个位标表示显卡 -1表示从显卡中挑一个 第二个表示以显示器的刷新率来刷新画面*/
ps = SDL_CreateTextureFromSurface(px, t);/*使用硬件加速*/
SDL_FreeSurface(t );
SDL_RenderClear(px); /*清空屏幕*/
SDL_RenderCopy(px, ps , NULL, NULL); /*显示*/
SDL_RenderPresent(px );/*更新屏幕*/
SDL_Delay(20000);
SDL_DestroyTexture(ps);/*释放内存*/
SDL_DestroyRenderer(px );
SDL_DestroyWindow(p );
SDL_Quit();
return 0;
}
程序讲解
SDL_Renderer 类型
*SDl_CreateRenderer(窗口,-1,falg);
{创建一个2D渲染窗口
SDL_RENDERER_ACCELERATED 使用硬件加速 如果使用了硬件加速那么必须使用SDL_Texture(SDL_Texture* SDL_CreateTextureFromSurface(渲染器,现有的图);从现有的图创建一个硬件加速纹理)
SDL_RENDERER_PRESENTVSYNC 使用和窗口的同步频率
SDL_RENDERER_TARGETTEXTURE 渲染器支持渲染纹理
SDL_RENDERER_SOFTWARE 渲染器是一种软件后退
渲染器说明:用来在窗口中绘图的
SDL_Window 类型
SDL_Window *SDL_CreateWindow();
“窗口标题,x,y,宽,高,falg”
SDL_WINDOW_FULLSCREEN 全屏窗口
SDL_WINDOW_FULLSCREEN_DESKTOP 全屏窗口在当前桌面分辨率
SDL_WINDOW_OPENGL 与OpenGL窗口可用的上下文
SDL_WINDOW_HIDDEN 窗口不可见
SDL_WINDOW_SHOWN 窗口是可见的
SDL_WINDOW_BORDERLESS 没有窗口装饰
SDL_WINDOW_RESIZABLE 窗口可以调整大小
SDL_WINDOW_MINIMIZED 窗口最小化
SDL_WINDOW_MAXIMIZED 窗口最大化
SDL_WINDOW_INPUT_GRABBED 窗口有输入焦点
SDL_WINDOW_ALLOW_HIGHDPI 窗口应该创建在high-DPI模式如果支持(> = SDL 2.0.1)
SDL_Rect pos;
SDL_Texture 类型
SDL_QueryTexture(SDL_Texture*纹理, NULL, NULL, &pos.w, &pos.h); 指定图像硬件的纹理绘制位置
SDL_RenderCopy(SDL_Renderer*渲染器, SDL_Texture*硬件加速, NULL, &pos); 把硬件加速的纹理复制给渲染器
SDL_RenderClear(窗口);清空窗口
SDL_RenderCopy(窗口, 硬件纹理, NULL, NULL);
SDL_RenderPresent(窗口);更新窗口
关于SDL_RendererCopy();中的NULL
SDL_RendererCopy 第一个NULL表示需要绘制的图像的大小 NULL空表示全部绘制
第二个NULL表示绘制在屏幕上的位置为空是 则绘制整个屏幕
SDL_Destroy(窗口或者图像或者渲染或者纹理);释放窗口内存
SDL_Quit();退出SDL

转载于:https://www.cnblogs.com/eachan/p/4711818.html

你可能感兴趣的文章
Redis学习笔记之基础篇
查看>>
[解读REST] 2.REST用来干什么的?
查看>>
Cordova Android源代码分析系列一(项目总览和CordovaActivity分析)
查看>>
【慢慢学Android】:8.获取所有短信
查看>>
Spring Boot 项目学习 (一) 项目搭建
查看>>
.Net DateTime跨时区相关问题
查看>>
js入门2计算平方
查看>>
汇编语言实验四
查看>>
不申请额外内存空间就可以完成数据互换的算法:int x=a,y=b;设计一个算法,不申请第三个变量,试把a b互换位置 (按位异或)...
查看>>
KVM 介绍(3):I/O 全虚拟化和准虚拟化 [KVM I/O QEMU Full-Virtualizaiton Para-virtualization]...
查看>>
OpenStack 企业私有云的若干需求(3):多租户和租户间隔离(multi-tenancy and isolation)...
查看>>
sql server 2005/2008 设置 sql身份验证 和 sa空密码(像sql2000一样使用)(转载)
查看>>
linux下如何查看所有的用户和组信息?
查看>>
转:Visual C++ sprintf()函数用法
查看>>
移动敏捷测试方法和工具
查看>>
Dubbo 支持哪些序列化协议?
查看>>
vue hash模式转为history模式(二级路由)
查看>>
java 路径的不同写法
查看>>
计算机网络笔记2
查看>>
LuoguP2055 [ZJOI2009]假期的宿舍【二分图最大匹配】By cellur925
查看>>