32 if (_display == None) {
37 string display_spec (XDisplayString(_display));
39 int errorBase, eventBase;
40 if (!glXQueryExtension(_display, &errorBase, &eventBase)) {
41 glxdisplay_cat.error()
42 <<
"OpenGL GLX extension not supported on display \"" << display_spec
72 make_output(
const string &name,
90 DCAST_INTO_R(posixgsg, gsg,
nullptr);
108 if (gsg !=
nullptr && glxgsg ==
nullptr) {
112 if (((flags&BF_require_parasite)!=0)||
113 ((flags&BF_refuse_window)!=0)||
114 ((flags&BF_resizeable)!=0)||
115 ((flags&BF_size_track_host)!=0)||
116 ((flags&BF_rtt_cumulative)!=0)||
117 ((flags&BF_can_bind_color)!=0)||
118 ((flags&BF_can_bind_every)!=0)||
119 ((flags&BF_can_bind_layered)!=0)) {
129 if (!gl_support_fbo || host ==
nullptr ||
130 (flags & (BF_require_parasite | BF_require_window)) != 0) {
135 if ((flags & BF_fb_props_optional) == 0) {
136 if (fb_prop.get_indexed_color() ||
137 fb_prop.get_back_buffers() > 0 ||
138 fb_prop.get_accum_bits() > 0) {
142 if (posixgsg !=
nullptr && posixgsg->is_valid() && !posixgsg->needs_reset()) {
143 if (!posixgsg->_supports_framebuffer_object ||
144 posixgsg->_glDrawBuffers ==
nullptr) {
152 return new GLGraphicsBuffer(engine,
this, name, fb_prop, win_prop,
157 if (glxgsg ==
nullptr || glxgsg->_supports_fbconfig) {
159 if (!glx_support_pbuffer) {
163 if (((flags&BF_require_parasite)!=0)||
164 ((flags&BF_require_window)!=0)||
165 ((flags&BF_resizeable)!=0)||
166 ((flags&BF_size_track_host)!=0)||
167 ((flags&BF_can_bind_layered)!=0)) {
172 if (((flags&BF_rtt_cumulative)!=0)||
173 ((flags&BF_can_bind_every)!=0)) {
187 if (!glx_support_pixmap) {
191 if (((flags&BF_require_parasite)!=0)||
192 ((flags&BF_require_window)!=0)||
193 ((flags&BF_resizeable)!=0)||
194 ((flags&BF_size_track_host)!=0)||
195 ((flags&BF_can_bind_layered)!=0)) {
199 if (((flags&BF_rtt_cumulative)!=0)||
200 ((flags&BF_can_bind_every)!=0)) {
This graphics pipe represents the interface for creating OpenGL graphics windows on an X-based (e....
This graphics pipe represents the interface for creating graphics windows on an X-based client.
A tiny specialization on GLGraphicsStateGuardian to add some glx-specific information.
An offscreen buffer in the GLX environment.
This GSG is used only for CallbackGraphicsWindow (which might not be using the glx interfaces),...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
A container for the various kinds of properties we might ask to have on a graphics window before we o...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
An object to create GraphicsOutputs that share a particular 3-D API.
This is a base class for the various different classes that represent the result of a frame of render...
virtual std::string get_interface_name() const
Returns the name of the rendering interface associated with this GraphicsPipe.
PT(GraphicsPipe) glxGraphicsPipe
This function is passed to the GraphicsPipeSelection object to allow the user to make a default glxGr...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Encapsulates all the communication with a particular instance of a given rendering backend.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This class is the main interface to controlling the render process.
TypeHandle is the identifier used to differentiate C++ class types.
An interface to the glx system for managing GL windows under X.
A container for the various kinds of properties we might ask to have on a graphics frameBuffer before...
Another offscreen buffer in the GLX environment.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.