Home > Articles > Programming > Graphic Programming

This chapter is from the book

This chapter is from the book

Reference

glBegin

Purpose: Denotes the beginning of a group of vertices that define one or more primitives.

Include File: <gl.h>

Syntax:

void glBegin(GLenum mode);

Description: This function is used in conjunction with glEnd to delimit the vertices of an OpenGL primitive. You can include multiple vertices sets within a single glBegin/glEnd pair, as long as they are for the same primitive type. You can also make other settings with additional OpenGL commands that affect the vertices following them. You can call only these OpenGL functions within a glBegin/glEnd sequence: glVertex, glColor, glNormal, glEvalCoord, glCallList, glCallLists, glTexCoord, glEdgeFlag, and glMaterial. Note that display lists (glCallList(s)) may only contain the other functions listed here.

Parameters:

mode GLenum: This value specifies the primitive to be constructed. It can be any of the values in Table 3.1.

Table 3.1 OpenGL Primitives Supported by glBegin

Mode

Primitive Type

GL_POINTS

The specified vertices are used to create a single point each.

GL_LINES

The specified vertices are used to create line segments. Every two vertices specify a single and separate line segment. If the number of vertices is odd, the last one is ignored.

GL_LINE_STRIP

The specified vertices are used to create a line strip. After the first vertex, each subsequent vertex specifies the next point to which the line is extended.

GL_LINE_LOOP

This mode behaves like GL_LINE_STRIP, except a final line segment is drawn between the last and the first vertex specified. This is typically used to draw closed regions that might violate the rules regarding GL_POLYGON usage.

GL_TRIANGLES

The specified vertices are used to construct triangles. Every three vertices specify a new triangle. If the number of vertices is not evenly divisible by three, the extra vertices are ignored.

GL_TRIANGLE_STRIP

The specified vertices are used to create a strip of triangles. After the first three vertices are specified, each of any subsequent vertices is used with the two preceding ones to construct the next triangle. Each triplet of vertices (after the initial set) is automatically rearranged to ensure consistent winding of the triangles.

GL_TRIANGLE_FAN

The specified vertices are used to construct a triangle fan. The first vertex serves as an origin, and each vertex after the third is combined with the foregoing one and the origin. Any number of triangles may be fanned in this manner.

GL_QUADS

Each set of four vertices is used to construct a quadrilateral (a four-sided polygon). If the number of vertices is not evenly divisible by four, the remaining ones are ignored.

GL_QUAD_STRIP

The specified vertices are used to construct a strip of quadrilaterals. One quadrilateral is defined for each pair of vertices after the first pair. Unlike the vertex ordering for GL_QUADS, each pair of vertices is used in the reverse order specified to ensure consistent winding.

GL_POLYGON

The specified vertices are used to construct a convex polygon. The polygon edges must not intersect. The last vertex is automatically connected to the first vertex to ensure the polygon is closed.


Returns: None.

See Also: glEnd, glVertex

glClearDepth

Purpose: Specifies a depth value to be used for depth buffer clears.

Include File: <gl.h>

Syntax:

void glClearDepth(GLclampd depth);

Description: This function sets the depth value that is used when clearing the depth buffer with glClear(GL_DEPTH_BUFFER_BIT).

Parameters:

depth GLclampd: The clear value for the depth buffer.

Returns: None.

See Also: glClear, glDepthFunc, glDepthMask, glDepthRange

glClearStencil

Purpose: Specifies a stencil value to be used for stencil buffer clears.

Include File: <gl.h>

Syntax:

void glClearStencil(GLint value);

Description: This function sets the stencil value that is used when clearing the stencil buffer with glClear(GL_STENCIL_BUFFER_BIT).

Parameters:

value GLint: The clear value for the stencil buffer.

Returns: None.

See Also: glStencilFunc, glStencilOp

glCullFace

Purpose: Specifies whether the front or back of polygons should be eliminated from drawing.

Include File: <gl.h>

Syntax:

void glCullFace(GLenum mode);

