Display buffer with format¶
This example shows an easy way to automate a repro case. It could be run as a command line argument when starting the UI, to avoid repetitive steps.
First the code opens a specified file, although this step could be omitted if the desired capture is already open.
filename = "test.rdc"
pyrenderdoc.LoadCapture(filename, renderdoc.ReplayOptions(), filename, False, True)
Next we iterate through the list of buffers to find the one we want. The selection criteria are up to you, in this case we look at the name provided and identify the buffer by that, however it could also be a particular size, or the buffer bound at a given event.
mybuf = renderdoc.ResourceId.Null()
for buf in pyrenderdoc.GetBuffers():
print("buf %s is %s" % (buf.resourceId, pyrenderdoc.GetResourceName(buf.resourceId)))
# here put your actual selection criteria - i.e. look for a particular name
if pyrenderdoc.GetResourceName(buf.resourceId) == "dataBuffer":
mybuf = buf.resourceId
break
print("selected %s" % pyrenderdoc.GetResourceName(mybuf))
Once we’ve identified the buffer we want to view, we create a buffer viewer and display it on the main tool area.
# Open a new buffer viewer for this buffer, with the given format
bufview = pyrenderdoc.ViewBuffer(0, 0, mybuf, formatter)
# Show the buffer viewer on the main tool area
pyrenderdoc.AddDockWindow(bufview.Widget(), qrenderdoc.DockReference.MainToolArea, None)
Example Source¶
filename = "test.rdc"
formatter = "float3 pos; half norms[16]; uint flags;"
pyrenderdoc.LoadCapture(filename, renderdoc.ReplayOptions(), filename, False, True)
mybuf = renderdoc.ResourceId.Null()
for buf in pyrenderdoc.GetBuffers():
print("buf %s is %s" % (buf.resourceId, pyrenderdoc.GetResourceName(buf.resourceId)))
# here put your actual selection criteria - i.e. look for a particular name
if pyrenderdoc.GetResourceName(buf.resourceId) == "dataBuffer":
mybuf = buf.resourceId
break
print("selected %s" % pyrenderdoc.GetResourceName(mybuf))
if mybuf != renderdoc.ResourceId.Null():
# Open a new buffer viewer for this buffer, with the given format
bufview = pyrenderdoc.ViewBuffer(0, 0, mybuf, formatter)
# Show the buffer viewer on the main tool area
pyrenderdoc.AddDockWindow(bufview.Widget(), qrenderdoc.DockReference.MainToolArea, None)