https://wiki.libsdl.org/APIByCategory
http://adolfans.github.io/sdltutorialcn/sdl-2-dot-0-tutorial-index/
http://kelvmiao.info/sdl-tutorial-cn/index.html
http://www.lazyfoo.net/tutorials/SDL/index.php
// ConsoleSDL2.0.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <string>
#define SDL_MAIN_HANDLED
#include "SDL.h"
#pragma comment(lib,"SDL2.lib")
int main()
{ //不使用 SDL_main(int argc, char *argv[]) 入口,需要调用下面一句函数,不然 SDL_Init 函数会调用失败,具体可官网查看 https://wiki.libsdl.org/CategoryInit
//当然你也可以把主函数声明成和 SDL_main 一样的格式,就需要要定义 SDL_MAIN_HANDLED 宏了
SDL_SetMainReady();
//初始化
if (SDL_Init(SDL_INIT_VIDEO) != 0)
{
SDL_Log("Unable to initialize SDL: %s", SDL_GetError());
return 1;
} SDL_Window *window = NULL;
//创建窗体
window = SDL_CreateWindow(
"An SDL2 window", // window title
SDL_WINDOWPOS_UNDEFINED, // initial x position
SDL_WINDOWPOS_UNDEFINED, // initial y position
640, // width, in pixels
480, // height, in pixels
SDL_WINDOW_OPENGL // flags - see below
);
if (window == NULL) {
// In the case that the window could not be made...
SDL_Log("Could not create window: %s\n", SDL_GetError());
return -1;
} SDL_Renderer *ren = nullptr;
//创建渲染器
ren = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
if (ren == nullptr)
{
std::cout << SDL_GetError() << std::endl;
return 1;
} SDL_Surface *bmp = nullptr;
//加载图像到内存
bmp = SDL_LoadBMP("xxx.bmp");
if (bmp == nullptr)
{
std::cout << SDL_GetError() << std::endl;
return 1;
} SDL_Texture *tex = nullptr;
tex = SDL_CreateTextureFromSurface(ren, bmp); //释放 SDL_Surface
SDL_FreeSurface(bmp);
//清空渲染器
SDL_RenderClear(ren);
//复制 SDL_Texture
SDL_RenderCopy(ren, tex, NULL, NULL);
//画线
SDL_RenderDrawLine(ren, 0, 60, 120, 240);
//更新渲染器
SDL_RenderPresent(ren); while (true)
{ }
//SDL_Delay(3000); //销毁指针
SDL_DestroyTexture(tex);
SDL_DestroyRenderer(ren);
SDL_DestroyWindow(window);
//退出
SDL_Quit();
//system("pause");
return 0;
}

SDL 2.0 如何在 windows 上使用?的更多相关文章

  1. (转)如何在Windows上安装多个MySQL

    原文:http://www.blogjava.net/hongjunli/archive/2009/03/01/257216.html 如何在Windows上安装多个MySQL 本文以免安装版的mys ...

  2. Redis简介以及如何在Windows上安装Redis

    Redis简介 Redis是一个速度非常快的非关系型内存数据库. Redis提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erla ...

  3. 如何在Windows上搭建Android开发环境

    Android开发越来越火,许多小伙伴们纷纷学习Android开发,学习Android开发首要任务是搭建Android开发环境,由于大家 主要实在Windows 上开发Android,下面就详细给大家 ...

  4. 如何在Windows上挂载Linux系统分区

    NFS普遍用于unix之间共享,windows默认是不支持这种文件系统的.如果我们要用windows访问NFS的话,而windows系统自身又不支持这种文件系统,那么我们该怎么办? 别急,小编这就手把 ...

  5. 如何在windows上把你的项目提交到github(转载)

    (1)如何在windows上把你的项目提交到githubhttp://michaelye1988.iteye.com/blog/1637951 (2)github错误提示:fatal:remote o ...

  6. MongoDb进阶实践之二 如何在Windows上配置MongoDB

    一.引言            上一篇文章,我介绍了如何在Linux系统上安装和配置MongoDB,其实都不是很难,不需要安装和编译,省去了Make && Make Install 命 ...

  7. 如何在 Windows 上 使用 ONLYOFFICE 协作编辑文档

    ONLYOFFICE Document Server提供文档协作的服务功能,支持Word,Excel和PowerPoint的协作.但是这里告诉我们,需要进行文档管理和存储的二次开发. Please n ...

  8. 如何在Windows上使用Python进行开发

    本文由葡萄城技术团队于原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 一直以来C#都是微软在编程语言方面最为显著的Tag,但时至今日Python ...

  9. 如何在Windows上安装多个MySQL

    将MySQL注册为系统服务:%MySQL_HOME%\bin>mysqld --install mysql5.1,此时,在运行中输入"services.msc"或者打开&qu ...

随机推荐

  1. SQLSERVER存储过程语法详解

    CREATE PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ...

  2. maven核心概念--生命周期

    maven有一个命令,mvn package,该命令行并没有指定一个插件目标, 而是指定了一个Maven生命周期阶段.一个阶段是在被Maven称为"构建生命周期"中的一个步骤.生命 ...

  3. junit忽略测试方法

    JUnit 提供注解 org.junit.Ignore 用于暂时忽略某个测试方法或者说整个类.因为有时候由于测试环境受限,并不能保证每一个测试方法都能正确运行. 1,方法级别上使用@ignore来注释 ...

  4. shell第二篇

    第二篇知道shell是什么,再来了解一下shell的分类及相关历史 参考百度百科:shell 1.shell概念(计算机壳层) 在计算机科学中,Shell俗称壳(用来区别于核),是指"提供使 ...

  5. GlusterFS最佳实践

    标签(linux): glusterfs 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 今天我们来从实战中学习glusterfs 环境准备: gluster-s ...

  6. 跨域资源共享 CORS 详解(转)

    add by zhj: 公司在一个web产品上,做前后端分离,前后端提供独立的服务,使用不同的域名,通过http进行交互,在 前端,会涉及到跨域访问的问题,前端使用了CORS,后端同时需要做相应修改, ...

  7. [TFRecord文件格式]基本介绍

    标准TensorFlow格式 TFRecords 觉得有用的话,欢迎一起讨论相互学习~Follow Me TFRecords可以允许你讲任意的数据转换为TensorFlow所支持的格式, 这种方法可以 ...

  8. python threading queue模块中join setDaemon及task_done的使用方法及示例

    threading:     t.setDaemon(True)  将线程设置成守护线程,主进行结束后,此线程也会被强制结束.如果线程没有设置此值,则主线程执行完毕后还会等待此线程执行.     t. ...

  9. MySQL笔记-语句的执行顺序

    在一次查询线上问题时发现有以下两条同样的SQL,执行后数据的顺序不一样: SELECT * FROM nns_assists_item AS asset WHERE asset.nns_assist_ ...

  10. SpringMVC源码情操陶冶-DispatcherServlet

    本文对springmvc核心类DispatcherServlet作下简单的向导,方便博主与读者查阅 DispatcherServlet-继承关系 分析DispatcherServlet的继承关系以及主 ...