Description: This function eliminates all drawing operations on either the front or back of a polygon. This eliminates unnecessary rendering computations when the back side of polygons are never visible, regardless of rotation or translation of the objects. Culling is enabled or disabled by calling glEnable or glDisable with the GL_CULL_FACE parameter. The front and back of the polygon are defined by use of glFrontFace and by the order in which the vertices are specified (clockwise or counterclockwise winding).

Parameters:

mode GLenum: Specifies which face of polygons should be culled. May be either GL_FRONT or GL_BACK.

Returns: None.

See Also: glFrontFace, glLightModel

glDepthFunc

Purpose: Specifies the depth-comparison function used against the depth buffer to decide whether color fragments should be rendered.

Include File: <gl.h>

Syntax:

void glDepthFunc(GLenum func);

Description: Depth testing is the primary means of hidden surface removal in OpenGL. When a color value is written to the color buffer, a corresponding depth value is written to the depth buffer. When depth testing is enabled by calling glEnable(GL_DEPTH_TEST), color values are not written to the color buffer unless the corresponding depth value passes the depth test with the depth value already present. This function allows you to tweak the function used for depth buffer comparisons. The default function is GL_LESS.

Parameters:

func GLenum: Specifies which depth-comparison function to use. Valid values are listed in Table 3.2.

Table 3.2 Depth Function Enumerants

Depth Function

Meaning

GL_NEVER

Fragments never pass the depth test.

GL_LESS

Fragments pass only if the incoming z value is less than the z value already present in the z buffer. This is the default value.

GL_LEQUAL

Fragments pass only if the incoming z value is less than or equal to the z value already present in the z buffer.

GL_EQUAL

Fragments pass only if the incoming z value is equal to the z value already present in the z buffer.

GL_GREATER

Fragments pass only if the incoming z value is greater than the z value already present in the z buffer.

GL_NOTEQUAL

Fragments pass only if the incoming z value is not equal to the z value already present in the z buffer.

GL_GEQUAL

Fragments pass only if the incoming z value is greater than or equal to the z value already present in the z buffer.

GL_ALWAYS

Fragments always pass regardless of any z value.


Returns: None.

See Also: glClearDepth, glDepthMask, glDepthRange

glDepthMask

Purpose: Selectively allows or disallows changes to the depth buffer.

Include File: <gl.h>

Syntax:

void glDepthMask(GLBoolean flag);

Description: If a depth buffer is created for an OpenGL rendering context, OpenGL will calculate and store depth values. Even when depth testing is disabled, depth values are still calculated and stored in the depth buffer by default. This function allows you to selectively enable and disable writing to the depth buffer.

Parameters:

flag GLboolean: When this parameter is set to GL_TRUE, depth buffer writes are enabled (default). Setting this parameter to GL_FALSE disables changes to the depth buffer.

Returns: None.

See Also: glClearDepth, glDepthFunc, glDepthRange

glDepthRange

Purpose: Allows a mapping of z values to window coordinates from normalized device coordinates.

Include File: <gl.h>

Syntax:

void glDepthRange(GLclampd zNear, GLclampd zFar);

Description: Normally, depth buffer values are stored internally in the range from –1.0 to 1.0. This function allows a specific linear mapping of depth values to a normalized range of window z coordinates. The default range for window z values is 0 to 1 corresponding to the near and far clipping planes.

Parameters:

zNear GLclampd: A clamped value that represents the nearest possible window z value.

zFar GLclampd: A clamped value that represents the largest possible window z value.

Returns: None.

See Also: glClearDepth, glDepthMask, glDepthFunc

glDrawBuffer

Purpose: Redirects OpenGL rendering to a specific color buffer.

Include File: <gl.h>

Syntax:

void glDrawBuffer(GLenum mode);

Description: By default, OpenGL renders to the back color buffer for double-buffered rendering contexts and to the front for single-buffered rendering contexts. This function allows you to direct OpenGL rendering to any available color buffer. Note that many implementations do not support left and right (stereo) or auxiliary color buffers. In the case of stereo contexts, the modes that omit references to the left and right channels will render to both channels. For example, specifying GL_FRONT for a stereo context will actually render to both the left and right front buffers, and GL_FRONT_AND_BACK will render to up to four buffers simultaneously.

