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