Files
renderdoc/docs/python_api/in_depth/resourceids.rst
T

27 lines
1.4 KiB
ReStructuredText

.. _resourceids:
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 :class:`~renderdoc.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 :meth:`~renderdoc.ResourceId.Null`.
.. highlight:: python
.. code:: python
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")