Parameters:

mode GLenum: A constant flag that specifies which color buffer should be the render target. Valid values for this parameter are listed in Table 3.3.

Table 3.3 Color Buffer Destinations

Constant

Description

GL_NONE

Do not write anything to any color buffer.

GL_FRONT_LEFT

Write only to the front-left color buffer.

GL_FRONT_RIGHT

Write only to the front-right color buffer.

GL_BACK_LEFT

Write only to the back-left color buffer.

GL_BACK_RIGHT

Write only to the back-right color buffer.

GL_FRONT

Write only to the front color buffer. This is the default value for single-buffered rendering contexts.

GL_BACK

Write only to the back color buffer. This is the default value for double-buffered rendering contexts.

GL_LEFT

Write only to the left color buffer.

GL_RIGHT

Write only to the right color buffer.

GL_FRONT_AND_BACK

Write to both the front and back color buffers.

GL_AUXi

Write only to the auxiliary buffer i, with i being a value between 0 and GL_AUX_BUFFERS – 1.


Returns: None.

See Also: glClear, glColorMask

glEdgeFlag

Purpose: Flags polygon edges as either boundary or nonboundary edges. You can use this to determine whether interior surface lines are visible.

Include File: <gl.h>

Variations:

void glEdgeFlag(GLboolean flag);
void glEdgeFlagv(const GLboolean *flag);

Description: When two or more polygons are joined to form a larger region, the edges on the outside define the boundary of the newly formed region. This function flags inside edges as nonboundary. This is used only when the polygon mode is set to either GL_LINE or GL_POINT.

Parameters:

flag GLboolean: Sets the edge flag to this value, True or False.

*flag const GLboolean *: A pointer to a value that is used for the edge flag.

Returns: None.

See Also: glBegin, glPolygonMode

glEnd

Purpose: Terminates a list of vertices that specify a primitive initiated by glBegin.

Include File: <gl.h>

Syntax:

void glEnd();

Description: This function is used in conjunction with glBegin to delimit the vertices of an OpenGL primitive. You can include multiple vertices sets within a single glBegin/glEnd pair, as long as they are for the same primitive type. You can also make other settings with additional OpenGL commands that affect the vertices following them. You can call only these OpenGL functions within a glBegin/glEnd sequence: glVertex, glColor, glIndex, glNormal, glEvalCoord, glCallList, glCallLists, glTexCoord, glEdgeFlag, and glMaterial.

Returns: None.

See Also: glBegin

glFrontFace

Purpose: Defines which side of a polygon is the front or back.

Include File: <gl.h>

Syntax:

void glFrontFace(GLenum mode);

Description: When a scene is made up of objects that are closed (you cannot see the inside), color or lighting calculations on the inside of the object are unnecessary. The glCullFace function turns off such calculations for either the front or back of polygons. The glFrontFace function determines which side of the polygons is considered the front. If the vertices of a polygon as viewed from the front are specified so that they travel clockwise around the polygon, the polygon is said to have clockwise winding. If the vertices travel counterclockwise, the polygon is said to have counterclockwise winding. This function allows you to specify either the clockwise or counterclockwise wound face to be the front of the polygon.

Parameters:

mode GLenum: Specifies the orientation of front-facing polygons: clockwise (GL_CW) or counterclockwise (GL_CCW).

Returns: None.

See Also: glCullFace, glLightModel, glPolygonMode, glMaterial

glGetPolygonStipple

Purpose: Returns the current polygon stipple pattern.

Include File: <gl.h>

Syntax:

void glGetPolygonStipple(GLubyte *mask);

Description: This function copies a 32-by-32-bit pattern that represents the polygon stipple pattern into a user-specified buffer. The pattern is copied to the memory location pointed to by mask. The packing of the pixels is affected by the last call to glPixelStore.

Parameters:

*mask GLubyte: A pointer to the place where the polygon stipple pattern is to be copied.

Returns: None.

See Also: glPolygonStipple, glLineStipple, glPixelStore

glLineStipple

