SDL讲解,图形基本概念非常到位.ppt

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SDL讲解,图形基本概念非常到位

SDL – 2 Video 静宜大学信息工程系 蔡奇伟副教授 ? 2007 纲要 绘图系统 设定显示模式 绘图页 BLIT Colorkey Alpha 值 Clipping 显示到荧幕 SDL_image 函式库 图形显示 Pixel Resolution CRT Retrace (回归讯号) Direct Color (直接色) Indirect Color (间接色) Screen Mode 设定显示模式 Surface (绘图页) 何谓绘图页 SDL_Surface 结构 SDL_PixelFormat 结构 SDL_GetRGB() 与 SDL_MapRGB() Pitch 直接存取绘图页的像素资料 建立绘图页 释放绘图页 转换绘图页的像素格式 何谓绘图页? 绘图页 (Surface) 是一个抽象结构,用来描述一块储存图片的存储器区域,其中包含图片的宽度、高度、像素格式、储存位址、……、等等相关信息。 SDL 把 frame buffer 视为一种特殊的绘图页,称之为荧幕绘图页 (Display Surface)。其他的绘图页称为幕后绘图页 (Off-screen Surface)。某些绘图页的旗标仅能用于设定荧幕绘图页。 SDL 用 SDL_Surface 结构来定义绘图页。 SDL_Surface 结构 SDL_PixelFormat 结构 SDL_GetRGB() SDL_MapRGB() Pitch 直接存取绘图页的像素资料 直接读写一个绘图页的像素,必须先将该绘图页锁住。 全部读写完成之后,再将该绘图页解锁。 int SDL_LockSurface (SDL_Surface *surface); void SDL_UnlockSurface (SDL_Surface *surface); 程序码的架构如下: if (SDL_LockSurface(MySurface) == 0) { // 直接读写 MySurface 的像素 SDL_UnlockSurface(MySurface); } 建立空白绘图页 把像素阵列转成绘图页 读写 BMP 档 释放绘图页 转换绘图页的像素格式 BLIT Block Transfer 的缩写 把绘图页中的一块矩形像素值复制到另一绘图页指定的位置。 SDL_BlitSurface() Pixel Blending (像素混合) Blit 时,来源像素和对应的目标像素有以下三种混合结果: 不透明 (opaque):来源像素取代目标像素。 透明 (transparent):结果为目标像素。 半透明:来源像素以 Alpha 值为透明度和目标像素 混合。 混合的方式由来源绘图页的 Alpha 与 colorkey 的设定来决定,如下一页的表格所示。 Colorkey 称为颜色键或透明色 应用在整个绘图页上。 启用绘图页透明色功能的两个方法: 呼叫 SDL_CreateRGBSurface() 建立空白绘图页时,旗标需加入 SDL_SRCCOLORKEY。 呼叫 SDL_SetColorKey() 来设定透明色的值。 SDL_SetColorKey() 也可以用来关闭绘图页的透明色功能。 设定或取消 colorkey Alpha 值 绘图页的 alpha 值用来设定整个绘图页的透明度。 图片中的像素 alpha 值定义个别像素的透明度。 BMP 图档不支援 alpha,PNG 图档则有。 alpha 值 0 (SDL_ALPHA_TRANSPARENT) 表示完全透明, alpha 值 255 (SDL_ALPHA_OPAUUE) 表示完全遮盖。 启用绘图页透明度功能的两个方法: 呼叫 SDL_CreateRGBSurface() 建立空白绘图页时,旗标需加入 SDL_SRCALPHA。 呼叫 SDL_SetAlpha() 来设定整个绘图页的 alpha 值。 SDL_SetAlpha() 也可以用来关闭绘图页的透明度功能。 设定或清除绘图页的 alpha 值 Clipping BLIT 时,来源像素只能传送到目标绘图页的剪裁矩形 (clipping rectangle) 范围之内。 绘图页的剪裁矩形预设为绘图页的大小,即 x = 0, y = 0, w = width, h = height 函式 SDL_SetClipRect() 可以用来修改绘图页的剪裁矩形。 设定绘图页的剪裁矩形 显示到荧幕 撕裂效果。 Double Buffering Copy Flip SDL 相关函式: SDL_Flip() SDL_UpdateRect() SDL_UpdateRects() Tearing(撕裂) Double Buffering SDL 的

文档评论(0)

woai118doc + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档