Name WGL_I3D_gamma Name Strings WGL_I3D_gamma Contact Dale Kirkland, Intense3D (kirkland 'at' intense3d.com) Status Complete Version Date: 04/17/2000 Revision 1.0 Number 251 Dependencies The extension is written against the OpenGL 1.2.1 Specification although it should work on any previous OpenGL specification. The WGL_EXT_extensions_string extension is required. Overview The gamma extension provides an interface to read and load the gamma table. Other options such as having gamma only affect OpenGL windows can also be set. IP Status None Issues None New Procedures and Functions BOOL wglGetGammaTableParametersI3D(HDC hDC, int iAttribute, int *piValue) BOOL wglSetGammaTableParametersI3D(HDC hDC, int iAttribute, const int *piValue) BOOL wglGetGammaTableI3D(HDC hDC, int iEntries, USHORT *puRed, USHORT *puGreen, USHORT *puBlue) BOOL wglSetGammaTableI3D(HDC hDC, int iEntries, const USHORT *puRed, const USHORT *puGreen, const USHORT *puBlue) New Tokens Accepted by the parameter of wglGetGammaTableParametersI3D: WGL_GAMMA_TABLE_SIZE_I3D 0x204E WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F Accepted by the parameter of wglSetGammaTableParametersI3D: WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F Additions to Chapter 2 of the OpenGL 1.2.1 Specification (OpenGL Operation) None Additions to Chapter 3 of the OpenGL 1.2.1 Specification (Rasterization) None Additions to Chapter 4 of the OpenGL 1.2.1 Specification (Per-Fragment Operations and the Frame Buffer) None Additions to Chapter 5 of the OpenGL 1.2.1 Specification (Special Functions) None Additions to Chapter 6 of the OpenGL 1.2.1 Specification (State and State Requests) None Additions to Appendix A of the OpenGL 1.2.1 Specification (Invariance) None Additions to the WGL Specification Gamma correction for each monitor that supports a gamma table is controlled by loading the gamma table and setting the appropriate parameters. The function wglSetGammaTableI3D loads the gamma table: BOOL wglSetGammaTableI3D(HDC hDC, int iEntries, const USHORT *puRed, const USHORT *puGreen, const USHORT *puBlue) is a device context for the graphics adapter or a window residing on a monitor whose graphics adapter supports the gamma extension. For multiple monitor systems, only the gamma table associated with is loaded. The red, green, and blue data for the gamma table are pointed to by , and respectively. Each color array must contain entries. Gamma entries specified outside the hardware gamma table are ignored. The red, green, and blue data is defined using 16-bit precision. If the hardware gamma table has less than 16 bits of precision, the data is shifted down so that only the most-significant bits are used without rounding. The current gamma table can be obtained by calling the function wglGetGammaTableI3D: BOOL wglGetGammaTableI3D(HDC hDC, int iEntries, USHORT *puRed, USHORT *puGreen, USHORT *puBlue) is a device context for the graphics adapter or a window residing on a monitor whose graphics adapter supports the gamma extension. For multiple monitor systems, only the gamma table associated with is read. , and each point to an unsigned-short array containing . If is larger than the hardware gamma table, only the number of entries that correspond to the size of the hardware gamma table will be returned. The red, green and blue data is defined using 16-bit precision according to the description above. If the hardware gamma table has less than 16 bits of precision, the data is shifted up. Gamma table parameters can be set with the function wglSetGammaTableParametersI3D: BOOL wglSetGammaTableParametersI3D(HDC hDC, int iAttribute, const int *piValue) is a device context for the graphics adapter or a window residing on a monitor whose graphics adapter supports the gamma extension. For multiple monitor systems, only the gamma table associated with is set. must be one of the following values: WGL_GAMMA_EXCLUDE_DESKTOP_I3D If the value pointed to by is non-zero, only the contents of OpenGL windows are gamma corrected; the desktop will not be gamma corrected. If the value pointed to by is zero, all windows and the desktop are gamma corrected. This value defaults to zero. Gamma table parameters can be queried with the function wglGetGammaTableParametersI3D: BOOL wglGetGammaTableParametersI3D(HDC hDC, int iAttribute, int *piValue) is a device context for the graphics adapter or a window residing on a monitor whose graphics adapter supports the gamma extension. For multiple monitor systems, only the gamma table parameters associated with are returned. must be one of the following values: WGL_GAMMA_EXCLUDE_DESKTOP_I3D Returns the current setting for desktop gamma correction. If the value returned in the location pointed to by is non-zero, only the contents of OpenGL windows are gamma corrected; the desktop will not be gamma corrected. WGL_GAMMA_TABLE_SIZE_I3D Returns the number of entries in the hardware gamma table. Dependencies on WGL_EXT_extensions_string Because there is no way to extend wgl, these calls are defined in the ICD and can be called by obtaining the address with wglGetProcAddress. Because this extension is a WGL extension, it is not included in the GL_EXTENSIONS string. Its existence can be determined with the WGL_EXT_extensions_string extension. Errors If the function succeeds, a value of TRUE is returned. If the function fails, a value of FALSE is returned. To get extended error information, call GetLastError. ERROR_DC_NOT_FOUND The was not valid. ERROR_NO_SYSTEM_RESOURCES There is no support for a gamma table for the adapter specified by . ERROR_INVALID_DATA is not a valid value. ERROR_INVALID_DATA is not a positive value. New State None New Implementation Dependent State None Revision History 11/24/1999 0.1 First draft. 11/29/1999 0.2 Changed wglGetGammaTableI3D and wglSetGammaTableI3D to accept three pointers, one each for the red, green, and blue data for the gamma table. 04/17/2000 1.0 Fixed a few typos. Driver released to ISVs.