本文整理汇总了Golang中github.com/tgascoigne/xdr2obj/resource.Container类的典型用法代码示例。如果您正苦于以下问题:Golang Container类的具体用法?Golang Container怎么用?Golang Container使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Container类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: Unpack
func (model *Model) Unpack(res *resource.Container) error {
res.Parse(&model.Header)
geomCollection := &model.Header.GeometryCollection
model.Geometry = make([]*Geometry, geomCollection.Count)
for i := range model.Geometry {
model.Geometry[i] = new(Geometry)
}
err := geomCollection.For(res, func(i int) error {
geometry := model.Geometry[i]
if err := geometry.Unpack(res); err != nil {
return err
}
if model.Header.ShaderMappings.Valid() {
if err := res.PeekElem(model.Header.ShaderMappings, i, &geometry.Shader); err != nil {
return err
}
} else {
geometry.Shader = ShaderNone
}
return nil
})
if err != nil {
return err
}
return nil
}
开发者ID:Shader2006,项目名称:xdr2obj,代码行数:31,代码来源:model.go
示例2: Unpack
func (texture *Texture) Unpack(res *resource.Container) error {
res.Parse(&texture.Header)
texture.Bitmaps = make(Bitmaps, texture.Header.Bitmaps.Capacity)
if err := texture.Bitmaps.Unpack(res, &texture.Header.Bitmaps); err != nil {
return err
}
return nil
}
开发者ID:Shader2006,项目名称:xdr2obj,代码行数:10,代码来源:texture.go
示例3: unpackVertices
func (vol *Volume) unpackVertices(res *resource.Container) error {
for i := 0; i < int(vol.VertexCount); i++ {
iVec := new(types.Vec3i)
res.Parse(iVec)
x := (float32(iVec[0]) * vol.ScaleFactor[0]) + vol.Offset[0]
y := (float32(iVec[1]) * vol.ScaleFactor[1]) + vol.Offset[1]
z := (float32(iVec[2]) * vol.ScaleFactor[2]) + vol.Offset[2]
v := mathgl.Vec4f{x, y, z, 1.0}
vol.AddVert4f(v)
}
return nil
}
开发者ID:Shader2006,项目名称:xdr2obj,代码行数:13,代码来源:volume.go
示例4: Unpack
func (buf *VertexBuffer) Unpack(res *resource.Container) error {
res.Parse(&buf.VertexHeader)
if err := res.Detour(buf.Info, func() error {
res.Parse(&buf.VertexInfo)
return nil
}); err != nil {
return err
}
buf.Vertex = make([]*Vertex, buf.Count)
for i := range buf.Vertex {
buf.Vertex[i] = new(Vertex)
}
if err := res.Detour(buf.Buffer, func() error {
for _, vert := range buf.Vertex {
if err := vert.Unpack(res, buf); err != nil {
return err
}
}
return nil
}); err != nil {
return err
}
return nil
}
开发者ID:Shader2006,项目名称:xdr2obj,代码行数:27,代码来源:gpu_buffers.go
示例5: Get
func (bmp *BitmapParameter) Get(res *resource.Container) (string, error) {
if !bmp.Path.Valid() {
return "", nil
}
var path string
if err := res.Detour(bmp.Path, func() error {
res.Parse(&path)
return nil
}); err != nil {
return "", err
}
return path, nil
}
开发者ID:Shader2006,项目名称:xdr2obj,代码行数:15,代码来源:parameter.go
示例6: Unpack
func (nodes *Nodes) Unpack(res *resource.Container) error {
res.Parse(&nodes.NodesHeader)
var err error
nodes.Volumes = make([]*Volume, nodes.Capacity)
volCollection := resource.PointerCollection{
Addr: nodes.BoundsTable,
Count: nodes.Count,
Capacity: nodes.Capacity,
}
volInfoCollection := resource.Collection{
Addr: nodes.VolumeInfo,
Count: nodes.Count,
Capacity: nodes.Capacity,
}
err = volInfoCollection.For(res, func(i int) error {
nodes.Volumes[i] = new(Volume)
if err := nodes.Volumes[i].VolumeInfo.Unpack(res); err != nil {
return err
}
return nil
})
if err != nil {
return err
}
err = volCollection.For(res, func(i int) error {
return nodes.Volumes[i].Unpack(res)
})
if err != nil {
return err
}
nodes.Model = export.NewModel()
for _, vol := range nodes.Volumes {
nodes.Model.AddMesh(vol.Mesh)
}
return nil
}
开发者ID:Shader2006,项目名称:xdr2obj,代码行数:43,代码来源:nodes.go
示例7: Unpack
func (param *Parameter) Unpack(res *resource.Container) error {
res.Parse(¶m.ParameterHeader)
if !param.Offset.Valid() {
return nil
}
switch param.Type {
case ParamDiffuseBitmap, ParamNormalBitmap:
bitmap := new(BitmapParameter)
if err := res.Detour(param.Offset, func() error {
res.Parse(bitmap)
param.parameter = bitmap
return nil
}); err != nil {
return err
}
default:
/* unsupported parameter. don't bother giving an error for now */
param.parameter = nil
}
return nil
}
开发者ID:Shader2006,项目名称:xdr2obj,代码行数:25,代码来源:parameter.go
示例8: unpackFaces
func (vol *Volume) unpackFaces(res *resource.Container) error {
fixIndex := func(c uint16) uint16 {
c &= 0x7FFF
return c
}
for i := 0; i < int(vol.IndexCount); i++ {
var polygonType, junk uint16
res.Parse(&junk)
res.Parse(&polygonType)
idxValues := make([]uint16, 6)
res.Parse(idxValues)
debug := func(junk, polyType uint16, idxValues []uint16) {
fmt.Printf("%.4x ", junk)
fmt.Printf("%.4x ", polyType)
for _, i := range idxValues {
fmt.Printf("%.4x ", i)
}
fmt.Printf("\n")
}
polygonType &= 0xF
if polygonType == 0x4 {
// debug(junk, polygonType, idxValues)
} else if polygonType == 0x3 || polygonType == 0xB {
/* cube, 4 points specified */
a := fixIndex(idxValues[0])
b := fixIndex(idxValues[1])
c := fixIndex(idxValues[2])
d := fixIndex(idxValues[3])
buildCube(vol.Mesh, a, b, c, d)
} else if polygonType == 0x2 {
/* seems to be two points */
a := fixIndex(junk)
b := fixIndex(idxValues[2])
traceVerts(vol.Mesh, a, b)
} else if polygonType == 0x1 {
// debug(junk, polygonType, idxValues)
} else if polygonType == 0x0 || polygonType == 0x8 { /* it's probably a triangle */
a := fixIndex(idxValues[0])
b := fixIndex(idxValues[1])
c := fixIndex(idxValues[2])
vol.AddFace(types.Tri{
A: a,
B: b,
C: c,
})
} else {
debug(junk, polygonType, idxValues)
}
}
return nil
}
开发者ID:Shader2006,项目名称:xdr2obj,代码行数:54,代码来源:volume.go
示例9: Unpack
func (vol *Volume) Unpack(res *resource.Container) error {
res.Parse(&vol.VolumeHeader)
vol.Mesh = export.NewMesh()
res.Detour(vol.VerticesAddr, func() error {
return vol.unpackVertices(res)
})
res.Detour(vol.IndicesAddr, func() error {
return vol.unpackFaces(res)
})
return nil
}
开发者ID:Shader2006,项目名称:xdr2obj,代码行数:15,代码来源:volume.go
示例10: Unpack
func (vert *Vertex) Unpack(res *resource.Container, buf *VertexBuffer) error {
buffer := make([]byte, buf.Stride)
reader := bytes.NewReader(buffer)
/* Read the vertex into our local buffer */
if size, err := res.Read(buffer); uint16(size) != buf.Stride || err != nil {
return err
}
offset := 0
/* Parse out the info we can */
if buf.Format.Has(export.VertXYZ) {
if err := binary.Read(reader, binary.BigEndian, &vert.WorldCoord); err != nil {
return err
}
offset += (4 * 3)
}
if buf.Format.Has(export.VertUnkA) {
junk := make([]byte, 4)
reader.Read(junk)
offset += 4
}
if buf.Format.Has(export.VertUnkB) {
junk := make([]byte, 4)
reader.Read(junk)
offset += 4
}
if buf.Format.Has(export.VertUnkC) {
junk := make([]byte, 4)
reader.Read(junk)
offset += 4
}
if buf.Format.Has(export.VertColour) {
if err := binary.Read(reader, binary.BigEndian, &vert.Colour); err != nil {
return err
}
offset += 4
}
if buf.Format.Has(export.VertUnkD) {
junk := make([]byte, 4)
reader.Read(junk)
offset += 4
}
if buf.Format.Has(export.VertUV0) {
if err := binary.Read(reader, binary.BigEndian, &vert.UV0); err != nil {
return err
}
offset += 4
}
if buf.Format.Has(export.VertUV1) {
if err := binary.Read(reader, binary.BigEndian, &vert.UV1); err != nil {
return err
}
offset += 4
}
if buf.Format.Has(export.VertUnkX) {
junk := make([]byte, 4)
reader.Read(junk)
offset += 4
}
return nil
}
开发者ID:Shader2006,项目名称:xdr2obj,代码行数:71,代码来源:vertex.go
示例11: Unpack
func (drawable *Drawable) Unpack(res *resource.Container) error {
res.Parse(&drawable.Header)
drawable.Model = export.NewModel()
/* unpack */
if drawable.Header.ShaderTable.Valid() {
if err := res.Detour(drawable.Header.ShaderTable, func() error {
return drawable.Shaders.Unpack(res)
}); err != nil {
return err
}
}
if err := res.Detour(drawable.Header.ModelCollection, func() error {
return drawable.Models.Unpack(res)
}); err != nil {
return err
}
if drawable.Header.Title.Valid() {
if err := res.Detour(drawable.Header.Title, func() error {
res.Parse(&drawable.Title)
drawable.Title = drawable.Title[:strings.LastIndex(drawable.Title, ".")]
return nil
}); err != nil {
return err
}
} else {
drawable.Title = fmt.Sprintf("unnamed_%v", NextUnnamedIndex)
NextUnnamedIndex++
}
/* Load everything into our exportable */
drawable.Model.Name = drawable.Title
for _, shader := range drawable.Shaders.Shaders {
material := export.NewMaterial()
if shader.DiffusePath != "" {
material.DiffBitmap = fmt.Sprintf("%v.dds", shader.DiffusePath)
}
drawable.Model.AddMaterial(material)
}
for _, model := range drawable.Models.Models {
for _, geom := range model.Geometry {
mesh := export.NewMesh()
mesh.Material = int(geom.Shader)
for _, vert := range geom.Vertices.Vertex {
/* Even if a feature isn't supported, the nil value should be fine */
newVert := export.Vertex{
Pos: mathgl.Vec4f{
vert.WorldCoord[0],
vert.WorldCoord[1],
vert.WorldCoord[2],
1.0,
},
UV: mathgl.Vec2f{
vert.UV0.U.Value(),
(-vert.UV0.V.Value()) + 1,
},
Colour: vert.Colour,
}
mesh.AddVert(newVert)
}
mesh.Format = geom.Vertices.Format
for _, face := range geom.Indices.Index {
mesh.AddFace(*face)
}
drawable.Model.AddMesh(mesh)
}
}
return nil
}
开发者ID:Shader2006,项目名称:xdr2obj,代码行数:78,代码来源:drawable.go
注:本文中的github.com/tgascoigne/xdr2obj/resource.Container类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论