1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgName
2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    MESA_window_pos
4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgName Strings
6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    GL_MESA_window_pos
8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgContact
10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    Brian Paul, brian.paul 'at' tungstengraphics.com
12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgStatus
14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    Shipping (since Mesa version 1.2.8)
16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgVersion
18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgNumber
21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    197
23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgDependencies
25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    OpenGL 1.0 is required.
27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    The extension is written against the OpenGL 1.2 Specification
28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgOverview
30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    In order to set the current raster position to a specific window
32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    coordinate with the RasterPos command, the modelview matrix, projection
33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    matrix and viewport must be set very carefully.  Furthermore, if the
34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    desired window coordinate is outside of the window's bounds one must
35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    rely on a subtle side-effect of the Bitmap command in order to circumvent
36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    frustum clipping.
37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    This extension provides a set of functions to directly set the
39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    current raster position, bypassing the modelview matrix, the
40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    projection matrix and the viewport to window mapping.  Furthermore,
41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    clip testing is not performed.
42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    This greatly simplifies the process of setting the current raster
44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    position to a specific window coordinate prior to calling DrawPixels,
45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    CopyPixels or Bitmap.
46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgNew Procedures and Functions
48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos2dMESA(double x, double y)
50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos2fMESA(float x, float y)
51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos2iMESA(int x, int y)
52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos2sMESA(short x, short y)
53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos2ivMESA(const int *p)
54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos2svMESA(const short *p)
55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos2fvMESA(const float *p)
56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos2dvMESA(const double *p)
57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos3iMESA(int x, int y, int z)
58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos3sMESA(short x, short y, short z)
59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos3fMESA(float x, float y, float z)
60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos3dMESA(double x, double y, double z)
61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos3ivMESA(const int *p)
62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos3svMESA(const short *p)
63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos3fvMESA(const float *p)
64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos3dvMESA(const double *p)
65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos4iMESA(int x, int y, int z, int w)
66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos4sMESA(short x, short y, short z, short w)
67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos4fMESA(float x, float y, float z, float w)
68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos4dMESA(double x, double y, double z, double )
69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos4ivMESA(const int *p)
70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos4svMESA(const short *p)
71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos4fvMESA(const float *p)
72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    void WindowPos4dvMESA(const double *p)
73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgNew Tokens
75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    none
77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgAdditions to Chapter 2 of the OpenGL 1.2 Specification (OpenGL Operation)
79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  - (2.12, p. 41) Insert after third paragraph:
81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      Alternately, the current raster position may be set by one of the
83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      WindowPosMESA commands:
84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org         void WindowPos{234}{sidf}MESA( T coords );
86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org         void WindowPos{234}{sidf}vMESA( T coords );
87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      WindosPos4MESA takes four values indicating x, y, z, and w.
89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      WindowPos3MESA (or WindowPos2MESA) is analaguos, but sets only
90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      x, y, and z with w implicitly set to 1 (or only x and y with z
91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      implicitly set to 0 and w implicitly set to 1).
92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      WindowPosMESA operates like RasterPos except that the current modelview
94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      matrix, projection matrix and viewport parameters are ignored and the
95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      clip test operation always passes.  The current raster position values
96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      are directly set to the parameters passed to WindowPosMESA.  The current
97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      color, color index and texture coordinate update the current raster
98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org      position's associated data.
99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgAdditions to the AGL/GLX/WGL Specifications
101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    None
103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgGLX Protocol
105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    Not specified at this time.  However, a protocol message very similar
107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    to that of RasterPos is expected.
108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgErrors
110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    INVALID_OPERATION is generated if WindowPosMESA is called between
112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    Begin and End.
113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgNew State
115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    None.
117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgNew Implementation Dependent State
119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    None.
121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgRevision History
123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  * Revision 1.0 - Initial specification
125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  * Revision 1.1 - Minor clean-up  (7 Jan 2000, Brian Paul)
126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
127