1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" pref:renderer="mathplayer-dl"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="stylesheet" type="text/css" href="opengl-man.css" /><title>glLogicOp - OpenGL 4 Reference Pages</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1" /></head><body><div class="refentry"><a id="glLogicOp"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>glLogicOp — specify a logical pixel operation for rendering</p></div><div class="refsynopsisdiv"><h2>C Specification</h2><div class="funcsynopsis"><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <strong class="fsfunc">glLogicOp</strong>(</code></td><td>GLenum <var class="pdparam">opcode</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a id="parameters"></a><h2>Parameters</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="parameter"><code>opcode</code></em></span></dt><dd><p>
Specifies a symbolic constant that selects a logical operation.
The following symbols are accepted:
<code class="constant">GL_CLEAR</code>,
<code class="constant">GL_SET</code>,
<code class="constant">GL_COPY</code>,
<code class="constant">GL_COPY_INVERTED</code>,
<code class="constant">GL_NOOP</code>,
<code class="constant">GL_INVERT</code>,
<code class="constant">GL_AND</code>,
<code class="constant">GL_NAND</code>,
<code class="constant">GL_OR</code>,
<code class="constant">GL_NOR</code>,
<code class="constant">GL_XOR</code>,
<code class="constant">GL_EQUIV</code>,
<code class="constant">GL_AND_REVERSE</code>,
<code class="constant">GL_AND_INVERTED</code>,
<code class="constant">GL_OR_REVERSE</code>, and
<code class="constant">GL_OR_INVERTED</code>. The initial value is <code class="constant">GL_COPY</code>.
</p></dd></dl></div></div><div class="refsect1"><a id="description"></a><h2>Description</h2><p>
<code class="function">glLogicOp</code> specifies a logical operation that,
when enabled,
is applied between the incoming RGBA color
and the RGBA color at the corresponding location in the
frame buffer.
To enable or disable the logical operation, call
<a class="citerefentry" href="glEnable.xml"><span class="citerefentry"><span class="refentrytitle">glEnable</span></span></a> and <a class="citerefentry" href="glDisable.xml"><span class="citerefentry"><span class="refentrytitle">glDisable</span></span></a>
using the symbolic constant <code class="constant">GL_COLOR_LOGIC_OP</code>. The initial value is
disabled.
</p><p>
</p><div class="informaltable"><table style="border-collapse: collapse;border-top: 2px solid ; border-bottom: 2px solid ; border-left: 2px solid ; border-right: 2px solid ; "><colgroup><col align="left" /><col align="center" /></colgroup><thead><tr><th style="border-right: 2px solid ; border-bottom: 2px solid ; " align="left">
<span class="bold"><strong> Opcode </strong></span>
</th><th style="border-bottom: 2px solid ; " align="center">
<span class="bold"><strong> Resulting Operation </strong></span>
</th></tr></thead><tbody><tr><td style="border-right: 2px solid ; border-bottom: 2px solid ; " align="left">
<code class="constant">GL_CLEAR</code>
</td><td style="border-bottom: 2px solid ; " align="center">
0
</td></tr><tr><td style="border-right: 2px solid ; border-bottom: 2px solid ; " align="left">
<code class="constant">GL_SET</code>
</td><td style="border-bottom: 2px solid ; " align="center">
1
</td></tr><tr><td style="border-right: 2px solid ; border-bottom: 2px solid ; " align="left">
<code class="constant">GL_COPY</code>
</td><td style="border-bottom: 2px solid ; " align="center">
s
</td></tr><tr><td style="border-right: 2px solid ; border-bottom: 2px solid ; " align="left">
<code class="constant">GL_COPY_INVERTED</code>
</td><td style="border-bottom: 2px solid ; " align="center">
~s
</td></tr><tr><td style="border-right: 2px solid ; border-bottom: 2px solid ; " align="left">
<code class="constant">GL_NOOP</code>
</td><td style="border-bottom: 2px solid ; " align="center">
d
</td></tr><tr><td style="border-right: 2px solid ; border-bottom: 2px solid ; " align="left">
<code class="constant">GL_INVERT</code>
</td><td style="border-bottom: 2px solid ; " align="center">
~d
</td></tr><tr><td style="border-right: 2px solid ; border-bottom: 2px solid ; " align="left">
<code class="constant">GL_AND</code>
</td><td style="border-bottom: 2px solid ; " align="center">
s & d
</td></tr><tr><td style="border-right: 2px solid ; border-bottom: 2px solid ; " align="left">
<code class="constant">GL_NAND</code>
</td><td style="border-bottom: 2px solid ; " align="center">
~(s & d)
</td></tr><tr><td style="border-right: 2px solid ; border-bottom: 2px solid ; " align="left">
<code class="constant">GL_OR</code>
</td><td style="border-bottom: 2px solid ; " align="center">
s | d
</td></tr><tr><td style="border-right: 2px solid ; border-bottom: 2px solid ; " align="left">
<code class="constant">GL_NOR</code>
</td><td style="border-bottom: 2px solid ; " align="center">
~(s | d)
</td></tr><tr><td style="border-right: 2px solid ; border-bottom: 2px solid ; " align="left">
<code class="constant">GL_XOR</code>
</td><td style="border-bottom: 2px solid ; " align="center">
s ^ d
</td></tr><tr><td style="border-right: 2px solid ; border-bottom: 2px solid ; " align="left">
<code class="constant">GL_EQUIV</code>
</td><td style="border-bottom: 2px solid ; " align="center">
~(s ^ d)
</td></tr><tr><td style="border-right: 2px solid ; border-bottom: 2px solid ; " align="left">
<code class="constant">GL_AND_REVERSE</code>
</td><td style="border-bottom: 2px solid ; " align="center">
s & ~d
</td></tr><tr><td style="border-right: 2px solid ; border-bottom: 2px solid ; " align="left">
<code class="constant">GL_AND_INVERTED</code>
</td><td style="border-bottom: 2px solid ; " align="center">
~s & d
</td></tr><tr><td style="border-right: 2px solid ; border-bottom: 2px solid ; " align="left">
<code class="constant">GL_OR_REVERSE</code>
</td><td style="border-bottom: 2px solid ; " align="center">
s | ~d
</td></tr><tr><td style="border-right: 2px solid ; " align="left">
<code class="constant">GL_OR_INVERTED</code>
</td><td style="" align="center">
~s | d
</td></tr></tbody></table></div><p>
<em class="parameter"><code>opcode</code></em> is a symbolic constant chosen from the list above.
In the explanation of the logical operations,
<span class="emphasis"><em>s</em></span> represents the incoming color and
<span class="emphasis"><em>d</em></span> represents the color in the frame buffer.
Standard C-language operators are used.
As these bitwise operators suggest,
the logical operation is applied independently to each bit pair of the
source and destination colors.
</p></div><div class="refsect1"><a id="notes"></a><h2>Notes</h2><p>
When more than one RGBA color buffer is enabled for drawing,
logical operations are performed separately for each enabled buffer,
using for the destination value the contents of that buffer
(see <a class="citerefentry" href="glDrawBuffer.xml"><span class="citerefentry"><span class="refentrytitle">glDrawBuffer</span></span></a>).
</p><p>
Logic operations have no effect on floating point draw buffers. However, if
<code class="constant">GL_COLOR_LOGIC_OP</code> is enabled, blending is still disabled
in this case.
</p></div><div class="refsect1"><a id="errors"></a><h2>Errors</h2><p>
<code class="constant">GL_INVALID_ENUM</code> is generated if <em class="parameter"><code>opcode</code></em> is not an accepted value.
</p></div><div class="refsect1"><a id="associatedgets"></a><h2>Associated Gets</h2><p>
<a class="citerefentry" href="glGet.xml"><span class="citerefentry"><span class="refentrytitle">glGet</span></span></a> with argument <code class="constant">GL_LOGIC_OP_MODE</code>.
</p><p>
<a class="citerefentry" href="glIsEnabled.xml"><span class="citerefentry"><span class="refentrytitle">glIsEnabled</span></span></a> with argument <code class="constant">GL_COLOR_LOGIC_OP</code>.
</p></div><div class="refsect1"><a id="seealso"></a><h2>See Also</h2><p>
<a class="citerefentry" href="glBlendFunc.xml"><span class="citerefentry"><span class="refentrytitle">glBlendFunc</span></span></a>,
<a class="citerefentry" href="glDrawBuffer.xml"><span class="citerefentry"><span class="refentrytitle">glDrawBuffer</span></span></a>,
<a class="citerefentry" href="glEnable.xml"><span class="citerefentry"><span class="refentrytitle">glEnable</span></span></a>,
<a class="citerefentry" href="glStencilOp.xml"><span class="citerefentry"><span class="refentrytitle">glStencilOp</span></span></a>
</p></div><div class="refsect1"><a id="Copyright"></a><h2>Copyright</h2><p>
Copyright <span class="trademark"></span>© 1991-2006 Silicon Graphics, Inc.
Copyright <span class="trademark"></span>© 2010-2013 Khronos Group.
This document is licensed under the SGI Free Software B License.
For details, see
<a class="ulink" href="http://oss.sgi.com/projects/FreeB/" target="_top">http://oss.sgi.com/projects/FreeB/</a>.
</p></div></div></body></html>
|