Purpose: Specifies a line stipple pattern for line-based primitives GL_LINES, GL_LINE_STRIP, and GL_LINE_LOOP.

Include File: <gl.h>

Syntax:

void glLineStipple(GLint factor, GLushort pattern);

Description: This function uses the bit pattern to draw stippled (dotted and dashed) lines. The bit pattern begins with bit 0 (the rightmost bit), so the actual drawing pattern is the reverse of what is specified. The factor parameter is used to widen the number of pixels drawn or not drawn along the line specified by each bit in pattern. By default, each bit in the pattern specifies one pixel. To use line stippling, you must first enable stippling by calling

	glEnable(GL_LINE_STIPPLE);

Line stippling is disabled by default. If you are drawing multiple line segments, the pattern is reset for each new segment. That is, if a line segment is drawn such that it terminates halfway through the pattern, the next specified line segment is unaffected.

Parameters:

factor GLint: Specifies a multiplier that determines how many pixels will be affected by each bit in the pattern parameter. Thus, the pattern width is multiplied by this value. The default value is 1, and the maximum value is clamped to 255.

pattern GLushort: Sets the 16-bit stippling pattern. The least significant bit (bit 0) is used first for the stippling pattern. The default pattern is all 1s.

Returns: None.

See Also: glPolygonStipple

glLineWidth

Purpose: Sets the width of lines drawn with GL_LINES, GL_LINE_STRIP, or GL_LINE_LOOP.

Include File: <gl.h>

Syntax:

void glLineWidth(GLfloat width );

Description: This function sets the width in pixels of lines drawn with any of the line-based primitives.

You can get the current line width setting by calling

GLfloat fSize;
...
glGetFloatv(GL_LINE_WIDTH, &fSize);

The current line width setting will be returned in fSize. In addition, you can find the minimum and maximum supported line widths by calling

GLfloat fSizes[2];
...
glGetFloatv(GL_LINE_WIDTH_RANGE,fSizes);

In this instance, the minimum supported line width will be returned in fSizes[0], and the maximum supported width will be stored in fSizes[1]. Finally, you can find the smallest supported increment between line widths by calling

GLfloat fStepSize;
...
glGetFloatv(GL_LINE_WIDTH_GRANULARITY,&fStepSize);

For any implementation of OpenGL, the only line width guaranteed to be supported is 1.0. For the Microsoft Windows generic implementation, the supported line widths range from 0.5 to 10.0, with a granularity of 0.125.

Parameters:

width GLfloat: Sets the width of lines that are drawn with the line primitives. The default value is 1.0.

Returns: None.

See Also: glPointSize

glPointSize

Purpose: Sets the point size of points drawn with GL_POINTS.

Include File: <gl.h>

Syntax:

void glPointSize(GLfloat size);

Description: This function sets the diameter in pixels of points drawn with the GL_POINTS primitive. You can get the current pixel size setting by calling

GLfloat fSize;
...
glGetFloatv(GL_POINT_SIZE, &fSize);

The current pixel size setting will be returned in fSize. In addition, you can find the minimum and maximum supported pixel sizes by calling

GLfloat fSizes[2];
...
glGetFloatv(GL_POINT_SIZE_RANGE,fSizes);

In this instance, the minimum supported point size will be returned in fSizes[0], and the maximum supported size will be stored in fSizes[1]. Finally, you can find the smallest supported increment between pixel sizes by calling

GLfloat fStepSize;
...
glGetFloatv(GL_POINT_SIZE_GRANULARITY,&fStepSize);

For any implementation of OpenGL, the only point size guaranteed to be supported is 1.0. For the Microsoft Windows generic implementation, the point sizes range from 0.5 to 10.0, with a granularity of 0.125.

Parameters:

size GLfloat: Sets the diameter of drawn points. The default value is 1.0.

Returns: None.

See Also: glLineWidth

glPolygonMode

Purpose: Sets the rasterization mode used to draw polygons.

Include File: <gl.h>

Syntax:

void glPolygonMode(GLenum face, GLenum mode);

