Skip to content

Commit 546af25

Browse files
committed
Snapshot now writes d3d11 vertex element info
I doubt anything will use these but since the the binary vert data is written out, these are also required to interpret it
1 parent 3599a2f commit 546af25

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

MMManaged/Snapshot.fs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,7 @@ module Snapshot =
522522
let mutable offsetBytes = 0
523523
let mutable strideBytes = vertSize
524524
let mutable texIdx = []
525+
let mutable elemBytes = [||]
525526

526527
let ibReader,vbReader,elements,vbDS,ibDS =
527528
if sd.BaseVertexIndex <> 0 || sd.MinVertexIndex <> 0u then
@@ -557,6 +558,18 @@ module Snapshot =
557558
log.Info "Elements: vert code %A, semantics:\n %s" (elStr.GetHashCode()) (elStr.Trim())
558559
log.Info "VB size: %A, vert size: %A; IB size: %A, index size: %A" vbSize vertSize ibSize indexSize
559560

561+
// store raw vertex elements in byte array
562+
let _ =
563+
use declMS = new MemoryStream()
564+
use declWriter = new BinaryWriter(declMS)
565+
use stream = new UnmanagedMemoryStream(layoutptr, int64 sd.RendData.d3d11.LayoutElemsSizeBytes, int64 sd.RendData.d3d11.LayoutElemsSizeBytes, FileAccess.Read)
566+
use br = new BinaryReader(stream)
567+
let bytes = br.ReadBytes(int sd.RendData.d3d11.LayoutElemsSizeBytes)
568+
declWriter.Write(bytes)
569+
declWriter.Flush();
570+
declWriter.Close();
571+
elemBytes <- declMS.ToArray()
572+
560573
let vbDS = new UnmanagedMemoryStream(vbData, int64 vbSize, int64 vbSize, FileAccess.Read)
561574
let vbReader = new BinaryReader(vbDS)
562575
let ibDS = new UnmanagedMemoryStream(ibData, int64 ibSize, int64 ibSize, FileAccess.Read)
@@ -594,7 +607,9 @@ module Snapshot =
594607
member x.IndexSizeBytes = int indexSize
595608

596609
member x.GetEnabledTextureStages() = texIdx
597-
member x.WriteDecl(basedir,basename) = ()
610+
member x.WriteDecl(basedir,basename) =
611+
let declfile = Path.Combine(basedir, (sprintf "%s_VBElems.dat" basename))
612+
File.WriteAllBytes(declfile, elemBytes)
598613
member x.WriteTransforms(basedir,basename) = ()
599614

600615
/// Take a snapshot using the specified snapshot data. Additional data will be read directly from the device.

0 commit comments

Comments
 (0)