GraphicsOutput
from panda3d.core import GraphicsOutput
- class GraphicsOutput
Bases:
Bases:
GraphicsOutputBase
,DrawableRegion
This is a base class for the various different classes that represent the result of a frame of rendering. The most common kind of GraphicsOutput is a
GraphicsWindow
, which is a real-time window on the desktop, but another example isGraphicsBuffer
, which is an offscreen buffer.The actual rendering, and anything associated with the graphics context itself, is managed by the associated
GraphicsStateGuardian
(which might output to multiple GraphicsOutput objects).GraphicsOutputs are not actually writable to bam files, of course, but they may be passed as event parameters, so they inherit from
TypedWritableReferenceCount
instead ofTypedReferenceCount
for that convenience.Inheritance diagram
-
enum FrameMode
There are many reasons to call begin_frameend_frame.
-
enumerator FM_render = 0
We are rendering a frame.
-
enumerator FM_parasite = 1
We are rendering a frame of a parasite.
-
enumerator FM_refresh = 2
We are just refreshing the display or exposing the window.
-
enumerator FM_render = 0
-
enum RenderTextureMode
-
enumerator RTM_none = 0
-
enumerator RTM_bind_or_copy = 1
Try to render to the texture directly, but if that is not possible, fall back to RTM_copy_texture.
-
enumerator RTM_copy_texture = 2
Copy the image from the buffer to the texture every frame.
-
enumerator RTM_copy_ram = 3
Copy the image from the buffer to system RAM every frame.
-
enumerator RTM_triggered_copy_texture = 4
Copy the image from the buffer to the texture after a call to trigger_copy().
-
enumerator RTM_triggered_copy_ram = 5
Copy the image from the buffer to system RAM after a call to trigger_copy().
-
enumerator RTM_bind_layered = 6
Render directly to a layered texture, such as a cube map, 3D texture or 2D texture array. The layer that is being rendered to is selected by a geometry shader.
-
enumerator RTM_none = 0
- property active bool
- Getter
Returns true if the window is ready to be rendered into, false otherwise.
- Setter
Sets the active flag associated with the
GraphicsOutput
. If theGraphicsOutput
is marked inactive, nothing is rendered.
- property active_display_regions Sequence[PointerTo_DisplayRegion]
Returns the nth active
DisplayRegion
of those that have been created within the window. This may return NULL if n is out of bounds; particularly likely if the number of display regions has changed since the last call togetNumActiveDisplayRegions()
.
- addRenderTexture(tex: Texture, mode: RenderTextureMode, bitplane: RenderTexturePlane)
Creates a new Texture object, suitable for rendering the contents of this buffer into, and appends it to the list of render textures.
If tex is not NULL, it is the texture that will be set up for rendering into; otherwise, a new Texture object will be created, in which case you may call
getTexture()
to retrieve the new texture pointer.You can specify a bitplane to attach the texture to. the legal choices are:
RTP_depth
RTP_depth_stencil
RTP_color
RTP_aux_rgba_0
RTP_aux_rgba_1
RTP_aux_rgba_2
RTP_aux_rgba_3
If you do not specify a bitplane to attach the texture to, this routine will use a default based on the texture’s format:
F_depth_component attaches to RTP_depth
F_depth_stencil attaches to RTP_depth_stencil
all other formats attach to RTP_color.
The texture’s format will be changed to match the format of the bitplane to which it is attached. For example, if you pass in an F_rgba texture and order that it be attached to RTP_depth_stencil, it will turn into an F_depth_stencil texture.
Also see
makeTextureBuffer()
, which is a higher-level interface for preparing render-to-a-texture mode.
- property child_sort int
- Getter
Returns the sort value of future offscreen buffers created by make_texture_sort(). See
setChildSort()
.- Setter
Specifies the sort value of future offscreen buffers created by make_texture_sort().
The purpose of this method is to allow the user to limit the sort value chosen for a buffer created via
makeTextureBuffer()
. Normally, this buffer will be assigned a value ofgetSort()
- 1, so that it will be rendered before this window is rendered; but sometimes this isn’t sufficiently early, especially if other buffers also have a view into the same scene.If you specify a value here, then new buffers created via
makeTextureBuffer()
will be given that sort value instead ofgetSort()
- 1.
- clearChildSort()
Resets the sort value of future offscreen buffers created by make_texture_sort() to the default value. See
setChildSort()
.
- clearDeleteFlag()
Resets the delete flag, so the
GraphicsOutput
will not be automatically deleted before the beginning of the next frame.
- clearRenderTextures()
If the
GraphicsOutput
is currently rendering to a texture, then all textures are dissociated from the GraphicsOuput.
- countTextures() int
If the
GraphicsOutput
is set to render into a texture, returns the number of textures that are being rendered into. Normally, the textures would be associated with different buffers - a color texture, a depth texture, and a stencil texture.
- property display_regions Sequence[PointerTo_DisplayRegion]
Returns the nth
DisplayRegion
of those that have been created within the window. This may return NULL if n is out of bounds; particularly likely if the number of display regions has changed since the last call togetNumDisplayRegions()
.
- property engine GraphicsEngine
Returns the graphics engine that created this output. Since there is normally only one
GraphicsEngine
object in an application, this is usually the same as the globalGraphicsEngine
.
- property fb_size LVecBase2i
Returns the internal size of the window or buffer. This is almost always the same as
getSize()
, except when a pixel_zoom is in effect–seesetPixelZoom()
.
- flipReady() bool
These are not intended to be called directly by the user, but they’re published anyway since they might occasionally be useful for low-level debugging.
- getActiveDisplayRegion(n: int) DisplayRegion
Returns the nth active
DisplayRegion
of those that have been created within the window. This may return NULL if n is out of bounds; particularly likely if the number of display regions has changed since the last call togetNumActiveDisplayRegions()
.
- getChildSort() int
Returns the sort value of future offscreen buffers created by make_texture_sort(). See
setChildSort()
.
- static getClassType() TypeHandle
- getDeleteFlag() bool
Returns the current setting of the delete flag. When this is true, the
GraphicsOutput
will automatically be removed before the beginning of the next frame by theGraphicsEngine
.
- getDisplayRegion(n: int) DisplayRegion
Returns the nth
DisplayRegion
of those that have been created within the window. This may return NULL if n is out of bounds; particularly likely if the number of display regions has changed since the last call togetNumDisplayRegions()
.
- getEngine() GraphicsEngine
Returns the graphics engine that created this output. Since there is normally only one
GraphicsEngine
object in an application, this is usually the same as the globalGraphicsEngine
.
- getFbProperties() FrameBufferProperties
Returns the framebuffer properties of the window.
- getFbSize() LVecBase2i
Returns the internal size of the window or buffer. This is almost always the same as
getSize()
, except when a pixel_zoom is in effect–seesetPixelZoom()
.
- getFbXSize() int
Returns the internal width of the window or buffer. This is almost always the same as
getXSize()
, except when a pixel_zoom is in effect–seesetPixelZoom()
.
- getFbYSize() int
Returns the internal height of the window or buffer. This is almost always the same as
getYSize()
, except when a pixel_zoom is in effect–seesetPixelZoom()
.
- getGsg() GraphicsStateGuardian
Returns the GSG that is associated with this window. There is a one-to-one association between windows and GSG’s.
This may return NULL if the graphics context has not yet been created for the window, e.g. before the first frame has rendered; or after the window has been closed.
- getHost() GraphicsOutput
This is normally called only from within
makeTextureBuffer()
. When called on aParasiteBuffer
, it returns the host of that buffer; but when called on some other buffer, it returns the buffer itself.
- getInverted() bool
Returns the current setting of the inverted flag. When this is true, the scene is rendered into the window upside-down, flipped like a mirror along the X axis. See
setInverted()
.
- getLeftEyeColorMask() int
Returns the color mask in effect when rendering a left-eye view in red_blue stereo mode. This is one or more bits defined in
ColorWriteAttrib::Channels
. SeesetRedBlueStereo()
.
- getName() str
Returns the name that was passed to the
GraphicsOutput
constructor.
- getNumActiveDisplayRegions() int
Returns the number of active
DisplayRegions
that have been created within the window.
- getNumDisplayRegions() int
Returns the number of
DisplayRegions
that have been created within the window, active or otherwise.
- getOneShot() bool
Returns the current setting of the one-shot flag. When this is true, the
GraphicsOutput
will automatically set itself inactive after the next frame.
- getOverlayDisplayRegion() DisplayRegion
Returns the special “overlay”
DisplayRegion
that is created for each window or buffer. ThisDisplayRegion
covers the entire window, but cannot be used for rendering. It is a placeholder only, to indicate the dimensions of the window, and is usually used internally for purposes such as clearing the window, or grabbing a screenshot of the window.There are very few applications that require access to this
DisplayRegion
. Normally, you should create your ownDisplayRegion
that covers the window, if you want to render to the window.
- getPipe() GraphicsPipe
Returns the
GraphicsPipe
that this window is associated with. It is possible that theGraphicsPipe
might have been deleted while an outstanding PT(GraphicsOutput) prevented all of its children windows from also being deleted; in this unlikely case,getPipe()
may return NULL.
- getRedBlueStereo() bool
Returns whether red-blue stereo mode is in effect for this particular window. See
setRedBlueStereo()
.
- getRightEyeColorMask() int
Returns the color mask in effect when rendering a right-eye view in red_blue stereo mode. This is one or more bits defined in
ColorWriteAttrib::Channels
. SeesetRedBlueStereo()
.
- getRtmMode(i: int) RenderTextureMode
Returns the
RenderTextureMode
associated with the nth render-texture. Returns RTM_none if there is no such texture.
- getSbsLeftDimensions() LVecBase4
Returns the effective sub-region of the window for displaying the left channel, if side-by-side stereo mode is in effect for the window. See
setSideBySideStereo()
.
- getSbsLeftSize() LVecBase2i
If side-by-side stereo is enabled, this returns the pixel size of the left eye, based on scaling
getSize()
bygetSbsLeftDimensions()
. If side-by- side stereo is not enabled, this returns the same asgetSize()
.
- getSbsLeftXSize() int
If side-by-side stereo is enabled, this returns the pixel width of the left eye, based on scaling
getXSize()
bygetSbsLeftDimensions()
. If side- by-side stereo is not enabled, this returns the same asgetXSize()
.
- getSbsLeftYSize() int
If side-by-side stereo is enabled, this returns the pixel height of the left eye, based on scaling
getYSize()
bygetSbsLeftDimensions()
. If side-by-side stereo is not enabled, this returns the same asgetYSize()
.
- getSbsRightDimensions() LVecBase4
Returns the effective sub-region of the window for displaying the right channel, if side-by-side stereo mode is in effect for the window. See
setSideBySideStereo()
.
- getSbsRightSize() LVecBase2i
If side-by-side stereo is enabled, this returns the pixel size of the right eye, based on scaling
getSize()
bygetSbsRightDimensions()
. If side- by-side stereo is not enabled, this returns the same asgetSize()
.
- getSbsRightXSize() int
If side-by-side stereo is enabled, this returns the pixel width of the right eye, based on scaling
getXSize()
bygetSbsRightDimensions()
. If side-by-side stereo is not enabled, this returns the same asgetXSize()
.
- getSbsRightYSize() int
If side-by-side stereo is enabled, this returns the pixel height of the right eye, based on scaling
getYSize()
bygetSbsRightDimensions()
. If side-by-side stereo is not enabled, this returns the same asgetYSize()
.
- getScreenshot() Texture
Captures the most-recently rendered image from the framebuffer and returns it as Texture, or NULL on failure.
- getScreenshot(image: PNMImage) bool
Captures the most-recently rendered image from the framebuffer into the indicated
PNMImage
. Returns true on success, false on failure.
- getSideBySideStereo() bool
Returns whether side-by-side stereo mode is in effect for this particular window. See
setSideBySideStereo()
.
- getSize() LVecBase2i
Returns the visible size of the window or buffer, if it is known. In certain cases (e.g. fullscreen windows), the size may not be known until after the object has been fully created. Check
hasSize()
first.Certain objects (like windows) may change size spontaneously; this method is not thread-safe. To get the size of a window in a thread-safe manner, query get_properties().
- getSort() int
Returns the sorting order of this particular
GraphicsOutput
. The variousGraphicsOutputs
within a particular thread will be rendered in the indicated order.
- getSupportsRenderTexture() bool
Returns true if this particular
GraphicsOutput
can render directly into a texture, or false if it must always copy-to-texture at the end of each frame to achieve this effect.
- getSwapEyes() bool
Returns the current setting of the “swap eyes” flag. See
setSwapEyes()
.
- getTexture(i: int) Texture
Returns the nth texture into which the
GraphicsOutput
renders. Returns NULL if there is no such texture.If the texture is non-NULL, it may be applied to geometry to be rendered for any other windows or outputs that share the same GSG as this
GraphicsOutput
. The effect is undefined for windows that share a different GSG; usually in these cases the texture will be invalid.
- getTextureCard() NodePath
Returns a
PandaNode
containing a square polygon. The dimensions are (-1,0,-1) to (1,0,1). The texture coordinates are such that the texture of thisGraphicsOutput
is aligned properly to the polygon. TheGraphicsOutput
promises to surgically update the Geom inside thePandaNode
if necessary to maintain this invariant.Each invocation of this function returns a freshly- allocated
PandaNode
. You can therefore safely modify theRenderAttribs
of thePandaNode
. ThePandaNode
is initially textured with the texture of this GraphicOutput.
- getTexturePlane(i: int) RenderTexturePlane
Returns the RenderTexturePlane associated with the nth render-texture. Returns 0 if there is no such texture.
- getXSize() int
Returns the visible width of the window or buffer, if it is known. In certain cases (e.g. fullscreen windows), the size may not be known until after the object has been fully created. Check
hasSize()
first.Certain objects (like windows) may change size spontaneously; this method is not thread-safe. To get the size of a window in a thread-safe manner, query get_properties().
- getYSize() int
Returns the visible height of the window or buffer, if it is known. In certain cases (e.g. fullscreen windows), the size may not be known until after the object has been fully created. Check
hasSize()
first.Certain objects (like windows) may change size spontaneously; this method is not thread-safe. To get the size of a window in a thread-safe manner, query get_properties().
- property gsg GraphicsStateGuardian
Returns the GSG that is associated with this window. There is a one-to-one association between windows and GSG’s.
This may return NULL if the graphics context has not yet been created for the window, e.g. before the first frame has rendered; or after the window has been closed.
- hasSize() bool
Returns true if the size of the window/frame buffer is known, false otherwise. In certain cases the size may not be known until after the object has been fully created. Also, certain objects (like windows) may change size spontaneously.
- hasTexture() bool
Returns true if the
GraphicsOutput
is rendering into any textures at all.
- property inverted bool
- Getter
Returns the current setting of the inverted flag. When this is true, the scene is rendered into the window upside-down, flipped like a mirror along the X axis. See
setInverted()
.- Setter
Changes the current setting of the inverted flag. When this is true, the scene is rendered into the window upside-down and backwards, that is, inverted as if viewed through a mirror placed on the floor.
This is primarily intended to support DirectX (and a few buggy OpenGL graphics drivers) that perform a framebuffer-to-texture copy upside-down from the usual OpenGL (and Panda) convention. Panda will automatically set this flag for offscreen buffers on hardware that is known to do this, to compensate when rendering offscreen into a texture.
- isNonzeroSize() bool
Returns true if the output has a nonzero size in both X and Y, or false if it is zero (and therefore invalid).
- isStereo() bool
Returns Returns true if this window can render stereo
DisplayRegions
, either through red-blue stereo (seesetRedBlueStereo()
) or through true hardware stereo rendering.
- isValid() bool
Returns true if the output is fully created and ready for rendering, false otherwise.
- makeCubeMap(name: str, size: int, camera_rig: NodePath, camera_mask: DrawMask, to_ram: bool, fbp: FrameBufferProperties) GraphicsOutput
This is similar to
makeTextureBuffer()
in that it allocates a separate buffer suitable for rendering to a texture that can be assigned to geometry in this window, but in this case, the buffer is set up to render the six faces of a cube map.The buffer is automatically set up with six display regions and six cameras, each of which are assigned the indicated draw_mask and parented to the given camera_rig node (which you should then put in your scene to render the cube map from the appropriate point of view).
You may take the texture associated with the buffer and apply it to geometry, particularly with TexGenAttrib::M_world_cube_map also in effect, to apply a reflection of everything seen by the camera rig.
- makeDisplayRegion() DisplayRegion
Creates a new
DisplayRegion
that covers the entire window.If
isStereo()
is true for this window, and default-stereo-camera is configured true, this actually makes aStereoDisplayRegion
. CallmakeMonoDisplayRegion()
ormakeStereoDisplayRegion()
if you want to insist on one or the other.
- makeDisplayRegion(dimensions: LVecBase4) DisplayRegion
Creates a new
DisplayRegion
that covers the indicated sub-rectangle within the window. The range on all parameters is 0..1.If
isStereo()
is true for this window, and default-stereo-camera is configured true, this actually makes aStereoDisplayRegion
. CallmakeMonoDisplayRegion()
ormakeStereoDisplayRegion()
if you want to insist on one or the other.
- makeDisplayRegion(l: float, r: float, b: float, t: float) DisplayRegion
Creates a new
DisplayRegion
that covers the indicated sub-rectangle within the window. The range on all parameters is 0..1.If
isStereo()
is true for this window, and default-stereo-camera is configured true, this actually makes aStereoDisplayRegion
. CallmakeMonoDisplayRegion()
ormakeStereoDisplayRegion()
if you want to insist on one or the other.
- makeMonoDisplayRegion() DisplayRegion
Creates a new
DisplayRegion
that covers the entire window.This generally returns a mono
DisplayRegion
, even ifisStereo()
is true. However, if side-by-side stereo is enabled, this will return aStereoDisplayRegion
whose two eyes are both set to SC_mono. (This is necessary because in side-by-side stereo mode, it is necessary to draw even monoDisplayRegions
twice).
- makeMonoDisplayRegion(dimensions: LVecBase4) DisplayRegion
Creates a new
DisplayRegion
that covers the indicated sub-rectangle within the window. The range on all parameters is 0..1.This generally returns a mono
DisplayRegion
, even ifisStereo()
is true. However, if side-by-side stereo is enabled, this will return aStereoDisplayRegion
whose two eyes are both set to SC_mono. (This is necessary because in side-by-side stereo mode, it is necessary to draw even monoDisplayRegions
twice).
- makeMonoDisplayRegion(l: float, r: float, b: float, t: float) DisplayRegion
Creates a new
DisplayRegion
that covers the entire window.This generally returns a mono
DisplayRegion
, even ifisStereo()
is true. However, if side-by-side stereo is enabled, this will return aStereoDisplayRegion
whose two eyes are both set to SC_mono. (This is necessary because in side-by-side stereo mode, it is necessary to draw even monoDisplayRegions
twice).
- static makeScreenshotFilename(prefix: str) Filename
Saves a screenshot of the region to a default filename, and returns the filename, or empty string if the screenshot failed. The default filename is generated from the supplied prefix and from the Config variable screenshot-filename, which contains the following strings:
%~p - the supplied prefix %~f - the frame count %~e - the value of screenshot-extension All other % strings in strftime().
- makeStereoDisplayRegion() StereoDisplayRegion
Creates a new
DisplayRegion
that covers the entire window.This always returns a stereo
DisplayRegion
, even ifisStereo()
is false.
- makeStereoDisplayRegion(dimensions: LVecBase4) StereoDisplayRegion
Creates a new
DisplayRegion
that covers the indicated sub-rectangle within the window. The range on all parameters is 0..1.This always returns a stereo
DisplayRegion
, even ifisStereo()
is false.
- makeStereoDisplayRegion(l: float, r: float, b: float, t: float) StereoDisplayRegion
Creates a new
DisplayRegion
that covers the entire window.This always returns a stereo
DisplayRegion
, even ifisStereo()
is false.
- makeTextureBuffer(name: str, x_size: int, y_size: int, tex: Texture, to_ram: bool, fbp: FrameBufferProperties) GraphicsOutput
Creates and returns an offscreen buffer for rendering into, the result of which will be a texture suitable for applying to geometry within the scene rendered into this window.
If you pass zero as the buffer size, the buffer will have the same size as the host window, and will automatically be resized when the host window is.
If tex is not NULL, it is the texture that will be set up for rendering into; otherwise, a new Texture object will be created. In either case, the target texture can be retrieved from the return value with buffer->get_texture() (assuming the return value is not NULL).
If to_ram is true, the buffer will be set up to download its contents to the system RAM memory associated with the Texture object, instead of keeping it strictly within texture memory; this is much slower, but it allows using the texture with any GSG.
This will attempt to be smart about maximizing render performance while minimizing framebuffer waste. It might return a
GraphicsBuffer
set to render directly into a texture, if possible; or it might return aParasiteBuffer
that renders into this window. The return value is NULL if the buffer could not be created for some reason.When you are done using the buffer, you should remove it with a call to
GraphicsEngine.removeWindow()
.
- property name string
Returns the name that was passed to the
GraphicsOutput
constructor.
- property one_shot bool
- Getter
Returns the current setting of the one-shot flag. When this is true, the
GraphicsOutput
will automatically set itself inactive after the next frame.- Setter
Changes the current setting of the one-shot flag. When this is true, the
GraphicsOutput
will render the current frame and then automatically set itself inactive. This is particularly useful for buffers that are created for the purposes of render-to-texture, for static textures that don’t need to be continually re-rendered once they have been rendered the first time.Setting the buffer inactive is not the same thing as destroying it. You are still responsible for passing this buffer to
GraphicsEngine.removeWindow()
when you no longer need the texture, in order to clean up fully. (However, you should not call remove_window() on this buffer while the texture is still needed, because depending on the render-to-texture mechanism in use, this may invalidate the texture contents.)
- property pipe GraphicsPipe
Returns the
GraphicsPipe
that this window is associated with. It is possible that theGraphicsPipe
might have been deleted while an outstanding PT(GraphicsOutput) prevented all of its children windows from also being deleted; in this unlikely case,getPipe()
may return NULL.
- removeAllDisplayRegions()
Removes all display regions from the window, except the default one that is created with the window.
- removeDisplayRegion(display_region: DisplayRegion) bool
Removes the indicated
DisplayRegion
from the window, and destructs it if there are no other references.Returns true if the
DisplayRegion
is found and removed, false if it was not a part of the window.
- saveScreenshot(filename: Filename, image_comment: str) bool
Saves a screenshot of the region to the indicated filename. The image comment is an optional user readable string that will be saved with the header of the image (if the file format supports embedded data; for example jpg allows comments). Returns true on success, false on failure.
- saveScreenshotDefault(prefix: str) Filename
Saves a screenshot of the region to a default filename, and returns the filename, or empty string if the screenshot failed. The filename is generated by
makeScreenshotFilename()
.
- property sbs_left_size LVecBase2i
If side-by-side stereo is enabled, this returns the pixel size of the left eye, based on scaling
getSize()
bygetSbsLeftDimensions()
. If side-by- side stereo is not enabled, this returns the same asgetSize()
.
- property sbs_right_size LVecBase2i
If side-by-side stereo is enabled, this returns the pixel size of the right eye, based on scaling
getSize()
bygetSbsRightDimensions()
. If side- by-side stereo is not enabled, this returns the same asgetSize()
.
- setActive(active: bool)
Sets the active flag associated with the
GraphicsOutput
. If theGraphicsOutput
is marked inactive, nothing is rendered.
- setChildSort(child_sort: int)
Specifies the sort value of future offscreen buffers created by make_texture_sort().
The purpose of this method is to allow the user to limit the sort value chosen for a buffer created via
makeTextureBuffer()
. Normally, this buffer will be assigned a value ofgetSort()
- 1, so that it will be rendered before this window is rendered; but sometimes this isn’t sufficiently early, especially if other buffers also have a view into the same scene.If you specify a value here, then new buffers created via
makeTextureBuffer()
will be given that sort value instead ofgetSort()
- 1.
- setInverted(inverted: bool)
Changes the current setting of the inverted flag. When this is true, the scene is rendered into the window upside-down and backwards, that is, inverted as if viewed through a mirror placed on the floor.
This is primarily intended to support DirectX (and a few buggy OpenGL graphics drivers) that perform a framebuffer-to-texture copy upside-down from the usual OpenGL (and Panda) convention. Panda will automatically set this flag for offscreen buffers on hardware that is known to do this, to compensate when rendering offscreen into a texture.
- setOneShot(one_shot: bool)
Changes the current setting of the one-shot flag. When this is true, the
GraphicsOutput
will render the current frame and then automatically set itself inactive. This is particularly useful for buffers that are created for the purposes of render-to-texture, for static textures that don’t need to be continually re-rendered once they have been rendered the first time.Setting the buffer inactive is not the same thing as destroying it. You are still responsible for passing this buffer to
GraphicsEngine.removeWindow()
when you no longer need the texture, in order to clean up fully. (However, you should not call remove_window() on this buffer while the texture is still needed, because depending on the render-to-texture mechanism in use, this may invalidate the texture contents.)
- setOverlayDisplayRegion(display_region: DisplayRegion)
Replaces the special “overlay”
DisplayRegion
that is created for each window or buffer. SeegetOverlayDisplayRegion()
. This must be a newDisplayRegion
that has already been created for this window, for instance via a call tomakeMonoDisplayRegion()
. You are responsible for ensuring that the newDisplayRegion
covers the entire window. The previous overlay display region is not automatically removed; you must explicitly callremoveDisplayRegion()
on it after replacing it with this method, if you wish it to be removed.Normally, there is no reason to change the overlay
DisplayRegion
, so this method should be used only in very unusual circumstances.
- setRedBlueStereo(red_blue_stereo: bool, left_eye_color_mask: int, right_eye_color_mask: int)
Enables red-blue stereo mode on this particular window. When red-blue stereo mode is in effect,
DisplayRegions
that have the “left” channel set will render in the red (or specified) channel only, whileDisplayRegions
that have the “right” channel set will render in the blue (or specified) channel only.The remaining two parameters specify the particular color channel(s) to associate with each eye. Use the bits defined in
ColorWriteAttrib::Channels
.This can be used to achieve a cheesy stereo mode in the absence of hardware-supported stereo.
- setSideBySideStereo(side_by_side_stereo: bool)
Enables side-by-side stereo mode on this particular window. When side-by- side stereo mode is in effect,
DisplayRegions
that have the “left” channel set will render on the part of the window specified by sbs_left_dimensions (typically the left half: (0, 0.5, 0, 1)), whileDisplayRegions
that have the “right” channel set will render on the part of the window specified by sbs_right_dimensions (typically the right half: (0.5, 1, 0, 1)).This is commonly used in a dual-monitor mode, where a window is opened that spans two monitors, and each monitor represents a different eye.
- setSideBySideStereo(side_by_side_stereo: bool, sbs_left_dimensions: LVecBase4, sbs_right_dimensions: LVecBase4)
Enables side-by-side stereo mode on this particular window. When side-by- side stereo mode is in effect,
DisplayRegions
that have the “left” channel set will render on the part of the window specified by sbs_left_dimensions (typically the left half: (0, 0.5, 0, 1)), whileDisplayRegions
that have the “right” channel set will render on the part of the window specified by sbs_right_dimensions (typically the right half: (0.5, 1, 0, 1)).This is commonly used in a dual-monitor mode, where a window is opened that spans two monitors, and each monitor represents a different eye.
- setSort(sort: int)
Adjusts the sorting order of this particular
GraphicsOutput
, relative to otherGraphicsOutputs
.
- setSwapEyes(swap_eyes: bool)
Changes the “swap eyes” flag. This flag is normally false. When it is true, the left and right channels of a stereo
DisplayRegion
are sent to the opposite channels in the rendering backend. This is meant to work around hardware that inadvertently swaps the output channels, or hardware for which it cannot be determined which channel is which until runtime.
- setupRenderTexture(tex: Texture, allow_bind: bool, to_ram: bool)
This is a deprecated interface that made sense back when
GraphicsOutputs
could only render into one texture at a time. From now on, useclearRenderTextures()
andaddRenderTexture()
instead.Deprecated: Use
addRenderTexture()
instead.
Will attempt to use the depth buffer of the input graphics_output. The buffer sizes must be exactly the same.
- property size LVecBase2i
Returns the visible size of the window or buffer, if it is known. In certain cases (e.g. fullscreen windows), the size may not be known until after the object has been fully created. Check
hasSize()
first.Certain objects (like windows) may change size spontaneously; this method is not thread-safe. To get the size of a window in a thread-safe manner, query get_properties().
- property sort int
- Getter
Returns the sorting order of this particular
GraphicsOutput
. The variousGraphicsOutputs
within a particular thread will be rendered in the indicated order.- Setter
Adjusts the sorting order of this particular
GraphicsOutput
, relative to otherGraphicsOutputs
.
- property supports_render_texture bool
Returns true if this particular
GraphicsOutput
can render directly into a texture, or false if it must always copy-to-texture at the end of each frame to achieve this effect.
- property swap_eyes bool
- Getter
Returns the current setting of the “swap eyes” flag. See
setSwapEyes()
.- Setter
Changes the “swap eyes” flag. This flag is normally false. When it is true, the left and right channels of a stereo
DisplayRegion
are sent to the opposite channels in the rendering backend. This is meant to work around hardware that inadvertently swaps the output channels, or hardware for which it cannot be determined which channel is which until runtime.
- triggerCopy() AsyncFuture
When the
GraphicsOutput
is in triggered copy mode, this function triggers the copy (at the end of the next frame).
Discontinue sharing the depth buffer.
-
enum FrameMode