Description: This function allows you to change how polygons are rendered. By default, polygons are filled or shaded with the current color or material properties. However, you may also specify that only the outlines or only the vertices are drawn. Furthermore, you may apply this specification to the front, back, or both sides of polygons.

Parameters:

face GLenum: Specifies which face of polygons is affected by the mode change: GL_FRONT, GL_BACK, or GL_FRONT_AND_BACK.

mode GLenum: Specifies the new drawing mode. GL_FILL is the default, producing filled polygons. GL_LINE produces polygon outlines, and GL_POINT plots only the points of the vertices. The lines and points drawn by GL_LINE and GL_POINT are affected by the edge flag set by glEdgeFlag.

Returns: None.

See Also: glEdgeFlag, glLineStipple, glLineWidth, glPointSize, glPolygonStipple

glPolygonOffset

Purpose: Sets the scale and units used to calculate depth values.

Include File: <gl.h>

Syntax:

void glPolygonOffset(GLfloat factor, GLfloat units);

Description: This function allows you to add or subtract an offset to a fragment's calculated depth value. The amount of offset is calculated by the following formula:

offset = (m * factor) + (r * units)

The value of m is calculated by OpenGL and represents the maximum depth slope of the polygon. The r value is the minimum value that will create a resolvable difference in the depth buffer, and is implementation dependent. Polygon offset applies only to polygons but affects lines and points when rendered as a result of a call to glPolygonMode. You enable or disable the offset value for each mode by using glEnable/glDisable with GL_POLYGON_OFFSET_FILL, GL_POLYGON_OFFSET_LINE, or GL_POLYGON_OFFSET_POINT.

Parameters:

factor GLfloat: Scaling factor used to create a depth buffer offset for each polygon. Zero by default.

units GLfloat: Value multiplied by an implementation-specific value to create a depth offset. Zero by default.

Returns: None.

See Also: glDepthFunc, glDepthRange, glPolygonMode

glPolygonStipple

Purpose: Sets the pattern used for polygon stippling.

Include File: <gl.h>

Syntax:

void glPolygonStipple(const GLubyte *mask );

Description: You can use a 32-by-32-bit stipple pattern for filled polygons by using this function and enabling polygon stippling by calling glEnable(GL_POLYGON_STIPPLE). The 1s in the stipple pattern are filled with the current color, and 0s are not drawn.

Parameters:

*mask const GLubyte: Points to a 32-by-32-bit storage area that contains the stipple pattern. The packing of bits within this storage area is affected by glPixelStore. By default, the MSB (most significant bit) is read first when determining the pattern.

Returns: None.

See Also: glLineStipple, glGetPolygonStipple, glPixelStore

glScissor

Purpose: Defines a scissor box in window coordinates outside of which no drawing occurs.

Include File: <gl.h>

Syntax:

void glScissor(GLint x, GLint y, GLint width, GLint height);

Description: This function defines a rectangle in window coordinates called the scissor box. When the scissor test is enabled with glEnable(GL_SCISSOR_TEST), OpenGL drawing commands and buffer operations occur only within the scissor box.

Parameters:

x,y GLint: The lower-left corner of the scissor box, in window coordinates.

width GLint: The width of the scissor box in pixels.

height GLint: The height of the scissor box in pixels.

Returns: None.

See Also: glStencilFunc, glStencilOp

glStencilFunc

Purpose: Sets the comparison function, reference value, and mask for a stencil test.

Include File: <gl.h>

Syntax:

void glStencilFunc(GLenum func, GLint ref, GLuint mask);

Description: When the stencil test is enabled using glEnable(GL_STENCIL_TEST), the stencil function is used to determine whether a color fragment should be discarded or kept (drawn). The value in the stencil buffer is compared to the reference value ref, using the comparison function specified by func. Both the reference value and stencil buffer value may be bitwise ANDed with the mask. Valid comparison functions are given in Table 3.4. The result of the stencil test also causes the stencil buffer to be modified according to the behavior specified in the function glStencilOp.

Parameters:

func GLenum: Stencil comparison function. Valid values are listed in Table 3.4.

