1 <?xml version=
"1.0" encoding=
"UTF-8"?>
2 <!DOCTYPE book PUBLIC
"-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
3 "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
4 <refentry id=
"glMultTransposeMatrix">
9 <holder>Silicon Graphics, Inc.
</holder>
12 <refentrytitle>glMultTransposeMatrix
</refentrytitle>
13 <manvolnum>3G
</manvolnum>
16 <refname>glMultTransposeMatrix
</refname>
17 <refpurpose>multiply the current matrix with the specified row-major ordered matrix
</refpurpose>
19 <refsynopsisdiv><title>C Specification
</title>
22 <funcdef>void
<function>glMultTransposeMatrixd
</function></funcdef>
23 <paramdef>const GLdouble *
<parameter>m
</parameter></paramdef>
28 <funcdef>void
<function>glMultTransposeMatrixf
</function></funcdef>
29 <paramdef>const GLfloat *
<parameter>m
</parameter></paramdef>
33 <!-- eqn: ignoring delim $$ -->
34 <refsect1 id=
"parameters"><title>Parameters
</title>
37 <term><parameter>m
</parameter></term>
40 Points to
16 consecutive values that are used as the elements of
42 <inlineequation><mml:math>
43 <!-- eqn: 4 times 4:-->
46 <mml:mo>×</mml:mo>
49 </mml:math></inlineequation>
56 <refsect1 id=
"description"><title>Description
</title>
58 <function>glMultTransposeMatrix
</function> multiplies the current matrix with the one specified using
<parameter>m
</parameter>, and
59 replaces the current matrix with the product.
62 The current matrix is determined by the current matrix mode (see
63 <citerefentry><refentrytitle>glMatrixMode
</refentrytitle></citerefentry>). It is either the projection matrix, modelview matrix,
64 or the texture matrix.
67 <refsect1 id=
"examples"><title>Examples
</title>
69 If the current matrix is
70 <inlineequation><mml:math><mml:mi mathvariant=
"italic">C
</mml:mi></mml:math></inlineequation>
73 <inlineequation><mml:math>
74 <!-- eqn: v = (v[0], v[1], v[2], v[3]):-->
76 <mml:mi mathvariant=
"italic">v
</mml:mi>
78 <mml:mfenced open=
"(" close=
")">
80 <mml:mi mathvariant=
"italic">v
</mml:mi>
82 <mml:mfenced open=
"[" close=
"]">
87 <mml:mi mathvariant=
"italic">v
</mml:mi>
89 <mml:mfenced open=
"[" close=
"]">
94 <mml:mi mathvariant=
"italic">v
</mml:mi>
96 <mml:mfenced open=
"[" close=
"]">
101 <mml:mi mathvariant=
"italic">v
</mml:mi>
102 <mml:mo>⁡</mml:mo>
103 <mml:mfenced open=
"[" close=
"]">
109 </mml:math></inlineequation>,
110 then the current transformation is
111 <inlineequation><mml:math>
112 <!-- eqn: C times v:-->
114 <mml:mi mathvariant=
"italic">C
</mml:mi>
115 <mml:mo>×</mml:mo>
116 <mml:mi mathvariant=
"italic">v
</mml:mi>
118 </mml:math></inlineequation>,
122 <informalequation><mml:math>
123 <!-- eqn: left ( matrix { ccol { c[0] above c[1] above c[2] above c[3] } ccol { c[4] above c[5] above c[6] above c[7] } ccol { c[8] above c[9] above c[10] above c[11] } ccol { c[12] above c[13] above c[14] above c[15] } } right ) times left ( matrix { ccol { v[0] above v[1] above v[2] above v[3] } } right ):-->
125 <mml:mfenced open=
"(" close=
")">
130 <mml:mi mathvariant=
"italic">c
</mml:mi>
131 <mml:mo>⁡</mml:mo>
132 <mml:mfenced open=
"[" close=
"]">
139 <mml:mi mathvariant=
"italic">c
</mml:mi>
140 <mml:mo>⁡</mml:mo>
141 <mml:mfenced open=
"[" close=
"]">
148 <mml:mi mathvariant=
"italic">c
</mml:mi>
149 <mml:mo>⁡</mml:mo>
150 <mml:mfenced open=
"[" close=
"]">
157 <mml:mi mathvariant=
"italic">c
</mml:mi>
158 <mml:mo>⁡</mml:mo>
159 <mml:mfenced open=
"[" close=
"]">
168 <mml:mi mathvariant=
"italic">c
</mml:mi>
169 <mml:mo>⁡</mml:mo>
170 <mml:mfenced open=
"[" close=
"]">
177 <mml:mi mathvariant=
"italic">c
</mml:mi>
178 <mml:mo>⁡</mml:mo>
179 <mml:mfenced open=
"[" close=
"]">
186 <mml:mi mathvariant=
"italic">c
</mml:mi>
187 <mml:mo>⁡</mml:mo>
188 <mml:mfenced open=
"[" close=
"]">
195 <mml:mi mathvariant=
"italic">c
</mml:mi>
196 <mml:mo>⁡</mml:mo>
197 <mml:mfenced open=
"[" close=
"]">
206 <mml:mi mathvariant=
"italic">c
</mml:mi>
207 <mml:mo>⁡</mml:mo>
208 <mml:mfenced open=
"[" close=
"]">
215 <mml:mi mathvariant=
"italic">c
</mml:mi>
216 <mml:mo>⁡</mml:mo>
217 <mml:mfenced open=
"[" close=
"]">
224 <mml:mi mathvariant=
"italic">c
</mml:mi>
225 <mml:mo>⁡</mml:mo>
226 <mml:mfenced open=
"[" close=
"]">
233 <mml:mi mathvariant=
"italic">c
</mml:mi>
234 <mml:mo>⁡</mml:mo>
235 <mml:mfenced open=
"[" close=
"]">
244 <mml:mi mathvariant=
"italic">c
</mml:mi>
245 <mml:mo>⁡</mml:mo>
246 <mml:mfenced open=
"[" close=
"]">
253 <mml:mi mathvariant=
"italic">c
</mml:mi>
254 <mml:mo>⁡</mml:mo>
255 <mml:mfenced open=
"[" close=
"]">
262 <mml:mi mathvariant=
"italic">c
</mml:mi>
263 <mml:mo>⁡</mml:mo>
264 <mml:mfenced open=
"[" close=
"]">
271 <mml:mi mathvariant=
"italic">c
</mml:mi>
272 <mml:mo>⁡</mml:mo>
273 <mml:mfenced open=
"[" close=
"]">
281 <mml:mo>×</mml:mo>
282 <mml:mfenced open=
"(" close=
")">
287 <mml:mi mathvariant=
"italic">v
</mml:mi>
288 <mml:mo>⁡</mml:mo>
289 <mml:mfenced open=
"[" close=
"]">
298 <mml:mi mathvariant=
"italic">v
</mml:mi>
299 <mml:mo>⁡</mml:mo>
300 <mml:mfenced open=
"[" close=
"]">
309 <mml:mi mathvariant=
"italic">v
</mml:mi>
310 <mml:mo>⁡</mml:mo>
311 <mml:mfenced open=
"[" close=
"]">
320 <mml:mi mathvariant=
"italic">v
</mml:mi>
321 <mml:mo>⁡</mml:mo>
322 <mml:mfenced open=
"[" close=
"]">
331 </mml:math></informalequation>
336 Calling
<function>glMultTransposeMatrix
</function> with an argument of
337 <inlineequation><mml:math>
338 <!-- eqn: m = left { m[0], m[1], ..., m[15] right }:-->
341 <mml:mi mathvariant=
"italic">m
</mml:mi>
342 <mml:mo>⁡</mml:mo>
343 <mml:mfenced open=
"[" close=
"]">
348 <mml:mfenced open=
"{" close=
"}">
350 <mml:mi mathvariant=
"italic">m
</mml:mi>
351 <mml:mo>⁡</mml:mo>
352 <mml:mfenced open=
"[" close=
"]">
357 <mml:mi mathvariant=
"italic">m
</mml:mi>
358 <mml:mo>⁡</mml:mo>
359 <mml:mfenced open=
"[" close=
"]">
363 <mml:mi mathvariant=
"italic">...
</mml:mi>
365 <mml:mi mathvariant=
"italic">m
</mml:mi>
366 <mml:mo>⁡</mml:mo>
367 <mml:mfenced open=
"[" close=
"]">
373 </mml:math></inlineequation>
374 replaces the current transformation with
375 <inlineequation><mml:math>
376 <!-- eqn: (C times M) times v:-->
378 <mml:mfenced open=
"(" close=
")">
380 <mml:mi mathvariant=
"italic">C
</mml:mi>
381 <mml:mo>×</mml:mo>
382 <mml:mi mathvariant=
"italic">M
</mml:mi>
385 <mml:mo>×</mml:mo>
386 <mml:mi mathvariant=
"italic">v
</mml:mi>
388 </mml:math></inlineequation>,
392 <informalequation><mml:math>
393 <!-- eqn: left ( matrix { ccol { c[0] above c[1] above c[2] above c[3] } ccol { c[4] above c[5] above c[6] above c[7] } ccol { c[8] above c[9] above c[10] above c[11] } ccol { c[12] above c[13] above c[14] above c[15] } } right ) times left ( matrix { ccol { m[0] above m[4] above m[8] above m[12] } ccol { m[1] above m[5] above m[9] above m[13] } ccol { m[2] above m[6] above m[10] above m[14] } ccol { m[3] above m[7] above m[11] above m[15] } } right ) times left ( matrix { ccol { v[0] above v[1] above v[2] above v[3] } } right ):-->
395 <mml:mfenced open=
"(" close=
")">
400 <mml:mi mathvariant=
"italic">c
</mml:mi>
401 <mml:mo>⁡</mml:mo>
402 <mml:mfenced open=
"[" close=
"]">
409 <mml:mi mathvariant=
"italic">c
</mml:mi>
410 <mml:mo>⁡</mml:mo>
411 <mml:mfenced open=
"[" close=
"]">
418 <mml:mi mathvariant=
"italic">c
</mml:mi>
419 <mml:mo>⁡</mml:mo>
420 <mml:mfenced open=
"[" close=
"]">
427 <mml:mi mathvariant=
"italic">c
</mml:mi>
428 <mml:mo>⁡</mml:mo>
429 <mml:mfenced open=
"[" close=
"]">
438 <mml:mi mathvariant=
"italic">c
</mml:mi>
439 <mml:mo>⁡</mml:mo>
440 <mml:mfenced open=
"[" close=
"]">
447 <mml:mi mathvariant=
"italic">c
</mml:mi>
448 <mml:mo>⁡</mml:mo>
449 <mml:mfenced open=
"[" close=
"]">
456 <mml:mi mathvariant=
"italic">c
</mml:mi>
457 <mml:mo>⁡</mml:mo>
458 <mml:mfenced open=
"[" close=
"]">
465 <mml:mi mathvariant=
"italic">c
</mml:mi>
466 <mml:mo>⁡</mml:mo>
467 <mml:mfenced open=
"[" close=
"]">
476 <mml:mi mathvariant=
"italic">c
</mml:mi>
477 <mml:mo>⁡</mml:mo>
478 <mml:mfenced open=
"[" close=
"]">
485 <mml:mi mathvariant=
"italic">c
</mml:mi>
486 <mml:mo>⁡</mml:mo>
487 <mml:mfenced open=
"[" close=
"]">
494 <mml:mi mathvariant=
"italic">c
</mml:mi>
495 <mml:mo>⁡</mml:mo>
496 <mml:mfenced open=
"[" close=
"]">
503 <mml:mi mathvariant=
"italic">c
</mml:mi>
504 <mml:mo>⁡</mml:mo>
505 <mml:mfenced open=
"[" close=
"]">
514 <mml:mi mathvariant=
"italic">c
</mml:mi>
515 <mml:mo>⁡</mml:mo>
516 <mml:mfenced open=
"[" close=
"]">
523 <mml:mi mathvariant=
"italic">c
</mml:mi>
524 <mml:mo>⁡</mml:mo>
525 <mml:mfenced open=
"[" close=
"]">
532 <mml:mi mathvariant=
"italic">c
</mml:mi>
533 <mml:mo>⁡</mml:mo>
534 <mml:mfenced open=
"[" close=
"]">
541 <mml:mi mathvariant=
"italic">c
</mml:mi>
542 <mml:mo>⁡</mml:mo>
543 <mml:mfenced open=
"[" close=
"]">
551 <mml:mo>×</mml:mo>
552 <mml:mfenced open=
"(" close=
")">
557 <mml:mi mathvariant=
"italic">m
</mml:mi>
558 <mml:mo>⁡</mml:mo>
559 <mml:mfenced open=
"[" close=
"]">
566 <mml:mi mathvariant=
"italic">m
</mml:mi>
567 <mml:mo>⁡</mml:mo>
568 <mml:mfenced open=
"[" close=
"]">
575 <mml:mi mathvariant=
"italic">m
</mml:mi>
576 <mml:mo>⁡</mml:mo>
577 <mml:mfenced open=
"[" close=
"]">
584 <mml:mi mathvariant=
"italic">m
</mml:mi>
585 <mml:mo>⁡</mml:mo>
586 <mml:mfenced open=
"[" close=
"]">
595 <mml:mi mathvariant=
"italic">m
</mml:mi>
596 <mml:mo>⁡</mml:mo>
597 <mml:mfenced open=
"[" close=
"]">
604 <mml:mi mathvariant=
"italic">m
</mml:mi>
605 <mml:mo>⁡</mml:mo>
606 <mml:mfenced open=
"[" close=
"]">
613 <mml:mi mathvariant=
"italic">m
</mml:mi>
614 <mml:mo>⁡</mml:mo>
615 <mml:mfenced open=
"[" close=
"]">
622 <mml:mi mathvariant=
"italic">m
</mml:mi>
623 <mml:mo>⁡</mml:mo>
624 <mml:mfenced open=
"[" close=
"]">
633 <mml:mi mathvariant=
"italic">m
</mml:mi>
634 <mml:mo>⁡</mml:mo>
635 <mml:mfenced open=
"[" close=
"]">
642 <mml:mi mathvariant=
"italic">m
</mml:mi>
643 <mml:mo>⁡</mml:mo>
644 <mml:mfenced open=
"[" close=
"]">
651 <mml:mi mathvariant=
"italic">m
</mml:mi>
652 <mml:mo>⁡</mml:mo>
653 <mml:mfenced open=
"[" close=
"]">
660 <mml:mi mathvariant=
"italic">m
</mml:mi>
661 <mml:mo>⁡</mml:mo>
662 <mml:mfenced open=
"[" close=
"]">
671 <mml:mi mathvariant=
"italic">m
</mml:mi>
672 <mml:mo>⁡</mml:mo>
673 <mml:mfenced open=
"[" close=
"]">
680 <mml:mi mathvariant=
"italic">m
</mml:mi>
681 <mml:mo>⁡</mml:mo>
682 <mml:mfenced open=
"[" close=
"]">
689 <mml:mi mathvariant=
"italic">m
</mml:mi>
690 <mml:mo>⁡</mml:mo>
691 <mml:mfenced open=
"[" close=
"]">
698 <mml:mi mathvariant=
"italic">m
</mml:mi>
699 <mml:mo>⁡</mml:mo>
700 <mml:mfenced open=
"[" close=
"]">
708 <mml:mo>×</mml:mo>
709 <mml:mfenced open=
"(" close=
")">
714 <mml:mi mathvariant=
"italic">v
</mml:mi>
715 <mml:mo>⁡</mml:mo>
716 <mml:mfenced open=
"[" close=
"]">
725 <mml:mi mathvariant=
"italic">v
</mml:mi>
726 <mml:mo>⁡</mml:mo>
727 <mml:mfenced open=
"[" close=
"]">
736 <mml:mi mathvariant=
"italic">v
</mml:mi>
737 <mml:mo>⁡</mml:mo>
738 <mml:mfenced open=
"[" close=
"]">
747 <mml:mi mathvariant=
"italic">v
</mml:mi>
748 <mml:mo>⁡</mml:mo>
749 <mml:mfenced open=
"[" close=
"]">
758 </mml:math></informalequation>
764 <inlineequation><mml:math><mml:mi mathvariant=
"italic">v
</mml:mi></mml:math></inlineequation>
766 <inlineequation><mml:math>
767 <!-- eqn: 4 times 1:-->
770 <mml:mo>×</mml:mo>
773 </mml:math></inlineequation>
777 Calling
<function>glMultTransposeMatrix
</function> with matrix
778 <inlineequation><mml:math><mml:mi mathvariant=
"italic">M
</mml:mi></mml:math></inlineequation>
779 is identical in operation to
780 <citerefentry><refentrytitle>glMultMatrix
</refentrytitle></citerefentry> with
781 <inlineequation><mml:math>
782 <!-- eqn: M sup T:-->
783 <mml:msup><mml:mi mathvariant=
"italic">M
</mml:mi>
784 <mml:mi mathvariant=
"italic">T
</mml:mi>
786 </mml:math></inlineequation>,
788 <inlineequation><mml:math><mml:mi mathvariant=
"italic">T
</mml:mi></mml:math></inlineequation>
789 represents the transpose.
792 <refsect1 id=
"notes"><title>Notes
</title>
794 <function>glMultTransposeMatrix
</function> is available only if the GL version is
1.3 or greater.
797 While the elements of the matrix may be specified with
798 single or double precision, the GL may store or operate on these
799 values in less-than-single precision.
802 The order of the multiplication is important. For example, if the current
803 transformation is a rotation, and
<function>glMultTransposeMatrix
</function> is called with a translation matrix,
804 the translation is done directly on the coordinates to be transformed,
805 while the rotation is done on the results of that translation.
808 <refsect1 id=
"errors"><title>Errors
</title>
810 <constant>GL_INVALID_OPERATION
</constant> is generated if
<function>glMultTransposeMatrix
</function>
811 is executed between the execution of
<citerefentry><refentrytitle>glBegin
</refentrytitle></citerefentry>
812 and the corresponding execution of
<citerefentry><refentrytitle>glEnd
</refentrytitle></citerefentry>.
815 <refsect1 id=
"associatedgets"><title>Associated Gets
</title>
817 <citerefentry><refentrytitle>glGet
</refentrytitle></citerefentry> with argument
<constant>GL_MATRIX_MODE
</constant>
820 <citerefentry><refentrytitle>glGet
</refentrytitle></citerefentry> with argument
<constant>GL_COLOR_MATRIX
</constant>
823 <citerefentry><refentrytitle>glGet
</refentrytitle></citerefentry> with argument
<constant>GL_MODELVIEW_MATRIX
</constant>
826 <citerefentry><refentrytitle>glGet
</refentrytitle></citerefentry> with argument
<constant>GL_PROJECTION_MATRIX
</constant>
829 <citerefentry><refentrytitle>glGet
</refentrytitle></citerefentry> with argument
<constant>GL_TEXTURE_MATRIX
</constant>
832 <refsect1 id=
"seealso"><title>See Also
</title>
834 <citerefentry><refentrytitle>glLoadIdentity
</refentrytitle></citerefentry>,
835 <citerefentry><refentrytitle>glLoadMatrix
</refentrytitle></citerefentry>,
836 <citerefentry><refentrytitle>glLoadTransposeMatrix
</refentrytitle></citerefentry>,
837 <citerefentry><refentrytitle>glMatrixMode
</refentrytitle></citerefentry>,
838 <citerefentry><refentrytitle>glPushMatrix
</refentrytitle></citerefentry>
841 <refsect1 id=
"Copyright"><title>Copyright
</title>
843 Copyright
<trademark class=
"copyright"></trademark> 1991-
2006
844 Silicon Graphics, Inc. This document is licensed under the SGI
845 Free Software B License. For details, see
846 <ulink url=
"http://oss.sgi.com/projects/FreeB/">http://oss.sgi.com/projects/FreeB/
</ulink>.