设为首页 加入收藏

TOP

【Spine】Spine Runtime for Delphi移植笔记(五) - spine.core.atlas(二)
2017-10-10 12:04:46 】 浏览:7826
Tags:Spine Runtime for Delphi 移植 笔记 spine.core.atlas
e); Page.MinFilter:
= TPageTextureFilter(GetEnumValue(TypeInfo(TPageTextureFilter), 'ptf'+Tuple[0])); Page.MagFilter:= TPageTextureFilter(GetEnumValue(TypeInfo(TPageTextureFilter), 'ptf'+Tuple[1])); // Direction:= ReadValue; Page.WrapU:= TPageTextureWrap.ptwClampToEdge; Page.WrapV:= TPageTextureWrap.ptwClampToEdge; if Direction = 'x' then Page.WrapU:= TPageTextureWrap.ptwRepeat else if Direction = 'y' then Page.WrapV:= TPageTextureWrap.ptwRepeat else if Direction = 'xy' then begin Page.WrapU:= TPageTextureWrap.ptwRepeat; Page.WrapV:= TPageTextureWrap.ptwRepeat; end; // FTextureLoader.LoadTexture(Page, Line); FPages.Add(Page); end else begin Region:= TAtlasRegion.Create; Region.Name:= Line; Region.Rotate:= ReadValue.ToBoolean; ReadTuple(Tuple); Region.X:= Tuple[0].ToInteger; Region.Y:= Tuple[1].ToInteger; ReadTuple(Tuple); Region.Width := Abs(Tuple[0].ToInteger); Region.Height:= Abs(Tuple[1].ToInteger); Region.U:= Region.X / Page.Width; Region.V:= Region.Y / Page.Height; if Region.Rotate then begin Region.U2:= (Region.X + Region.Height) / Page.Width; Region.V2:= (Region.Y + Region.Width) / Page.Height; end else begin Region.U2:= (Region.X + Region.Width) / Page.Width; Region.V2:= (Region.Y + Region.Height) / Page.Height; end; // if ReadTuple(Tuple) = 4 then begin SetLength(Region.Splits, 4); Region.Splits[0]:= Tuple[0].ToInteger; Region.Splits[1]:= Tuple[1].ToInteger; Region.Splits[2]:= Tuple[2].ToInteger; Region.Splits[3]:= Tuple[3].ToInteger; if ReadTuple(Tuple) = 4 then begin SetLength(Region.Pads, 4); Region.Pads[0]:= Tuple[0].ToInteger; Region.Pads[1]:= Tuple[1].ToInteger; Region.Pads[2]:= Tuple[2].ToInteger; Region.Pads[3]:= Tuple[3].ToInteger; ReadTuple(Tuple); end; end; Region.OriginalWidth := Tuple[0].ToInteger; Region.OriginalHeight:= Tuple[1].ToInteger; // ReadTuple(Tuple); Region.OffsetX:= Tuple[0].ToInteger; Region.OffsetY:= Tuple[1].ToInteger; Region.Index:= ReadValue.ToInteger; FRegions.Add(Line,Region); end; end else begin Page:= nil; Region:= nil; end; end; end; end.

图集(.atlas)的解析单元,这个单元比较独立,参考了一些别的代码。

这里说说atlas这个东西。

像下面这张图,就是一个图集,里面有我们要表现的角色动画的头、手、身体等部位。

.atlas这个文件可以看做是图片中这些部件的纹理数据,上面的解析代码就是对这个文件进行解析,还原成一些对象,便于后续渲染中取值。

【goblins.png】

 

【goblins.atlas】

goblins.png
format: RGBA8888
filter: Linear,Linear
repeat: none
spear
  rotate: false
  xy: 2, 142
  size: 22, 368
  orig: 22, 368
  offset: 0, 0
  index: -1
goblingirl/head
  rotate: false
  xy: 26, 429
  size: 103, 81
  orig: 103, 81
  offset: 0, 0
  index: -1
goblin/head
  rotate: false
  xy: 26, 361
  size: 103, 66
  orig: 103, 66
  offset: 0, 0
  index: -1
goblin/torso
  rotate: false
  xy: 131, 414
  size: 68, 96
  orig: 68, 96
  offset: 0, 0
  index: -1
goblingirl/torso
  rotate: false
  xy: 26, 263
  size: 68, 96
  orig: 68, 96
  offset: 0, 0
  index: -1
dagger
  rotate: false
  xy: 26, 153
  size: 26, 108
  orig: 26, 108
  offset: 0, 0
  index: -1
goblin/right-lower-leg
  rotate: false
  xy: 201, 434
  size: 36, 76
  orig: 36, 76
  offset: 0, 0
  index: -1
goblingirl/right-lower-leg
  rotate: false
  xy: 54, 185
  size: 36, 76
  orig: 36, 76
  offset: 0, 0
  index: -1
goblin/left-upper-leg
  rotate: false
  xy: 96, 286
  size: 33, 73
  orig: 33, 73
  offset: 0, 0
  index: -1
goblin/pelvis
  rotate: false
  xy: 131, 369
  size: 62, 43
  orig: 62, 43
  offset: 0, 0
  index: -1
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇DELPHI SOKET 编程--使用TServerS.. 下一篇Delphi的Socket编程步骤

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目