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.
virtual string get_interface_name() const
Returns the name of the rendering interface associated with this GraphicsPipe.
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...
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.