ref GLint: Reference value against which the stencil buffer value is compared.

mask GLuint: Binary mask value applied to both the reference and stencil buffer values.

Table 3.4 Stencil Test Comparison Functions

Constant

Meaning

GL_NEVER

Never pass the stencil test.

GL_ALWAYS

Always pass the stencil test.

GL_LESS

Pass only if the reference value is less than the stencil buffer value.

GL_LEQUAL

Pass only if the reference value is less than or equal to the stencil buffer value.

GL_EQUAL

Pass only if the reference value is equal to the stencil buffer value.

GL_GEQUAL

Pass only if the reference value is greater than or equal to the stencil buffer value.

GL_GREATER

Pass only if the reference value is greater than the stencil buffer value.

GL_NOTEQUAL

Pass only if the reference value is not equal to the stencil buffer value.


Returns: None.

See Also: glStencilOp, glClearStencil

glStencilMask

Purpose: Selectively allows or disallows changes to the stencil buffer.

Include File: <gl.h>

Syntax:

void glStencilMask(GLboolean flag);

Description: If a stencil buffer is created for an OpenGL rendering context, OpenGL will calculate, store, and make use of stencil values when stenciling is enabled. When the stencil test is disabled, values are still calculated and stored in the stencil buffer. This function allows you to selectively enable and disable writing to the stencil buffer.

Parameters:

flag GLboolean: When this parameter is set to GL_TRUE, stencil buffer writes are enabled (default). Setting this parameter to GL_FALSE disables changes to the depth buffer.

Returns: None.

See Also: glStencilOp, glClearStencil, glStencilMask

glStencilOp

Purpose: Specifies what action to take in regards to the stored value in the stencil buffer for a rendered fragment.

Include File: <gl.h>

Syntax:

void glStencilOp(GLenum sfail, GLenum zfail, GLenum zpass);

Description: This function describes what action to take when a fragment fails the stencil test. Even when fragments do not pass the stencil test and are not produced in the color buffer, the stencil buffer can still be modified by setting the appropriate action for the sfail parameter. In addition, even when the stencil test passes, the zfail and zpass parameters describe the desired action based on that fragment's depth buffer test. The valid actions and their constants are given in Table 3.5.

Parameters:

sfail GLenum: Operation to perform when the stencil test fails.

zfail GLenum: Operation to perform when the depth test fails.

zPass GLenum: Operation to perform when the depth test passes.

Table 3.5 Stencil Operation Constants

Constant

Description

GL_KEEP

Keep the current stencil buffer value.

GL_ZERO

Set the current stencil buffer value to 0.

GL_REPLACE

Replace the stencil buffer value with the reference value specified in glStencilFunc.

GL_INCR

Increment the stencil buffer value. Clamped to the bit range of the stencil buffer.

GL_DECR

Decrement the stencil buffer value. Clamped to the bit range of the stencil buffer.

GL_INVERT

Bitwise-invert the current stencil buffer value.

GL_INCR_WRAP

Increment the current stencil buffer value. When the maximum representable value for the given stencil buffer's bit depth is reached, the value wraps back to 0.

GL_DECR_WRAP

Decrement the current stencil buffer value. When the value is decremented below 0, the stencil buffer value wraps to the highest possible positive representation for its bit depth.


Returns: None.

See Also: glStencilFunc, glClearStencil

glVertex

Purpose: Specifies the 3D coordinates of a vertex.

Include File: <gl.h>

Variations:

void glVertex2d(GLdouble x, GLdouble y);
void glVertex2f(GLfloat x, GLfloat y);
void glVertex2i(GLint x, GLint y);
void glVertex2s(GLshort x, GLshort y);
void glVertex3d(GLdouble x, GLdouble y, GLdouble z);
void glVertex3f(GLfloat x, GLfloat y, GLfloat z);
void glVertex3i(GLint x, GLint y, GLint z);
void glVertex3s(GLshort x, GLshort y, GLshort z);
void glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
void glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void glVertex4i(GLint x, GLint y, GLint z, GLint w);
void glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w);
void glVertex2dv(const GLdouble *v);
void glVertex2fv(const GLfloat *v);
void glVertex2iv(const GLint *v);
void glVertex2sv(const GLshort *v);
void glVertex3dv(const GLdouble *v);
void glVertex3fv(const GLfloat *v);
void glVertex3iv(const GLint *v);
void glVertex3sv(const GLshort *v);
void glVertex4dv(const GLdouble *v);
void glVertex4fv(const GLfloat *v);
void glVertex4iv(const GLint *v);
void glVertex4sv(const GLshort *v);

