SDL的几个宽高概念讲解(文中有福利)

SDL系列讲解(一) 简介

SDL系列讲解(二) 环境搭建

SDL系列讲解(三) 工具安装

SDL是什么,能干什么,为什么我们要学习它?

SDL系列讲解(四) demo讲解

SDL系列讲解(五) 调试c代码

SDL系列讲解(六) SDL_Activity流程

SDL系列讲解(七) SDL_image教程

SDL系列讲解(八) SDL_ttf教程

SDL系列讲解(九) 异常退出分析

SDL系列讲解(十) 按键处理流程

SDL系列讲解(十一) SDL_QUIT流程

SDL系列讲解(十二)创建窗口流程

android SDL系列讲解(十三) 播放音乐库 SDL_mixer教程

首先,说一些sdl的网站地址: http://www.libsdl.org/projects/ 一些项目,比如我们的ttf net 和mixer ,都是在这里进行下载。官方的wiki地址http://wiki.libsdl.org/FAQWindows 另一个wiki地址,比较详细的讲了一些例子,方法描述,算是很好的资料 http://sdl.beuc.net/sdl.wiki/FrontPage

SDL里面有几个比较关键的尺寸,我们这节来聊聊这个。了解了这些之后,你就知道如何开发游戏,如何放置一个图片的准确位置。

我们一个个来看下:

SDLSurfaceView android上层布局使用的View,和TextViewButton一致,都属于View级别,这个View的大小,就是我们实际屏幕看到的大小,宽高,就是按照像素计算出来的。getWidth() and getHeight() 去获取,如果在oncreate里面获取,基本获取的是错误的值,因为View还没有被测量,这时我们可以使用post来处理,或者监听ViewTreeObserver也可以做到。

Window SDL创建出来的窗口(SDL_CreateWindow),这个窗口的大小是固定的,和SDLSurfaceView大小一致,不能调整。因此对应的设置窗口的大小方法,在android上面不起作用,这个需要注意啦。 也就是SDL_SetWindowSize方法是不能用的。

Render,渲染器大小(SDL_CreateRenderer),size默认是和Window大小一样,是全屏的,但是我们可以主动修改这个大小,然后配合我们的设计尺寸。比如我们设计的游戏是480×800的尺寸下,那么我们游戏里面的角色,位置等信息,都可以使用这个480×800尺寸下进行计算,比如一个按钮,在100,100这个位置,指的就是在480×800这个尺寸下的位置,如果我们的Window大小是720×1080,那么我们这里的100,100的位置,就会经过投影,从480×800->720×1080,这里就是100/480×720,100/800×1080, 得到在7201080屏幕的显示位置。 如此设置之后,我们的开发就只需要围绕480×800去展开,不需关注具体屏幕的大小,render会正确的缩放到实际尺寸,具体我们要做的是: 如果我们要在480×800的尺寸下开发游戏,我们这样子操作

SDL_GetRendererOutputSize(renderer,&w,&h);

SDL_RenderSetScale(w/480,h/800);这个有可能会不按比例缩放,如果需要按比例,需要使用SDL_RenderSetLogicalSize(480,800); 这个方法会将大小不拉伸的情况下,进行等比缩放。剩余部分不填充。

Textrue, 纹理的大小,可以通过copy surface的大小,这里比如一张图大小200×400,那么创建一个surface,从这个图,那surface的大小就是200×400,然后纹理从surface复制过来,也就是也是200×400,如果这时textrue在贴到render上面的时候,没有指定区域,那么就是将整个的texture投影到render的整个区域,这里就是将200×400缩放到400*800上面去。然后再投影到Window上面,完成整个的显示。

原文发布于微信公众号 - 代码GG之家(code_gg_home)

原文发表时间:2017-10-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏游戏杂谈

产品设计之动态字体大小

iOS的“设置” –> “显示与亮度” –> “文字大小”,可以修改默认的系统字体大小,当修改之后,系统自带的应用如信息等都会随之改变,手机QQ会随之发生变化:

16630
来自专栏用户2442861的专栏

使用Tesseract-OCR训练文字识别记录

部分图片可能由于背景颜色关系,导致此张图片无法识别,可跳过继续下一张识别。

60910
来自专栏谦谦君子修罗刀

swift手撕二维码一、简介二、二维码综合案例

超市付款扫一扫,免费wifi扫一扫,添加好友扫一扫。 二维码就像是神一般的存在!! 可是到底二维码是个啥呢? ? QRCode.jpg 一、简介 1、概念 ...

34770
来自专栏全栈工程师成长之路

iOS界面渲染流程分析

在最近的面试中,我发现一道面试题,其考点是:围绕iOS App中一个视图从添加到完全渲染,在这个过程中,iOS系统都做了什么?

22010
来自专栏小轻论坛

Photoshop最新版上线!这些功能亮了!

Adobe 爸爸发布最新版本Photoshop CC 2019了!那它都有哪些新变动呢?接下来让我们一探究竟吧!

27020
来自专栏AndroidTv

一起撸个简单粗暴的Tv应用主界面的网格布局控件(上)

这一篇是真的隔了好久了~~,也终于可以喘口气来好好写博客了,这段时间实在是忙不过来了,迭代太紧。好,废话不多说,进入今天的主题。

33160
来自专栏性能与架构

腾讯开源的非常小巧的JS手势库

腾讯前端团队前几天在Github上发布了一个JS手势库 AlloyFinger 极其小巧,只有几K,但功能很全面,支持缩放、旋转、拖拽、单击、双击、滑动、长按 ...

55450
来自专栏数据小魔方

自定义下拉菜单

今天跟大家分享怎么利用excel的数据有效和开发工具制作自定义下拉菜单! 下拉菜单是我们经常会用到的高效录入数据方式,可以减少我们录入大量数据时的繁琐过程。 本...

35060
来自专栏腾讯NEXT学位

Cocos Creator制作一个微信小游戏(上)

| 导语 微信小游戏都火成这样了,为什么不尝试一下? 我们的目标是使用Cocos Creator从零开始制作一个小游戏,并放到微信上玩。

5.5K40
来自专栏IMWeb前端团队

mXSS简述

本文作者:IMWeb 杨文坚 原文出处:IMWeb社区 未经同意,禁止转载 因为没啥好讲,就说一下mXSS ABSTRACT 不论是服务器端或客...

22350

扫码关注云+社区

领取腾讯云代金券