【转】Beginning Game Programming v2.0
Beginning Game Programming v2.0
Last Updated 8/19/18
Greetings everyone, welcome to the ground up recoding of Beginning Game Programming with SDL. This time we will be coding with SDL 2 which has been released on the SDL website.
These tutorials were designed for C++ programmers who want to move from text based games to real time games with graphics. By the end of these tutorials, you'll know the basics to make your first real video game!
Follow @lazyfoo_net
| Table of Contents | |
|
Lesson 01 Hello SDL |
In this tutorial we will be setting up the SDL library and creating our first window. |
|
Lesson 02 Getting an Image on the Screen |
Now that we can get a window to appear, lets blit an image onto it. |
|
Lesson 03 Event Driven Programming |
Here we'll start handling user input by allow the user to X out the window. |
|
Lesson 04 Key Presses |
Here we'll learn to handle keyboard input. |
|
Lesson 05 Optimized Surface Loading and Soft Stretching |
Now that we know how to load and blit surfaces, it's time to make our blits faster. We'll also take a smaller image and stretch it to fit the screen. |
|
Lesson 06 Extension Libraries and Loading Other Image Formats |
Here we'll be using the SDL_image extension library to load png images. |
|
Lesson 07 Texture Loading and Rendering |
A big new feature in SDL 2.0 is hardware accelerated texture based 2D rendering. Here we'll be loading an image to render it using textures. |
|
Lesson 08 Geometry Rendering |
Another new feature in SDL 2.0 is hardware accelerated primitive rendering. Here we'll be using it to render some common shapes. |
|
Lesson 09 The Viewport |
SDL 2.0 also lets you control where you render on the screen using the viewport. We'll be using the viewport to create subscreens. |
|
Lesson 10 Color Keying |
Here we'll use color keying to give texture transparent backgrounds. |
|
Lesson 11 Clip Rendering and Sprite Sheets |
Using clip rendering, you can keep multiple images on one texture and render the part you need. We'll be using this to render individual sprites from a sprite sheet. |
|
Lesson 12 Color Modulation |
We'll be altering the color of rendered textures using color modulation. |
|
Lesson 13 Alpha Blending |
Here we'll be using SDL 2.0 new hardware accelerated alpha blending. |
|
Lesson 14 Animated Sprites and Vsync |
Here we'll be using a sequence of sprites to animate them. |
|
Lesson 15 Rotation and Flipping |
Here we'll be using SDL 2.0's new texture rotation and flipping. |
|
Lesson 16 True Type Fonts |
Here we'll be rendering text from true type fonts using SDL_ttf. |
|
Lesson 17 Mouse Events |
Here we'll learn to read mouse input using mouse events. |
|
Lesson 18 Key States |
There's other ways to read the keys besides event polling. Here will get the current states of the keyboard using get states. |
|
Lesson 19 Gamepads and Joysticks |
Here we'll learn to read input from a game controller. |
|
Lesson 20 Force Feedback |
Another new feature for SDL 2.0 is rumble support using the SDL haptics. We'll make our controller rumble when a button is pressed. |
|
Lesson 21 Sound Effects and Music |
Here we'll be using SDL_mixer to add music and sound to our SDL App. |
|
Lesson 22 Timing |
Here we'll be using SDL's time capabilites. |
|
Lesson 23 Advanced Timers |
Here we'll extend SDL time capabilities to make our own custom timer. |
|
Lesson 24 Calculating Frame Rate |
Here we'll use the timers we built to measure frame rate. |
|
Lesson 25 Capping Frame Rate |
If you need a constant frame rate when vsync isn't available, frame rate capping can be used as a fall back. |
|
Lesson 26 Motion |
Here we'll be taking what we learned about render and handling input to make a dot move around the screen. |
|
Lesson 27 Collision Detection |
Here we'll have two objects interact with each other using bounding box collision detection. |
|
Lesson 28 Per-pixel Collision Detection |
Here we'll have two object collide using per-pixel collision detection. |
|
Lesson 29 Circular Collision Detection |
Here we'll learn to detect collisions with circles and boxes. |
|
Lesson 30 Scrolling |
Here we'll be implement a camera to scroll levels larger than the screen. |
|
Lesson 31 Scrolling Backgrounds |
Here we'll using a scrolling background to give the illusion of an infinite level. |
|
Lesson 32 Text Input and Clipboard Handling |
Here we'll using SDL 2.0's new way of handling text input and its new clip board handling feature. |
|
Lesson 33 File Reading and Writing |
Here we'll using SDL's RWOps API to do binary file IO. |
|
Lesson 34 Audio Recording |
SDL 2.0.8 supports audio recording. Here we'll be copying from the audio device to record and copying to the audio device to play back. |
|
Lesson 35 Window Events |
Here we'll be handling events from a resizable window. |
|
Lesson 36 Multiple Windows |
A new feature in SDL is the ability to support more than one window. Here we'll make an application that has 3 windows. |
|
Lesson 37 Multiple Displays |
Another new feature of SDL 2.0 is the ability to handle more than one physical display. Here we'll make our window jump from display to display. |
|
Lesson 38 Particle Engines |
Here we'll use a simple particle effect to create a simple trail effect. |
|
Lesson 39 Tiling |
Here we'll make a simple level using a tiling engine. |
|
Lesson 40 Texture Manipulation |
Here we'll be directly accessing and manipulating a texture's pixels. |
|
Lesson 41 Bitmap Fonts |
Here we'll be using a texture as a font using bitmap font techniques. |
|
Lesson 42 Texture Streaming |
Here we'll be rendering from a streaming data source using texture streaming. |
|
Lesson 43 Render to Texture |
Here we'll be taking a scene and rendering it to a texture. |
|
Lesson 44 Frame Independent Movement |
Here we'll be making the dot move independent of the current frame rate. |
|
Lesson 45 Timer Callbacks |
SDL has another timing mechanism called timer callbacks. Here we'll be setting a function to be called back after a certain amount of time. |
|
Lesson 46 Multithreading |
Multithreading allows your program to do things simultaneously. Here we'll make things print to the console from outside our main thread. |
|
Lesson 47 Semaphores |
A major issue in multithreaded applications is that you need to make sure that they don't try to access the same data at the same time. Semaphores are a way to make sure only a certain amount of threads are performing an action at the same time. |
|
Lesson 48 Atomic Operations |
Atomic operations are another way to synchronize threads. Here we'll be redoing the previous tutorial with atomic counters. |
|
Lesson 49 Mutexes and Conditions |
Mutexes and conditions are yet another way to synchronize threads. Here we'll be using the added benefit that they allow threads to communicate with each other. |
|
Lesson 50 SDL and OpenGL 2 |
SDL is a powerful tool when combined with OpenGL. If you're just starting out with OpenGL or want to maximize compatibility, you can use SDL with OpenGL 2.1. In this tutorial we will make a minimalist OpenGL 2.1 program. |
|
Lesson 51 SDL and Modern OpenGL |
SDL 2.0 now has support for OpenGL 3.0+ with context controls. Here we'll be making a minimalist OpenGL 3+ core program. |
|
Lesson 52 Hello Mobile |
Here we'll be loading and displaying an image in our first mobile app! |
|
Lesson 53 Extensions and Changing Orientation |
Here we'll be using SDL extension libraries and handling changing orientation. |
|
Lesson 54 Touches |
Here we'll be handling single touch input. |
|
Lesson 55 Multitouch |
Here we'll be handling multitouch events like pinches and rotation. |
FROM: http://lazyfoo.net/tutorials/SDL/index.php
【转】Beginning Game Programming v2.0的更多相关文章
- [Android]Android端ORM框架——RapidORM(v2.0)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5626716.html [Android]Android端ORM ...
- JuCheap V2.0响应式后台管理系统模板正式发布beta版本
JuCheap V1.* 查看地址: http://blog.csdn.net/allenwdj/article/details/49155339 经过半年的努力,JuCheap后台通用响应式管理后台 ...
- python gettitle v2.0
#!/usr/bin/env python # coding=utf-8 import threading import requests import Queue import sys import ...
- ".NET Compact Framework v2.0 could not be found."
参考: http://blog.csdn.net/godcyx/article/details/7348431 问题原因: That's a known issue where VS can't di ...
- 【JS】heatmap.js v1.0 到 v2.0,详细总结一下:)
前段时间,项目要开发热力图插件,研究了heatmap.js,打算好好总结一下. 本文主要有以下几部分内容: 部分源码理解 如何迁移到v2.0 v2.0官方文档译文 关于heatmap.js介绍,请看这 ...
- 怎样在IDEA中使用JUnit4和JUnitGenerator V2.0自动生成测试模块
因为项目的需要,所以研究了一下自动生成测试代码.将经验记录下来,总会有用的.我个人认为,好记性不如多做笔记多反思总结. 1. 前提条件 开发环境已正确配置 工程已解决JUnit依赖关系(pom ...
- 微信快速开发框架(六)-- 微信快速开发框架(WXPP QuickFramework)V2.0版本上线--源码已更新至github
4月28日,已增加多媒体上传及下载API,对应MediaUploadRequest和MediaGetRequest ------------------------------------------ ...
- 【原创】风讯DotNetCMS V1.0~V2.0 SQL注入漏洞
文章作者:rebeyond 注:文章首发I.S.T.O信息安全团队,后由原创作者友情提交到乌云-漏洞报告平台.I.S.T.O版权所有,转载需注明作者. 受影响版本:貌似都受影响. 漏洞文件:use ...
- API Monitor v2.0 Alpha-r13 (32+64) 汉化版
API Monitor v2.0 Alpha-r13 (32+64) 汉化版: 链接: https://pan.baidu.com/s/1jIx5znC 密码: 4538 本软件已最大化汉化,已经趋于 ...
随机推荐
- java基础-01基本概念
java的特点 跨平台 所谓的平台,我们可以理解为操作系统. 大部分语言是不能跨平台的,比如c语言的程序在windows和linux上需要编写不同的代码. java程序是运行在JVM(Java Vir ...
- Spring Boot与分布式
---恢复内容开始--- 分布式.Dubbo/Zookeeper.Spring Boot/Cloud 一.分布式应用 在分布式系统中,国内常用zookeeper+dubbo组合, 而Spring Bo ...
- Python——模块——linecache(对文本行的随机访问)
一.模块的作用 linecache模块允许它获取Python资源文件的任一行. 二.模块函数 (1)linecache. getline(filename, lineno, module_global ...
- Vs2015 当前不会命中断点,没有与此关联的可执行代码
在学习Civil 3D本地化包程序的过程中, 使用.Net Reflector调试本地化包的主程序CountryKits.dll, .Net Reflector创建了相应的pdb文件等, 在我反编译并 ...
- Linux keepalived工作原理
keepalived简介与工作原理 Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他 ...
- ios端position为fixed失效的解决办法
关键代码 document.getElementById("searchInputbox").addEventListener('touchmove', handler, {pas ...
- [Windows Server]Windows Server turn off screen auto-lock to fit scheduled tasks(Error Code :0x4F7) / 关闭Windows Server的自动锁定来解决计划任务0x4F7错误
1. 打开“运行”,输入“regedit” 并回车. 2. 找到以下注册表路径,将Attributes的值改为 2: (原为1 HKEY_LOCAL_MACHINE \SYSTEM \CurrentC ...
- 通用的C#导出Excel 支持2003及2007以上版本
将数据导出到Excel,供用户下载是经常要使用到的一个功能,我这里进行了一些封装,目前已满足项目中导出的需求,使用DataReader导出Excel,支持自定义多表头,使用委托处理字段格式化及字段值的 ...
- 限流redis+lua
限流==保险丝策略,可借助框架如spring cloud中Hystrix组件实现.今天介绍使用guava RateLimiter 类实现接口限流. 比如12306抢票: https://blog.cs ...
- 同样级别iOS程序员,为啥比我菜的程序员薪资都比我高?
前言: 作为程序员,都有一种相同的焦虑——即当一次又一次的新技术浪潮袭来,总会不由自主的拼命跟随,总是担心如果不紧跟新技术的潮流,将会被时代所抛弃. 害怕年龄,害怕平庸,其实只是你在现实里的努力无法支 ...