Opentk/Source/Bind/Specifications/Docs/GL/glXChooseFBConfig.xml

685 lines
35 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
"http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
<refentry id="glXChooseFBConfig">
<refmeta>
<refmetainfo>
<copyright>
<year>1991-2006</year>
<holder>Silicon Graphics, Inc.</holder>
</copyright>
</refmetainfo>
<refentrytitle>glXChooseFBConfig</refentrytitle>
<manvolnum>3G</manvolnum>
</refmeta>
<refnamediv>
<refname>glXChooseFBConfig</refname>
<refpurpose>return a list of GLX frame buffer configurations that match the specified attributes</refpurpose>
</refnamediv>
<refsynopsisdiv><title>C Specification</title>
<funcsynopsis>
<funcprototype>
<funcdef>GLXFBConfig * <function>glXChooseFBConfig</function></funcdef>
<paramdef>Display * <parameter>dpy</parameter></paramdef>
<paramdef>int <parameter>screen</parameter></paramdef>
<paramdef>const int * <parameter>attrib_list</parameter></paramdef>
<paramdef>int * <parameter>nelements</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<!-- eqn: ignoring delim $$ -->
<refsect1 id="parameters"><title>Parameters</title>
<variablelist>
<varlistentry>
<term><parameter>dpy</parameter></term>
<listitem>
<para>
Specifies the connection to the X server.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>screen</parameter></term>
<listitem>
<para>
Specifies the screen number.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>attrib_list</parameter></term>
<listitem>
<para>
Specifies a list of attribute/value pairs.
The last attribute must be <constant>None</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>nelements</parameter></term>
<listitem>
<para>
Returns the number of elements in the list returned by <function>glXChooseFBConfig</function>.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="description"><title>Description</title>
<para>
<function>glXChooseFBConfig</function> returns GLX frame buffer configurations that match the attributes
specified in <parameter>attrib_list</parameter>, or <constant>NULL</constant> if no matches are found.
If <parameter>attrib_list</parameter> is <constant>NULL</constant>, then <function>glXChooseFBConfig</function> returns an array of GLX
frame buffer configurations that are available on the specified screen.
If an error occurs, no frame buffer configurations exist on the
specified screen, or if no frame buffer configurations match the
specified attributes, then <constant>NULL</constant> is returned.
Use <function>XFree</function> to free the memory returned by
<function>glXChooseFBConfig</function>.
</para>
<para>
All attributes in <parameter>attrib_list</parameter>, including boolean attributes, are
immediately followed by the corresponding desired value. The list is
terminated with <constant>None</constant>. If an attribute is not specified in <parameter>attrib_list</parameter>,
then the default value (see below) is used (and the attribute is said to be
specified implicitly). For example, if <constant>GLX_STEREO</constant> is not specified, then
it is assumed to be <constant>False</constant>. For some attributes, the default is
<constant>GLX_DONT_CARE</constant>, meaning that any value is OK for this attribute, so the
attribute will not be checked.
</para>
<para>
Attributes are matched in an attribute-specific manner.
Some of the attributes, such as <constant>GLX_LEVEL</constant>, must match the specified
value exactly; others, such as, <constant>GLX_RED_SIZE</constant> must meet or exceed the
specified minimum values. If more than one GLX frame buffer configuration is found,
then a list of configurations, sorted
according to the ``best'' match criteria, is returned. The match
criteria for each attribute and the exact sorting order is
defined below.
</para>
<para>
The interpretations of the various GLX visual attributes are as follows:
</para>
<variablelist>
<varlistentry>
<term><constant>GLX_FBCONFIG_ID</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by a valid XID that indicates the desired GLX frame
buffer configuration. When a <constant>GLX_FBCONFIG_ID</constant> is specified, all
attributes are ignored. The default value is <constant>GLX_DONT_CARE</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_BUFFER_SIZE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by a nonnegative integer that indicates the desired
color index buffer size.
The smallest index buffer of at least the specified size is preferred.
This attribute is ignored if <constant>GLX_COLOR_INDEX_BIT</constant> is not set in
<constant>GLX_RENDER_TYPE</constant>. The default value is 0.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_LEVEL</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by an integer buffer-level specification.
This specification is honored exactly.
Buffer level 0 corresponds to the default frame buffer of the display.
Buffer level 1 is the first overlay frame buffer, level two the second
overlay frame buffer, and so on.
Negative buffer levels correspond to underlay frame buffers.
The default value is 0.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_DOUBLEBUFFER</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by <constant>True</constant> or <constant>False</constant>. If
<constant>True</constant> is specified, then
only double-buffered frame buffer configurations are considered;
if
<constant>False</constant> is specified, then
only single-buffered frame buffer configurations are considered.
The default value is <constant>GLX_DONT_CARE</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_STEREO</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by <constant>True</constant> or <constant>False</constant>. If
<constant>True</constant> is specified, then
only stereo frame buffer configurations are considered;
if
<constant>False</constant> is specified, then
only monoscopic frame buffer configurations are considered.
The default value is <constant>False</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_AUX_BUFFERS</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by a nonnegative integer that indicates the desired
number of auxiliary buffers.
Configurations with the
smallest number of auxiliary buffers that meet or exceed
the specified number are preferred.
The default value is 0.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_RED_SIZE</constant>, <constant>GLX_GREEN_SIZE</constant>, <constant>GLX_BLUE_SIZE</constant>, <constant>GLX_ALPHA_SIZE</constant></term>
<listitem>
<para>
</para>
<para>
Each attribute, if present, must be followed by a nonnegative minimum size
specification or <constant>GLX_DONT_CARE</constant>.
The largest available total RGBA color buffer size (sum of <constant>GLX_RED_SIZE</constant>,
<constant>GLX_GREEN_SIZE</constant>, <constant>GLX_BLUE_SIZE</constant>, and <constant>GLX_ALPHA_SIZE</constant>)
of at least the minimum size specified for each color component is preferred.
If the requested number of bits for a color component is 0 or
<constant>GLX_DONT_CARE</constant>, it is not considered. The default value for each color
component is 0.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_DEPTH_SIZE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by a nonnegative minimum size specification.
If this value is zero,
frame buffer configurations with no depth buffer are preferred.
Otherwise, the largest available depth buffer of at least the minimum size
is preferred.
The default value is 0.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_STENCIL_SIZE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by a nonnegative integer that indicates the desired
number of stencil bitplanes.
The smallest stencil buffer of at least the specified size is preferred.
If the desired value is zero,
frame buffer configurations with no stencil buffer are preferred.
The default value is 0.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_ACCUM_RED_SIZE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by a nonnegative minimum size specification.
If this value is zero,
frame buffer configurations with no red accumulation buffer are preferred.
Otherwise, the largest possible red accumulation buffer
of at least the minimum size is preferred.
The default value is 0.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_ACCUM_GREEN_SIZE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by a nonnegative minimum size specification.
If this value is zero,
frame buffer configurations with no green accumulation buffer are preferred.
Otherwise, the largest possible green accumulation buffer
of at least the minimum size is preferred.
The default value is 0.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_ACCUM_BLUE_SIZE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by a nonnegative minimum size specification.
If this value is zero,
frame buffer configurations with no blue accumulation buffer are preferred.
Otherwise, the largest possible blue accumulation buffer
of at least the minimum size is preferred.
The default value is 0.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_ACCUM_ALPHA_SIZE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by a nonnegative minimum size specification.
If this value is zero,
frame buffer configurations with no alpha accumulation buffer are preferred.
Otherwise, the largest possible alpha accumulation buffer
of at least the minimum size is preferred.
The default value is 0.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_RENDER_TYPE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by a mask indicating which OpenGL rendering modes
the frame buffer configuration must support.
Valid bits are <constant>GLX_RGBA_BIT</constant> and
<constant>GLX_COLOR_INDEX_BIT</constant>. If the mask is
set to <constant>GLX_RGBA_BIT</constant> | <constant>GLX_COLOR_INDEX_BIT</constant>,
then only frame buffer configurations that can be bound to both
RGBA contexts and color index contexts will be considered.
The default value is <constant>GLX_RGBA_BIT</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_DRAWABLE_TYPE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by a mask indicating which GLX drawable types
the frame buffer configuration must support. Valid bits are
<constant>GLX_WINDOW_BIT</constant>,
<constant>GLX_PIXMAP_BIT</constant>, and <constant>GLX_PBUFFER_BIT</constant>.
For example, if mask is set to
<constant>GLX_WINDOW_BIT</constant> | <constant>GLX_PIXMAP_BIT</constant>,
only frame buffer configurations that support both windows and GLX pixmaps
will be considered.
The default value is <constant>GLX_WINDOW_BIT</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_X_RENDERABLE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by <constant>True</constant> or <constant>False</constant>.
If <constant>True</constant> is specified, then only frame buffer configurations that
have associated X visuals (and can be used to render to Windows and/or
GLX pixmaps) will be considered.
The default value is <constant>GLX_DONT_CARE</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_X_VISUAL_TYPE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by one of
<constant>GLX_TRUE_COLOR</constant>,
<constant>GLX_DIRECT_COLOR</constant>,
<constant>GLX_PSEUDO_COLOR</constant>,
<constant>GLX_STATIC_COLOR</constant>,
<constant>GLX_GRAY_SCALE</constant>, or
<constant>GLX_STATIC_GRAY</constant>, indicating the desired X visual type.
Not all frame buffer configurations have an associated X visual. If
<constant>GLX_DRAWABLE_TYPE</constant> is specified in <parameter>attrib_list</parameter> and the
mask that follows does not have <constant>GLX_WINDOW_BIT</constant> set,
then this value is ignored. It is also ignored if
<constant>GLX_X_RENDERABLE</constant> is specified as <constant>False</constant>.
RGBA rendering may be supported for visuals of type
<constant>GLX_TRUE_COLOR</constant>,
<constant>GLX_DIRECT_COLOR</constant>,
<constant>GLX_PSEUDO_COLOR</constant>,
or <constant>GLX_STATIC_COLOR</constant>,
but color index rendering is only supported for visuals of type
<constant>GLX_PSEUDO_COLOR</constant> or <constant>GLX_STATIC_COLOR</constant>
(i.e., single-channel visuals).
The tokens <constant>GLX_GRAY_SCALE</constant> and <constant>GLX_STATIC_GRAY</constant> will
not match current OpenGL enabled visuals, but are included for future use.
The default value for <constant>GLX_X_VISUAL_TYPE</constant> is <constant>GLX_DONT_CARE</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_CONFIG_CAVEAT</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by one of
<constant>GLX_NONE</constant>,
<constant>GLX_SLOW_CONFIG</constant>,
<constant>GLX_NON_CONFORMANT_CONFIG</constant>.
If <constant>GLX_NONE</constant> is specified, then only frame buffer configurations with
no caveats will be considered; if <constant>GLX_SLOW_CONFIG</constant>
is specified, then only slow frame buffer configurations will be considered; if
<constant>GLX_NON_CONFORMANT_CONFIG</constant> is specified, then only
nonconformant frame buffer configurations will be considered.
The default value is <constant>GLX_DONT_CARE</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_TRANSPARENT_TYPE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by one of
<constant>GLX_NONE</constant>,
<constant>GLX_TRANSPARENT_RGB</constant>,
<constant>GLX_TRANSPARENT_INDEX</constant>.
If <constant>GLX_NONE</constant> is specified, then only opaque
frame buffer configurations will be considered; if <constant>GLX_TRANSPARENT_RGB</constant>
is specified, then only transparent
frame buffer configurations that support RGBA rendering will be considered;
if <constant>GLX_TRANSPARENT_INDEX</constant> is specified,
then only transparent frame buffer configurations that support color
index rendering will be considered.
The default value is <constant>GLX_NONE</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_TRANSPARENT_INDEX_VALUE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by an integer value indicating the transparent
index value; the value must be between 0 and the maximum
frame buffer value for indices.
Only frame buffer configurations that use the
specified transparent index value will be considered.
The default value is <constant>GLX_DONT_CARE</constant>.
This attribute is ignored unless <constant>GLX_TRANSPARENT_TYPE</constant> is
included in <parameter>attrib_list</parameter> and specified as <constant>GLX_TRANSPARENT_INDEX</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_TRANSPARENT_RED_VALUE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by an integer value indicating the transparent
red value; the value must be between 0 and the maximum
frame buffer value for red.
Only frame buffer configurations that use the
specified transparent red value will be considered.
The default value is <constant>GLX_DONT_CARE</constant>.
This attribute is
ignored unless <constant>GLX_TRANSPARENT_TYPE</constant> is included in
<parameter>attrib_list</parameter> and specified as <constant>GLX_TRANSPARENT_RGB</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_TRANSPARENT_GREEN_VALUE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by an integer value indicating the transparent
green value; the value must be between 0 and the maximum
frame buffer value for green.
Only frame buffer configurations that use the
specified transparent green value will be considered.
The default value is <constant>GLX_DONT_CARE</constant>.
This attribute is
ignored unless <constant>GLX_TRANSPARENT_TYPE</constant> is included in
<parameter>attrib_list</parameter> and specified as <constant>GLX_TRANSPARENT_RGB</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_TRANSPARENT_BLUE_VALUE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by an integer value indicating the transparent
blue value; the value must be between 0 and the maximum
frame buffer value for blue.
Only frame buffer configurations that use the
specified transparent blue value will be considered.
The default value is <constant>GLX_DONT_CARE</constant>.
This attribute is ignored unless <constant>GLX_TRANSPARENT_TYPE</constant> is included in
<parameter>attrib_list</parameter> and specified as <constant>GLX_TRANSPARENT_RGB</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><constant>GLX_TRANSPARENT_ALPHA_VALUE</constant></term>
<listitem>
<para>
</para>
<para>
Must be followed by an integer value indicating the transparent
alpha value; the value must be between 0 and the maximum
frame buffer value for alpha.
Only frame buffer configurations that use the
specified transparent alpha value will be considered.
The default value is <constant>GLX_DONT_CARE</constant>.
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
When more than one GLX frame buffer configuration matches the specified attributes,
a list of matching configurations is returned. The list is sorted
according to the following precedence rules, which are applied in ascending
order (i.e., configurations
that are considered equal by a lower numbered rule are sorted by the higher
numbered rule):
</para>
<variablelist>
<varlistentry>
<term>1.</term>
<listitem>
<para>
By <constant>GLX_CONFIG_CAVEAT</constant> where the precedence is <constant>GLX_NONE</constant>,
<constant>GLX_SLOW_CONFIG</constant>, and <constant>GLX_NON_CONFORMANT_CONFIG</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>2.</term>
<listitem>
<para>
Larger total number of RGBA color components
(<constant>GLX_RED_SIZE</constant>, <constant>GLX_GREEN_SIZE</constant>, <constant>GLX_BLUE_SIZE</constant>,
plus <constant>GLX_ALPHA_SIZE</constant>)
that have higher number of bits. If the requested number of bits in
<parameter>attrib_list</parameter> is zero or <constant>GLX_DONT_CARE</constant> for a particular color
component, then the number of bits for that component is not considered.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>3.</term>
<listitem>
<para>
Smaller <constant>GLX_BUFFER_SIZE</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>4.</term>
<listitem>
<para>
Single buffered configuration (<constant>GLX_DOUBLEBUFFER</constant> being
<constant>False</constant> precedes a double buffered one.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>5.</term>
<listitem>
<para>
Smaller <constant>GLX_AUX_BUFFERS</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>6.</term>
<listitem>
<para>
Larger <constant>GLX_DEPTH_SIZE</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>7.</term>
<listitem>
<para>
Smaller <constant>GLX_STENCIL_SIZE</constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>8.</term>
<listitem>
<para>
Larger total number of accumulation buffer color components
(<constant>GLX_ACCUM_RED_SIZE</constant>, <constant>GLX_ACCUM_GREEN_SIZE</constant>,
<constant>GLX_ACCUM_BLUE_SIZE</constant>, plus <constant>GLX_ACCUM_ALPHA_SIZE</constant>) that have
higher number of bits. If the requested number of bits in <parameter>attrib_list</parameter> is
zero or <constant>GLX_DONT_CARE</constant> for a particular color component, then the
number of bits for that component is not considered.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>9.</term>
<listitem>
<para>
By <constant>GLX_X_VISUAL_TYPE</constant> where the precedence order is
<constant>GLX_TRUE_COLOR</constant>, <constant>GLX_DIRECT_COLOR</constant>, <constant>GLX_PSEUDO_COLOR</constant>,
<constant>GLX_STATIC_COLOR</constant>, <constant>GLX_GRAY_SCALE</constant>, <constant>GLX_STATIC_GRAY</constant>.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="examples"><title>Examples</title>
<para>
</para>
<variablelist>
<varlistentry>
<term><parameter>attrib_list</parameter> =</term>
<listitem>
<para>
{<constant>GLX_RENDER_TYPE</constant>, <constant>GLX_RGBA_BIT</constant>,
<constant>GLX_RED_SIZE</constant>, 4,
<constant>GLX_GREEN_SIZE</constant>, 4,
<constant>GLX_BLUE_SIZE</constant>, 4,
<constant>None</constant>};
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
Specifies a frame buffer configuration that supports RGBA rendering
and exists in the normal frame buffer,
not an overlay or underlay buffer.
The returned visual supports at least four bits each of red,
green, and blue,
and possibly no bits of alpha.
It does not support stereo display.
It may or may not have one or more auxiliary color buffers,
a back buffer,
a depth buffer,
a stencil buffer,
or an accumulation buffer.
</para>
</refsect1>
<refsect1 id="notes"><title>Notes</title>
<para>
<function>glXChooseFBConfig</function> is available only if the GLX version is 1.3 or greater.
</para>
<para>
If the GLX version is 1.1 or 1.0, the GL version must be 1.0.
If the GLX version is 1.2, then the GL version must be 1.1.
If the GLX version is 1.3, then the GL version must be 1.2.
</para>
<para>
<citerefentry><refentrytitle>glXGetFBConfigs</refentrytitle></citerefentry> and <citerefentry><refentrytitle>glXGetFBConfigAttrib</refentrytitle></citerefentry> can
be used to implement selection algorithms other than the generic
one implemented by <function>glXChooseFBConfig</function>. Call <function>glXChooseFBConfig</function> to retrieve all the frame buffer configurations
on a particular screen or, alternatively, all the frame buffer configurations with
a particular set of attributes. Next, call <citerefentry><refentrytitle>glXGetFBConfigAttrib</refentrytitle></citerefentry>
to retrieve additional attributes for the frame buffer configurations and then
select between them.
</para>
<para>
GLX implementations are strongly discouraged,
but not proscribed,
from changing the selection algorithm used by <function>glXChooseFBConfig</function>.
Therefore, selections may change from release to release
of the client-side library.
</para>
</refsect1>
<refsect1 id="errors"><title>Errors</title>
<para>
<constant>NULL</constant> is returned if an undefined GLX attribute is
encountered in <parameter>attrib_list</parameter>, if <parameter>screen</parameter> is invalid, or if <parameter>dpy</parameter> does
not support the GLX extension.
</para>
</refsect1>
<refsect1 id="seealso"><title>See Also</title>
<para>
<citerefentry><refentrytitle>glXGetFBConfigAttrib</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glXGetFBConfigs</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glXGetVisualFromFBConfig</refentrytitle></citerefentry>
</para>
</refsect1>
<refsect1 id="Copyright"><title>Copyright</title>
<para>
Copyright <trademark class="copyright"></trademark> 1991-2006
Silicon Graphics, Inc. This document is licensed under the SGI
Free Software B License. For details, see
<ulink url="http://oss.sgi.com/projects/FreeB/">http://oss.sgi.com/projects/FreeB/</ulink>.
</para>
</refsect1>
</refentry>