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

168 lines
8.1 KiB
XML

<?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="glXMakeCurrent">
<refmeta>
<refmetainfo>
<copyright>
<year>1991-2006</year>
<holder>Silicon Graphics, Inc.</holder>
</copyright>
</refmetainfo>
<refentrytitle>glXMakeCurrent</refentrytitle>
<manvolnum>3G</manvolnum>
</refmeta>
<refnamediv>
<refname>glXMakeCurrent</refname>
<refpurpose>attach a GLX context to a window or a GLX pixmap</refpurpose>
</refnamediv>
<refsynopsisdiv><title>C Specification</title>
<funcsynopsis>
<funcprototype>
<funcdef>Bool <function>glXMakeCurrent</function></funcdef>
<paramdef>Display * <parameter>dpy</parameter></paramdef>
<paramdef>GLXDrawable <parameter>drawable</parameter></paramdef>
<paramdef>GLXContext <parameter>ctx</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>drawable</parameter></term>
<listitem>
<para>
Specifies a GLX drawable.
Must be either an X window ID or a GLX pixmap ID.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>ctx</parameter></term>
<listitem>
<para>
Specifies a GLX rendering context that is to be attached to <parameter>drawable</parameter>.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="description"><title>Description</title>
<para>
<function>glXMakeCurrent</function> does two things:
It makes <parameter>ctx</parameter> the current GLX rendering context of the calling thread,
replacing the previously current context if there was one,
and it attaches <parameter>ctx</parameter> to a GLX drawable,
either a window or a GLX pixmap.
As a result of these two actions,
subsequent GL rendering calls
use rendering context <parameter>ctx</parameter> to modify GLX drawable <parameter>drawable</parameter> (for
reading and writing).
Because <function>glXMakeCurrent</function> always replaces the current rendering context with <parameter>ctx</parameter>,
there can be only one current context per thread.
</para>
<para>
Pending commands to the
previous context, if any, are flushed before it is released.
</para>
<para>
The first time <parameter>ctx</parameter> is made current to any thread,
its viewport is set to the full size of <parameter>drawable</parameter>.
Subsequent calls by any thread to <function>glXMakeCurrent</function> with <parameter>ctx</parameter>
have no effect on its viewport.
</para>
<para>
To release the current context without assigning a new one,
call <function>glXMakeCurrent</function> with <parameter>drawable</parameter> set to <constant>None</constant> and <parameter>ctx</parameter>
set to <constant>NULL</constant>.
</para>
<para>
<function>glXMakeCurrent</function> returns <constant>True</constant> if it is successful,
<constant>False</constant> otherwise.
If <constant>False</constant> is returned, the previously current rendering context
and drawable (if any) remain unchanged.
</para>
</refsect1>
<refsect1 id="notes"><title>Notes</title>
<para>
A <emphasis>process</emphasis> is a single-execution environment,
implemented in a single address space,
consisting of one or more threads.
</para>
<para>
A <emphasis>thread</emphasis> is one of a set of subprocesses that share
a single address space,
but maintain separate program counters,
stack spaces,
and other related global data.
A <emphasis>thread</emphasis> that is the only member of its subprocess group
is equivalent to a <emphasis>process</emphasis>.
</para>
</refsect1>
<refsect1 id="errors"><title>Errors</title>
<para>
<constant>BadMatch</constant> is generated if <parameter>drawable</parameter> was not
created with the same X screen and visual as <parameter>ctx</parameter>.
It is also generated if <parameter>drawable</parameter> is <constant>None</constant> and <parameter>ctx</parameter> is not
<constant>NULL</constant>.
</para>
<para>
<constant>BadAccess</constant> is generated if <parameter>ctx</parameter> was current to another thread
at the time <function>glXMakeCurrent</function> was called.
</para>
<para>
<constant>GLXBadDrawable</constant> is generated if <parameter>drawable</parameter> is not a valid GLX drawable.
</para>
<para>
<constant>GLXBadContext</constant> is generated if <parameter>ctx</parameter> is not a valid GLX context.
</para>
<para>
<constant>GLXBadContextState</constant> is generated if <function>glXMakeCurrent</function> is executed between
the execution of <citerefentry><refentrytitle>glBegin</refentrytitle></citerefentry> and the corresponding execution of <citerefentry><refentrytitle>glEnd</refentrytitle></citerefentry>.
</para>
<para>
<constant>GLXBadContextState</constant> is also generated if the rendering context current
to the calling thread has GL renderer state <constant>GLX_FEEDBACK</constant> or
<constant>GLX_SELECT</constant>.
</para>
<para>
<constant>GLXBadCurrentWindow</constant> is generated if there are pending GL
commands for the previous context and the current drawable is
a window that is no longer valid.
</para>
<para>
<constant>BadAlloc</constant> may be generated if the server has delayed allocation
of ancillary buffers until <function>glXMakeCurrent</function> is called, only to find that it has
insufficient resources to complete the allocation.
</para>
</refsect1>
<refsect1 id="seealso"><title>See Also</title>
<para>
<citerefentry><refentrytitle>glXCreateContext</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glXCreateGLXPixmap</refentrytitle></citerefentry>
<citerefentry><refentrytitle>glXGetCurrentContext</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glXGetCurrentDisplay</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glXGetCurrentDrawable</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glXGetCurrentReadDrawable</refentrytitle></citerefentry>,
<citerefentry><refentrytitle>glXMakeContextCurrent</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>