Description: This function is used to specify the vertex coordinates of the points, lines, and polygons specified by a previous call to glBegin. You cannot call this function outside the scope of a glBegin/glEnd pair.

Parameters:

x, y, z The x, y, and z coordinates of the vertex. When z is not specified, the default value is 0.0.

w The w coordinate of the vertex. This coordinate is used for scaling purposes and by default is set to 1.0. Scaling occurs by dividing the other three coordinates by this value.

*v An array of values that contain the two, three, or four values needed to specify the vertex.

Returns: None.

See Also: glBegin, glEnd

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.

Overview


Pearson Education, Inc., 221 River Street, Hoboken, New Jersey 07030, (Pearson) presents this site to provide information about products and services that can be purchased through this site.

This privacy notice provides an overview of our commitment to privacy and describes how we collect, protect, use and share personal information collected through this site. Please note that other Pearson websites and online products and services have their own separate privacy policies.

Collection and Use of Information


To conduct business and deliver products and services, Pearson collects and uses personal information in several ways in connection with this site, including:

Questions and Inquiries

For inquiries and questions, we collect the inquiry or question, together with name, contact details (email address, phone number and mailing address) and any other additional information voluntarily submitted to us through a Contact Us form or an email. We use this information to address the inquiry and respond to the question.

Online Store

For orders and purchases placed through our online store on this site, we collect order details, name, institution name and address (if applicable), email address, phone number, shipping and billing addresses, credit/debit card information, shipping options and any instructions. We use this information to complete transactions, fulfill orders, communicate with individuals placing orders or visiting the online store, and for related purposes.

Surveys

Pearson may offer opportunities to provide feedback or participate in surveys, including surveys evaluating Pearson products, services or sites. Participation is voluntary. Pearson collects information requested in the survey questions and uses the information to evaluate, support, maintain and improve products, services or sites, develop new products and services, conduct educational research and for other purposes specified in the survey.

Contests and Drawings

Occasionally, we may sponsor a contest or drawing. Participation is optional. Pearson collects name, contact information and other information specified on the entry form for the contest or drawing to conduct the contest or drawing. Pearson may collect additional personal information from the winners of a contest or drawing in order to award the prize and for tax reporting purposes, as required by law.

Newsletters

If you have elected to receive email newsletters or promotional mailings and special offers but want to unsubscribe, simply email information@informit.com.

Service Announcements

On rare occasions it is necessary to send out a strictly service related announcement. For instance, if our service is temporarily suspended for maintenance we might send users an email. Generally, users may not opt-out of these communications, though they can deactivate their account information. However, these communications are not promotional in nature.

Customer Service

We communicate with users on a regular basis to provide requested services and in regard to issues relating to their account we reply via email or phone in accordance with the users' wishes when a user submits their information through our Contact Us form.

Other Collection and Use of Information


Application and System Logs

Pearson automatically collects log data to help ensure the delivery, availability and security of this site. Log data may include technical information about how a user or visitor connected to this site, such as browser type, type of computer/device, operating system, internet service provider and IP address. We use this information for support purposes and to monitor the health of the site, identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents and appropriately scale computing resources.

Web Analytics

Pearson may use third party web trend analytical services, including Google Analytics, to collect visitor information, such as IP addresses, browser types, referring pages, pages visited and time spent on a particular site. While these analytical services collect and report information on an anonymous basis, they may use cookies to gather web trend information. The information gathered may enable Pearson (but not the third party web trend services) to link information with application and system log data. Pearson uses this information for system administration and to identify problems, improve service, detect unauthorized access and fraudulent activity, prevent and respond to security incidents, appropriately scale computing resources and otherwise support and deliver this site and its services.

