Panda3D
|
This graphics pipe represents the interface for creating DirectX9 graphics windows. More...
#include "wdxGraphicsPipe9.h"
Classes | |
struct | CardID |
Public Types | |
enum | BufferCreationFlags { BF_refuse_parasite = 0x0001, BF_require_parasite = 0x0002, BF_refuse_window = 0x0004, BF_require_window = 0x0008, BF_can_bind_color = 0x0040, BF_can_bind_every = 0x0080, BF_resizeable = 0x0100, BF_size_track_host = 0x0200, BF_rtt_cumulative = 0x0400, BF_fb_props_optional = 0x0800, BF_size_square = 0x1000, BF_size_power_2 = 0x2000 } |
enum | OutputTypes { OT_window = 0x0001, OT_fullscreen_window = 0x0002, OT_buffer = 0x0004, OT_texture_buffer = 0x0008 } |
enum | PreferredWindowThread { PWT_app, PWT_draw } |
Public Member Functions | |
TypedObject * | as_typed_object () |
Returns the object, upcast (if necessary) to a TypedObject pointer. | |
const TypedObject * | as_typed_object () const |
Returns the object, upcast (if necessary) to a TypedObject pointer. | |
bool | find_best_depth_format (DXScreenData &Display, D3DDISPLAYMODE &Test_display_mode, D3DFORMAT *pBestFmt, bool bWantStencil, bool bForce16bpp, bool bVerboseMode=false) const |
virtual TypeHandle | force_init_type () |
int | get_best_parent_from_Set (const std::set< int > &) const |
GraphicsDevice * | get_device () const |
Returns a pointer to device object. | |
int | get_display_height () const |
Returns the height of the entire display, if it is known. | |
DisplayInformation * | get_display_information () |
Gets the pipe's DisplayInformation. | |
int | get_display_width () const |
Returns the width of the entire display, if it is known. | |
virtual string | get_interface_name () const |
Returns the name of the rendering interface associated with this GraphicsPipe. | |
virtual PreferredWindowThread | get_preferred_window_thread () const |
Returns an indication of the thread in which this GraphicsPipe requires its window processing to be performed: typically either the app thread (e.g. | |
int | get_ref_count () const |
Returns the current reference count. | |
int | get_supported_types () const |
Returns the mask of bits that represents the kinds of GraphicsOutput objects this pipe might be able to successfully create. | |
virtual TypeHandle | get_type () const |
int | get_type_index () const |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. | |
WeakReferenceList * | get_weak_list () const |
Returns the WeakReferenceList associated with this ReferenceCount object. | |
bool | has_weak_list () const |
Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise. | |
bool | is_exact_type (TypeHandle handle) const |
Returns true if the current object is the indicated type exactly. | |
bool | is_of_type (TypeHandle handle) const |
Returns true if the current object is or derives from the indicated type. | |
bool | is_valid () const |
Returns false if this pipe is known to be invalid, meaning that an attempt to create a GraphicsWindow with the pipe will certainly fail. | |
void | local_object () |
This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack. | |
virtual void | lookup_cpu_data () |
Looks up the detailed CPU information and stores it in _display_information, if supported by the OS. | |
void | operator delete (void *ptr, void *) |
void | operator delete (void *ptr) |
void | operator delete (void *ptr, void *) |
void | operator delete (void *ptr) |
void | operator delete[] (void *ptr) |
void | operator delete[] (void *, void *) |
void | operator delete[] (void *ptr) |
void | operator delete[] (void *, void *) |
void * | operator new (size_t size) |
void * | operator new (size_t size) |
void * | operator new (size_t size, void *ptr) |
void * | operator new (size_t size, void *ptr) |
void * | operator new[] (size_t size) |
void * | operator new[] (size_t size, void *ptr) |
void * | operator new[] (size_t size, void *ptr) |
void * | operator new[] (size_t size) |
virtual | PT (GraphicsDevice) make_device(void *scrn) |
void | ref () const |
Explicitly increments the reference count. | |
void | search_for_valid_displaymode (DXScreenData &scrn, UINT RequestedX_Size, UINT RequestedY_Size, bool bWantZBuffer, bool bWantStencil, UINT *p_supported_screen_depths_mask, bool *pCouldntFindAnyValidZBuf, D3DFORMAT *pSuggestedPixFmt, bool bForce16bppZBuffer, bool bVerboseMode=false) |
All ptr args are output parameters. | |
bool | special_check_fullscreen_resolution (DXScreenData &scrn, UINT x_size, UINT y_size) |
overrides of the general estimator for known working cases | |
bool | supports_type (int flags) const |
A convenience function to ask if a particular type or types of GraphicsObjects are supported. | |
bool | test_ref_count_integrity () const |
Does some easy checks to make sure that the reference count isn't completely bogus. | |
bool | test_ref_count_nonzero () const |
Does some easy checks to make sure that the reference count isn't zero, or completely bogus. | |
virtual bool | unref () const |
Explicitly decrements the reference count. | |
void | weak_ref (WeakPointerToVoid *ptv) |
Adds the indicated PointerToVoid as a weak reference to this object. | |
void | weak_unref (WeakPointerToVoid *ptv) |
Removes the indicated PointerToVoid as a weak reference to this object. | |
Static Public Member Functions | |
static TypeHandle | get_class_type () |
static void | init_type () |
This function is declared non-inline to work around a compiler bug in g++ 2.96. | |
static | PT (GraphicsPipe) pipe_constructor() |
Protected Member Functions | |
virtual void | close_gsg (GraphicsStateGuardian *gsg) |
This will be called in the draw thread (the same thread in which the GSG was created via make_gsg, above) to close the indicated GSG and free its associated graphics objects just before it is destructed. | |
bool | do_test_ref_count_integrity () const |
Does some easy checks to make sure that the reference count isn't completely bogus. | |
bool | do_test_ref_count_nonzero () const |
Returns true if the reference count is nonzero, false otherwise. | |
virtual | PT (GraphicsOutput) make_output(const string &name |
Protected Attributes | |
int | _display_height |
DisplayInformation * | _display_information |
int | _display_width |
bool | _is_valid |
LightMutex | _lock |
int | _supported_types |
virtual const FrameBufferProperties const WindowProperties int GraphicsEngine * | engine |
virtual const FrameBufferProperties & | fb_prop |
virtual const FrameBufferProperties const WindowProperties int | flags |
virtual const FrameBufferProperties const WindowProperties int GraphicsEngine GraphicsStateGuardian * | gsg |
virtual const FrameBufferProperties const WindowProperties int GraphicsEngine GraphicsStateGuardian GraphicsOutput * | host |
virtual const FrameBufferProperties const WindowProperties int GraphicsEngine GraphicsStateGuardian GraphicsOutput int bool & | precertify |
virtual const FrameBufferProperties const WindowProperties int GraphicsEngine GraphicsStateGuardian GraphicsOutput int | retry |
virtual const FrameBufferProperties const WindowProperties & | win_prop |
Static Protected Attributes | |
static const int | strip_properties [] |
Friends | |
class | wdxGraphicsWindow9 |
This graphics pipe represents the interface for creating DirectX9 graphics windows.
Definition at line 29 of file wdxGraphicsPipe9.h.
TypedObject * TypedObject::as_typed_object | ( | ) | [inline, inherited] |
Returns the object, upcast (if necessary) to a TypedObject pointer.
Definition at line 99 of file typedObject.I.
const TypedObject * TypedObject::as_typed_object | ( | ) | const [inline, inherited] |
Returns the object, upcast (if necessary) to a TypedObject pointer.
Definition at line 110 of file typedObject.I.
void GraphicsPipe::close_gsg | ( | GraphicsStateGuardian * | gsg | ) | [protected, virtual, inherited] |
This will be called in the draw thread (the same thread in which the GSG was created via make_gsg, above) to close the indicated GSG and free its associated graphics objects just before it is destructed.
This method exists to provide a hook for the graphics pipe to do any necessary cleanup, if any.
Definition at line 115 of file graphicsPipe.cxx.
References GraphicsStateGuardian::close_gsg().
bool ReferenceCount::do_test_ref_count_integrity | ( | ) | const [protected, inherited] |
Does some easy checks to make sure that the reference count isn't completely bogus.
Returns true if ok, false otherwise.
Reimplemented in NodeReferenceCount, CachedTypedWritableReferenceCount, and NodeCachedReferenceCount.
Definition at line 29 of file referenceCount.cxx.
Referenced by ReferenceCount::do_test_ref_count_nonzero(), and ReferenceCount::test_ref_count_integrity().
bool ReferenceCount::do_test_ref_count_nonzero | ( | ) | const [protected, inherited] |
Returns true if the reference count is nonzero, false otherwise.
Definition at line 56 of file referenceCount.cxx.
References ReferenceCount::do_test_ref_count_integrity().
Referenced by ReferenceCount::test_ref_count_nonzero().
GraphicsDevice * GraphicsPipe::get_device | ( | ) | const [inline, inherited] |
Returns a pointer to device object.
Definition at line 102 of file graphicsPipe.I.
Referenced by wdxGraphicsWindow9::open_window(), and wdxGraphicsWindow8::open_window().
int GraphicsPipe::get_display_height | ( | ) | const [inline, inherited] |
Returns the height of the entire display, if it is known.
This may return 0. See the caveats for get_display_width().
Definition at line 92 of file graphicsPipe.I.
Referenced by x11GraphicsWindow::set_properties_now(), and eglGraphicsWindow::set_properties_now().
DisplayInformation * GraphicsPipe::get_display_information | ( | ) | [inherited] |
Gets the pipe's DisplayInformation.
Definition at line 147 of file graphicsPipe.cxx.
int GraphicsPipe::get_display_width | ( | ) | const [inline, inherited] |
Returns the width of the entire display, if it is known.
This may return 0. This is not a guarantee that windows (particularly fullscreen windows) may not be created larger than this width, but it is intended to provide a hint to the application.
Definition at line 80 of file graphicsPipe.I.
Referenced by x11GraphicsWindow::set_properties_now(), and eglGraphicsWindow::set_properties_now().
string wdxGraphicsPipe9::get_interface_name | ( | ) | const [virtual] |
Returns the name of the rendering interface associated with this GraphicsPipe.
This is used to present to the user to allow him/her to choose between several possible GraphicsPipes available on a particular platform, so the name should be meaningful and unique for a given platform.
Implements GraphicsPipe.
Definition at line 63 of file wdxGraphicsPipe9.cxx.
GraphicsPipe::PreferredWindowThread GraphicsPipe::get_preferred_window_thread | ( | ) | const [virtual, inherited] |
Returns an indication of the thread in which this GraphicsPipe requires its window processing to be performed: typically either the app thread (e.g.
X) or the draw thread (Windows).
Reimplemented in eglGraphicsPipe, IPhoneGraphicsPipe, osxGraphicsPipe, and x11GraphicsPipe.
Definition at line 86 of file graphicsPipe.cxx.
int ReferenceCount::get_ref_count | ( | ) | const [inline, inherited] |
Returns the current reference count.
Definition at line 155 of file referenceCount.I.
References ReferenceCount::test_ref_count_integrity().
Referenced by TransformState::clear_cache(), RenderState::clear_cache(), RenderState::finalize(), RenderEffects::finalize(), RenderEffect::finalize(), RenderAttrib::finalize(), InternalName::finalize(), TransformState::get_num_unused_states(), RenderState::get_num_unused_states(), TransformState::list_cycles(), RenderState::list_cycles(), GeomVertexFormat::remove_column(), TransformState::unref(), RenderState::unref(), RenderState::~RenderState(), and TransformState::~TransformState().
int GraphicsPipe::get_supported_types | ( | ) | const [inline, inherited] |
Returns the mask of bits that represents the kinds of GraphicsOutput objects this pipe might be able to successfully create.
The return value is the union of bits in GraphicsPipe::OutputTypes that represents the set of GraphicsOutput types.
A 1 bit in a particular position is not a guarantee of success, but a 0 bit is a guarantee of failure.
Definition at line 47 of file graphicsPipe.I.
int TypedObject::get_type_index | ( | ) | const [inline, inherited] |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type.
This is equivalent to get_type().get_index().
Definition at line 52 of file typedObject.I.
References TypeHandle::get_index().
WeakReferenceList * ReferenceCount::get_weak_list | ( | ) | const [inline, inherited] |
Returns the WeakReferenceList associated with this ReferenceCount object.
If there has never been a WeakReferenceList associated with this object, creates one now.
Definition at line 307 of file referenceCount.I.
Referenced by ReferenceCount::weak_ref().
bool ReferenceCount::has_weak_list | ( | ) | const [inline, inherited] |
Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise.
In general, this will be true if there was ever a WeakPointerTo created for this object (even if there is not any for it now).
Definition at line 294 of file referenceCount.I.
Referenced by ReferenceCount::weak_unref().
static void wdxGraphicsPipe9::init_type | ( | ) | [inline, static] |
This function is declared non-inline to work around a compiler bug in g++ 2.96.
Making it inline seems to cause problems in the optimizer.
Reimplemented from WinGraphicsPipe.
Definition at line 104 of file wdxGraphicsPipe9.h.
References WinGraphicsPipe::init_type().
bool TypedObject::is_exact_type | ( | TypeHandle | handle | ) | const [inline, inherited] |
Returns true if the current object is the indicated type exactly.
Definition at line 74 of file typedObject.I.
References TypeHandle::get_name().
Referenced by GraphicsStateGuardian::async_reload_texture(), PortalNode::combine_with(), PandaNode::combine_with(), GeomNode::combine_with(), CollisionNode::combine_with(), Character::combine_with(), PGItem::cull_callback(), FactoryParams::get_param_of_type(), CollisionHandlerPusher::handle_entries(), SceneGraphReducer::r_flatten(), ConnectionWriter::send(), FltToEggLevelState::set_transform(), and VirtualFileSystem::unmount().
bool TypedObject::is_of_type | ( | TypeHandle | handle | ) | const [inline, inherited] |
Returns true if the current object is or derives from the indicated type.
Definition at line 63 of file typedObject.I.
References TypeHandle::is_derived_from().
Referenced by EggSliderData::add_back_pointer(), EggJointData::add_back_pointer(), CIntervalManager::add_c_interval(), XFileNode::add_child(), CollisionTraverser::add_collider(), CollisionHandlerPhysical::add_collider(), EggXfmSAnim::add_data(), CharacterJointBundle::add_node(), NonlinearImager::add_screen(), EggGroupNode::apply_first_attribute(), EggGroupNode::apply_last_attribute(), DeferredNodeProperty::apply_to_node(), RecorderController::begin_playback(), NodePath::clear_clip_plane(), EggGroupNode::clear_connected_shading(), NodePath::clear_light(), EggBase::convert_paths(), NodePath::decode_from_bam_stream(), VrpnClient::disconnect_device(), PhysicsManager::do_physics(), GraphicsStateGuardian::fetch_specified_part(), EggRenderState::fill_state(), AnimBundleNode::find_anim_bundle(), EggGroupNode::find_coordsys_entry(), XFile::find_data_object(), Character::find_joint(), EggGroupNode::find_materials(), Character::find_slider(), XFile::find_template(), EggGroupNode::find_textures(), EggMaterialCollection::find_used_materials(), EggTextureCollection::find_used_textures(), EggGroupNode::force_filenames(), EggJointData::force_initial_rest_frame(), WindowFramework::get_aspect_2d(), EggPoolUniquifier::get_category(), EggGroupUniquifier::get_category(), EggGroupNode::get_connected_shading(), PandaFramework::get_mouse(), FactoryParams::get_param_of_type(), EggGroupNode::has_absolute_pathnames(), NodePath::has_clip_plane(), NodePath::has_clip_plane_off(), NodePath::has_light(), PandaFramework::hide_collision_solids(), x11GraphicsWindow::open_window(), eglGraphicsWindow::open_window(), EggNode::parse_egg(), CharacterMaker::part_to_node(), EggGroupNode::post_apply_flat_attribute(), EggBinner::prepare_node(), PortalClipper::prepare_portal(), NodePath::project_texture(), EggMatrixTablePointer::quantize_channels(), ParametricCurveCollection::r_add_curves(), SceneGraphReducer::r_collect_vertex_data(), EggGroupNode::r_load_externals(), EggGroupNode::rebuild_vertex_pools(), EggGroupNode::recompute_polygon_normals(), EggGroupNode::remove_invalid_primitives(), EggGroupNode::remove_unused_vertices(), EggLoader::reparent_decals(), EggMaterialCollection::replace_materials(), EggTextureCollection::replace_textures(), EggGroupNode::resolve_filenames(), EggGroupNode::reverse_vertex_ordering(), NodePath::set_clip_plane(), NodePath::set_clip_plane_off(), NodePath::set_light(), ProjectionScreen::set_projector(), NonlinearImager::set_source_camera(), EggXfmSAnim::set_value(), NonlinearImager::set_viewer_camera(), PandaFramework::show_collision_solids(), BamCache::store(), XFileToEggConverter::strip_nodes(), EggGroupNode::strip_normals(), DataGraphTraverser::traverse(), DataGraphTraverser::traverse_below(), EggGroupNode::triangulate_polygons(), EggGroupNode::unify_attributes(), EggNameUniquifier::uniquify(), NodeCullCallbackData::upcall(), PhysicsCollisionHandler::validate_target(), EggXfmSAnim::write(), EggGroup::write(), EggToDXFLayer::write_3d_face(), and EggToDXFLayer::write_entities().
bool GraphicsPipe::is_valid | ( | ) | const [inline, inherited] |
Returns false if this pipe is known to be invalid, meaning that an attempt to create a GraphicsWindow with the pipe will certainly fail.
Returns true if the pipe is probably valid (is this case, an attempt to create a GraphicsWindow should succeed, but might still fail).
Use the GraphicsEngine class to create a GraphicsWindow on a particular pipe.
Definition at line 30 of file graphicsPipe.I.
void ReferenceCount::local_object | ( | ) | [inline, inherited] |
This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack.
This allows the object to be passed to functions that will increment and decrement the object's reference count temporarily, and it will prevent the object from being deleted (inappropriately), when the reference count returns to zero. It actually achieves this by setting a large positive value in the reference count field.
Definition at line 276 of file referenceCount.I.
Referenced by PGTop::cull_callback(), BoundingSphere::extend_by_hexahedron(), AsyncTaskManager::find_task(), AsyncTaskManager::find_tasks(), and AsyncTaskManager::find_tasks_matching().
void WinGraphicsPipe::lookup_cpu_data | ( | ) | [virtual, inherited] |
Looks up the detailed CPU information and stores it in _display_information, if supported by the OS.
This may take a second or two.
Reimplemented from GraphicsPipe.
Definition at line 894 of file winGraphicsPipe.cxx.
void ReferenceCount::ref | ( | ) | const [inline, inherited] |
Explicitly increments the reference count.
User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically.
This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it.
Definition at line 179 of file referenceCount.I.
References ReferenceCount::test_ref_count_integrity().
Referenced by CachedTypedWritableReferenceCount::cache_ref(), TypedWritable::decode_raw_from_bam_stream(), NodeCachedReferenceCount::node_ref(), NodeReferenceCount::node_ref(), BamCacheRecord::set_data(), CullableObject::set_draw_callback(), and ModelRoot::set_reference().
void wdxGraphicsPipe9::search_for_valid_displaymode | ( | DXScreenData & | scrn, |
UINT | RequestedX_Size, | ||
UINT | RequestedY_Size, | ||
bool | bWantZBuffer, | ||
bool | bWantStencil, | ||
UINT * | p_supported_screen_depths_mask, | ||
bool * | pCouldntFindAnyValidZBuf, | ||
D3DFORMAT * | pSuggestedPixFmt, | ||
bool | bForce16bppZBuffer, | ||
bool | bVerboseMode = false |
||
) |
All ptr args are output parameters.
If no valid mode found, returns *pSuggestedPixFmt = D3DFMT_UNKNOWN;
Definition at line 571 of file wdxGraphicsPipe9.cxx.
References special_check_fullscreen_resolution().
Referenced by wdxGraphicsWindow9::do_fullscreen_resize(), and wdxGraphicsWindow9::verify_window_sizes().
bool wdxGraphicsPipe9::special_check_fullscreen_resolution | ( | DXScreenData & | scrn, |
UINT | x_size, | ||
UINT | y_size | ||
) |
overrides of the general estimator for known working cases
Definition at line 543 of file wdxGraphicsPipe9.cxx.
Referenced by wdxGraphicsWindow9::do_fullscreen_resize(), search_for_valid_displaymode(), and wdxGraphicsWindow9::verify_window_sizes().
bool GraphicsPipe::supports_type | ( | int | flags | ) | const [inline, inherited] |
A convenience function to ask if a particular type or types of GraphicsObjects are supported.
The parameter is a union of one or more bits defined in GrpahicsPipe::OutputTypes.
Returns true if all of the requested types are listed in the supported_types mask, false if any one of them is not. This is not a guarantee that the indicated output type will successfully be created when it is attempted.
Definition at line 66 of file graphicsPipe.I.
bool ReferenceCount::test_ref_count_integrity | ( | ) | const [inline, inherited] |
Does some easy checks to make sure that the reference count isn't completely bogus.
Returns true if ok, false otherwise.
Reimplemented in NodeReferenceCount, CachedTypedWritableReferenceCount, and NodeCachedReferenceCount.
Definition at line 236 of file referenceCount.I.
References ReferenceCount::do_test_ref_count_integrity().
Referenced by EggGroupNode::add_child(), InternalName::find_ancestor(), InternalName::get_ancestor(), ReferenceCount::get_ref_count(), InternalName::get_top(), ReferenceCount::ref(), EggVertex::test_gref_integrity(), EggVertex::test_pref_integrity(), EggNode::test_under_integrity(), EggPrimitive::test_vref_integrity(), EggGroup::test_vref_integrity(), MouseWatcher::throw_event_pattern(), ReferenceCount::unref(), and EggNode::update_under().
bool ReferenceCount::test_ref_count_nonzero | ( | ) | const [inline, inherited] |
Does some easy checks to make sure that the reference count isn't zero, or completely bogus.
Returns true if ok, false otherwise.
Definition at line 252 of file referenceCount.I.
References ReferenceCount::do_test_ref_count_nonzero().
Referenced by CopyOnWritePointer::test_ref_count_nonzero().
bool ReferenceCount::unref | ( | ) | const [inline, virtual, inherited] |
Explicitly decrements the reference count.
Note that the object will not be implicitly deleted by unref() simply because the reference count drops to zero. (Having a member function delete itself is problematic.) However, see the helper function unref_delete().
User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically.
This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it.
The return value is true if the new reference count is nonzero, false if it is zero.
Reimplemented in GeomVertexArrayFormat, GeomVertexFormat, InternalName, RenderAttrib, RenderEffects, RenderState, and TransformState.
Definition at line 214 of file referenceCount.I.
References ReferenceCount::test_ref_count_integrity().
Referenced by CachedTypedWritableReferenceCount::cache_unref(), TypedWritable::decode_raw_from_bam_stream(), RenderEffect::finalize(), NodeCachedReferenceCount::node_unref(), NodeReferenceCount::node_unref(), TransformState::unref(), RenderState::unref(), RenderEffects::unref(), RenderAttrib::unref(), InternalName::unref(), GeomVertexFormat::unref(), and GeomVertexArrayFormat::unref().
void ReferenceCount::weak_ref | ( | WeakPointerToVoid * | ptv | ) | [inline, inherited] |
Adds the indicated PointerToVoid as a weak reference to this object.
Definition at line 321 of file referenceCount.I.
References WeakReferenceList::add_reference(), and ReferenceCount::get_weak_list().
void ReferenceCount::weak_unref | ( | WeakPointerToVoid * | ptv | ) | [inline, inherited] |
Removes the indicated PointerToVoid as a weak reference to this object.
It must have previously been added via a call to weak_ref().
Definition at line 334 of file referenceCount.I.
References WeakReferenceList::clear_reference(), and ReferenceCount::has_weak_list().