15 #include "glxGraphicsPipe.h" 16 #include "glxGraphicsWindow.h" 17 #include "glxGraphicsBuffer.h" 18 #include "glxGraphicsPixmap.h" 19 #include "glxGraphicsStateGuardian.h" 20 #include "posixGraphicsStateGuardian.h" 21 #include "config_glxdisplay.h" 22 #include "frameBufferProperties.h" 33 if (_display == None) {
38 string display_spec (XDisplayString(_display));
40 int errorBase, eventBase;
41 if (!glXQueryExtension(_display, &errorBase, &eventBase)) {
42 glxdisplay_cat.error()
43 <<
"OpenGL GLX extension not supported on display \"" << display_spec
82 make_output(
const string &name,
100 DCAST_INTO_R(posixgsg, gsg, NULL);
118 if (gsg != NULL && glxgsg == NULL) {
122 if (((flags&BF_require_parasite)!=0)||
123 ((flags&BF_refuse_window)!=0)||
124 ((flags&BF_resizeable)!=0)||
125 ((flags&BF_size_track_host)!=0)||
126 ((flags&BF_rtt_cumulative)!=0)||
127 ((flags&BF_can_bind_color)!=0)||
128 ((flags&BF_can_bind_every)!=0)||
129 ((flags&BF_can_bind_layered)!=0)) {
139 if (!gl_support_fbo || host == NULL ||
140 (flags & (BF_require_parasite | BF_require_window)) != 0) {
145 if ((flags & BF_fb_props_optional) == 0) {
146 if (fb_prop.get_indexed_color() ||
147 fb_prop.get_back_buffers() > 0 ||
148 fb_prop.get_accum_bits() > 0) {
152 if (posixgsg != NULL && posixgsg->is_valid() && !posixgsg->needs_reset()) {
153 if (!posixgsg->_supports_framebuffer_object ||
154 posixgsg->_glDrawBuffers == NULL) {
162 return new GLGraphicsBuffer(engine,
this, name, fb_prop, win_prop,
167 if (glxgsg == NULL || glxgsg->_supports_fbconfig) {
169 if (!glx_support_pbuffer) {
173 if (((flags&BF_require_parasite)!=0)||
174 ((flags&BF_require_window)!=0)||
175 ((flags&BF_resizeable)!=0)||
176 ((flags&BF_size_track_host)!=0)||
177 ((flags&BF_can_bind_layered)!=0)) {
182 if (((flags&BF_rtt_cumulative)!=0)||
183 ((flags&BF_can_bind_every)!=0)) {
197 if (!glx_support_pixmap) {
201 if (((flags&BF_require_parasite)!=0)||
202 ((flags&BF_require_window)!=0)||
203 ((flags&BF_resizeable)!=0)||
204 ((flags&BF_size_track_host)!=0)||
205 ((flags&BF_can_bind_layered)!=0)) {
209 if (((flags&BF_rtt_cumulative)!=0)||
210 ((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)...
A container for the various kinds of properties we might ask to have on a graphics window before we o...
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 string get_interface_name() const
Returns the name of the rendering interface associated with this GraphicsPipe.
Encapsulates all the communication with a particular instance of a given rendering backend...
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.