Cookies and Related Technologies

This site uses cookies and similar technologies to personalize content, measure traffic patterns, control security, track use and access of information on this site, and provide interest-based messages and advertising. Users can manage and block the use of cookies through their browser. Disabling or blocking certain cookies may limit the functionality of this site.

Do Not Track

This site currently does not respond to Do Not Track signals.

Security


Pearson uses appropriate physical, administrative and technical security measures to protect personal information from unauthorized access, use and disclosure.

Children


This site is not directed to children under the age of 13.

Marketing


Pearson may send or direct marketing communications to users, provided that

  • Pearson will not use personal information collected or processed as a K-12 school service provider for the purpose of directed or targeted advertising.
  • Such marketing is consistent with applicable law and Pearson's legal obligations.
  • Pearson will not knowingly direct or send marketing communications to an individual who has expressed a preference not to receive marketing.
  • Where required by applicable law, express or implied consent to marketing exists and has not been withdrawn.

Pearson may provide personal information to a third party service provider on a restricted basis to provide marketing solely on behalf of Pearson or an affiliate or customer for whom Pearson is a service provider. Marketing preferences may be changed at any time.

Correcting/Updating Personal Information


If a user's personally identifiable information changes (such as your postal address or email address), we provide a way to correct or update that user's personal data provided to us. This can be done on the Account page. If a user no longer desires our service and desires to delete his or her account, please contact us at customer-service@informit.com and we will process the deletion of a user's account.

Choice/Opt-out


Users can always make an informed choice as to whether they should proceed with certain services offered by InformIT. If you choose to remove yourself from our mailing list(s) simply visit the following page and uncheck any communication you no longer want to receive: www.informit.com/u.aspx.

Sale of Personal Information


Pearson does not rent or sell personal information in exchange for any payment of money.

While Pearson does not sell personal information, as defined in Nevada law, Nevada residents may email a request for no sale of their personal information to NevadaDesignatedRequest@pearson.com.

Supplemental Privacy Statement for California Residents


California residents should read our Supplemental privacy statement for California residents in conjunction with this Privacy Notice. The Supplemental privacy statement for California residents explains Pearson's commitment to comply with California law and applies to personal information of California residents collected in connection with this site and the Services.

Sharing and Disclosure


Pearson may disclose personal information, as follows:

  • As required by law.
  • With the consent of the individual (or their parent, if the individual is a minor)
  • In response to a subpoena, court order or legal process, to the extent permitted or required by law
  • To protect the security and safety of individuals, data, assets and systems, consistent with applicable law
  • In connection the sale, joint venture or other transfer of some or all of its company or assets, subject to the provisions of this Privacy Notice
  • To investigate or address actual or suspected fraud or other illegal activities
  • To exercise its legal rights, including enforcement of the Terms of Use for this site or another contract
  • To affiliated Pearson companies and other companies and organizations who perform work for Pearson and are obligated to protect the privacy of personal information consistent with this Privacy Notice
  • To a school, organization, company or government agency, where Pearson collects or processes the personal information in a school setting or on behalf of such organization, company or government agency.

Links


This web site contains links to other sites. Please be aware that we are not responsible for the privacy practices of such other sites. We encourage our users to be aware when they leave our site and to read the privacy statements of each and every web site that collects Personal Information. This privacy statement applies solely to information collected by this web site.

Requests and Contact


Please contact us about this Privacy Notice or if you have any requests or questions relating to the privacy of your personal information.

Changes to this Privacy Notice


We may revise this Privacy Notice through an updated posting. We will identify the effective date of the revision in the posting. Often, updates are made to provide greater clarity or to comply with changes in regulatory requirements. If the updates involve material changes to the collection, protection, use or disclosure of Personal Information, Pearson will provide notice of the change through a conspicuous notice on this site or other appropriate way. Continued use of the site after the effective date of a posted revision evidences acceptance. Please contact us if you have questions or concerns about the Privacy Notice or any objection to any revisions.

Last Update: November 17, 2020