美文网首页android干货分享Android开发Android知识
SDL的几个宽高概念讲解(文中有福利)

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

作者: 代码GG陆晓明 | 来源:发表于2017-10-28 20:05 被阅读55次

    圈子朋友公众号福利:

    「安卓干货铺」节后送书福利-感谢大家一直以来对我的支持!

    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,和TextView
    ,Button
    一致,都属于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上面,完成整个的显示。


    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/tunspxtx.html