1991-2006 Silicon Graphics, Inc.
glHistogram 3G
glHistogram define histogram table

## C Specification

void `glHistogram` GLenum target GLsizei width GLenum internalformat GLboolean sink

## Parameters

target

  The histogram whose parameters are to be set. Must be one of `GL_HISTOGRAM` or `GL_PROXY_HISTOGRAM`.

width

  The number of entries in the histogram table. Must be a power of 2.

internalformat

  The format of entries in the histogram table. Must be one of `GL_ALPHA`, `GL_ALPHA4`, `GL_ALPHA8`, `GL_ALPHA12`, `GL_ALPHA16`, `GL_LUMINANCE`, `GL_LUMINANCE4`, `GL_LUMINANCE8`, `GL_LUMINANCE12`, `GL_LUMINANCE16`, `GL_LUMINANCE_ALPHA`, `GL_LUMINANCE4_ALPHA4`, `GL_LUMINANCE6_ALPHA2`, `GL_LUMINANCE8_ALPHA8`, `GL_LUMINANCE12_ALPHA4`, `GL_LUMINANCE12_ALPHA12`, `GL_LUMINANCE16_ALPHA16`, `GL_R3_G3_B2`, `GL_RGB`, `GL_RGB4`, `GL_RGB5`, `GL_RGB8`, `GL_RGB10`, `GL_RGB12`, `GL_RGB16`, `GL_RGBA`, `GL_RGBA2`, `GL_RGBA4`, `GL_RGB5_A1`, `GL_RGBA8`, `GL_RGB10_A2`, `GL_RGBA12`, or `GL_RGBA16`.

sink

  If `GL_TRUE`, pixels will be consumed by the histogramming process and no drawing or texture loading will take place. If `GL_FALSE`, pixels will proceed to the minmax process after histogramming.

## Description

When `GL_HISTOGRAM` is enabled, RGBA color components are converted to histogram table indices by clamping to the range [0,1], multiplying by the width of the histogram table, and rounding to the nearest integer. The table entries selected by the RGBA indices are then incremented. (If the internal format of the histogram table includes luminance, then the index derived from the R color component determines the luminance table entry to be incremented.) If a histogram table entry is incremented beyond its maximum value, then its value becomes undefined. (This is not an error.)

Histogramming is performed only for RGBA pixels (though these may be specified originally as color indices and converted to RGBA by index table lookup). Histogramming is enabled with glEnable and disabled with glDisable.

When target is `GL_HISTOGRAM`, `glHistogram` redefines the current histogram table to have width entries of the format specified by internalformat. The entries are indexed 0 through width - 1 , and all entries are initialized to zero. The values in the previous histogram table, if any, are lost. If sink is `GL_TRUE`, then pixels are discarded after histogramming; no further processing of the pixels takes place, and no drawing, texture loading, or pixel readback will result.

When target is `GL_PROXY_HISTOGRAM`, `glHistogram` computes all state information as if the histogram table were to be redefined, but does not actually define the new table. If the requested histogram table is too large to be supported, then the state information will be set to zero. This provides a way to determine if a histogram table with the given parameters can be supported.

## Notes

`glHistogram` is present only if `ARB_imaging` is returned when glGetString is called with an argument of `GL_EXTENSIONS`.

## Errors

`GL_INVALID_ENUM` is generated if target is not one of the allowable values.

`GL_INVALID_VALUE` is generated if width is less than zero or is not a power of 2.

`GL_INVALID_ENUM` is generated if internalformat is not one of the allowable values.

`GL_TABLE_TOO_LARGE` is generated if target is `GL_HISTOGRAM` and the histogram table specified is too large for the implementation.

`GL_INVALID_OPERATION` is generated if `glHistogram` is executed between the execution of glBegin and the corresponding execution of glEnd.

## Associated Gets

glGetHistogramParameter

## See Also

glGetHistogram, glResetHistogram

## Copyright

Copyright 1991-2006 Silicon Graphics, Inc. This document is licensed under the SGI Free Software B License. For details, see http://oss.sgi.com/projects/FreeB/.