Resource IDs¶
Within RenderDoc all resources are referenced internally by a unique ID. This ID should be considered arbitrary and unordered but will never overlap so will always uniquely identify an object. The python class for this ID is ResourceId. IDs can’t be constructed directly by python scripts so you must find the ID in some reference point - from a list of resources by name, or from a pipeline binding point.
Resource IDs are only unique within a capture, and there is no correlation between the IDs used in one capture and another.
Every API object like a texture, buffer, or shader will have its own ID. When looking up a resource or cross referencing from an API call or pipeline binding you will often find that a resource is referenced only by its ID.
Anywhere that having NULL or no resource is a valid concept you may find a “Null” Resource ID. This can be compared either to a default-constructed resource ID e.g. renderdoc.ResourceId() or explicitly via the helper Null().
pipe = pyrenderdoc.CurPipelineState()
buffer_id = pipe.GetIBuffer().resourceId
if buffer_id == renderdoc.ResourceId():
print("No index buffer is bound")
else:
buffer_info = pyrenderdoc.GetBuffer(buffer_id)
print(f"Index buffer is {buffer_info.length} bytes in size")