glViewportIndexed

From OpenGL Reference
Jump to navigation Jump to search

Set a specified viewport.

C Specification[edit]

void glViewportIndexedf( GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h );
void glViewportIndexedfv( GLuint index, const GLfloat * v );


Parameters[edit]

index - Specify the first viewport to set.
x, y - For glViewportIndexedf , specifies the lower left corner of the viewport rectangle, in pixels. The initial value is (0,0).
w, h - For glViewportIndexedf , specifies the width and height of the viewport. When a GL context is first attached to a window, w and h are set to the dimensions of that window.
v - For glViewportIndexedfv , specifies the address of an array containing the viewport parameters.

Description[edit]

 glViewportIndexedf and glViewportIndexedfv specify the parameters for a single viewport. index specifies the index of the viewport to modify. index must be less than the value of GL_MAX_VIEWPORTS . For glViewportIndexedf , x , y , w , and h specify the left, bottom, width and height of the viewport in pixels, respectively. For glViewportIndexedfv , v contains the address of an array of floating point values specifying the left ( [math]x[/math] ), bottom ( [math]y[/math] ), width ( [math]w[/math] ), and height ( [math]h[/math] ) of each viewport, in that order. [math]x[/math] and [math]y[/math] give the location of the viewport's lower left corner, and [math]w[/math] and [math]h[/math] give the width and height of the viewport, respectively. The viewport specifies the affine transformation of [math]x[/math] and [math]y[/math] from normalized device coordinates to window coordinates. Let [math](x_{nd},y_{nd})[/math] be normalized device coordinates. Then the window coordinates [math](x_{w},y_{w})[/math] are computed as follows:

 [math]x_{w}=(x_{nd}+1)⁢(\frac{width}{2})+x[/math] 

 [math]y_{w}=(y_{nd}+1)⁢(\frac{height}{2})+y[/math] 

The location of the viewport's bottom left corner, given by [math](x, y)[/math] is clamped to be within the implementaiton-dependent viewport bounds range. The viewport bounds range [math][min, max][/math] can be determined by calling glGet with argument GL_VIEWPORT_BOUNDS_RANGE . Viewport width and height are silently clamped to a range that depends on the implementation. To query this range, call glGet with argument GL_MAX_VIEWPORT_DIMS .

The precision with which the GL interprets the floating point viewport bounds is implementation-dependent and may be determined by querying the impementation-defined constant GL_VIEWPORT_SUBPIXEL_BITS .

Calling glViewportIndexedfv is equivalent to calling glViewportArray with first set to index , count set to 1 and v passsed directly. glViewportIndexedf is equivalent to:

   void glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) {
       const float v[4]  = { x, y, w, h };
       glViewportArrayv(index, 1, v);
   }

Errors[edit]

 GL_INVALID_VALUE is generated if index is greater than or equal to the value of GL_MAX_VIEWPORTS .

 GL_INVALID_VALUE is generated if either w or h is negative.


Associated Gets[edit]

 glGet with argument GL_VIEWPORT 

 glGet with argument GL_MAX_VIEWPORT_DIMS 

 glGet with argument GL_VIEWPORT_BOUNDS_RANGE 

 glGet with argument GL_VIEWPORT_SUBPIXEL_BITS 


Version Support[edit]

 glViewportIndexedf  4.1+
 glViewportIndexedfv  4.1+

See Also[edit]

 glDepthRange , glViewport , glViewportArray 


Copyright[edit]

Copyright© 2010-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.