Back to the OpenGL extension cross reference

GL_EXT_coordinate_frame


	INCOMPLETE - DO NOT RELEASE IMPLEMENTATIONS OF THIS EXTENSION

Name


    EXT_coordinate_frame

Name Strings


    GL_EXT_coordinate_frame

Version


    $Date: 1998/09/26 02:48:47 $ $Revision: 1.3 $

Number


    156

Dependencies


    OpenGL 1.1 is required.

Overview


    This extension allows specifying a per-vertex tangent and binormal
vector in addition to the normal vector, defining a coordinate frame.
The coordinate frame is used in additional extensions which also build
on fragment lighting to achieve bump mapping.

Patent Note


    To the extent that SGI has patent rights that are unavoidably
infringed by all implementations of this extension, SGI will, upon
request, grant a license under such patent rights to the requesting
party subject to reasonable terms and conditions, and without
incremental charge or fee. Such license shall be non-exclusive, and
non-transferable, and shall be limited to implementations of the
extension in combination with any conformance certified
implementation of the OpenGL API. Such license is expressly
contingent upon a grant back of a non-exclusive, royalty-free,
perpetual, worldwide license to SGI and its OpenGL licensees under
the requesting party's patent rights that are unavoidably infringed
by all implementations of this extension or OpenGL.

Issues


    * Evaluators.

We need to address how evaluators can generate these values.

New Procedures and Functions


    void Tangent3{bdfis}EXT(T coords);
void Tangent3{bdfis}EXTv(T coords);

void Binormal3{bdfis}EXT(T coords);
void Binormal3{bdfis}vEXT(T coords);

void TangentPointerEXT(enum type, sizei stride, void *pointer);
void BinormalPointerEXT(enum type, sizei stride, void *pointer);

New Tokens


    Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, and
by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and
GetDoublev:

TANGENT_ARRAY_EXT 0x8439
BINORMAL_ARRAY_EXT 0x843A

Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
GetFloatv, and GetDoublev:

CURRENT_TANGENT_EXT 0x843B
CURRENT_BINORMAL_EXT 0x843C
TANGENT_ARRAY_TYPE_EXT 0x843E
TANGENT_ARRAY_STRIDE_EXT 0x843F
BINORMAL_ARRAY_TYPE_EXT 0x8440
BINORMAL_ARRAY_STRIDE_EXT 0x8441

Accepted by the <pname> parameter of GetPointervEXT:
TANGENT_ARRAY_POINTER_EXT 0x8442
BINORMAL_ARRAY_POINTER_EXT 0x8443

Accepted by the <target> parameter of Map1,Map2:

MAP1_TANGENT_EXT 0x8444
MAP2_TANGENT_EXT 0x8445
MAP1_BINORMAL_EXT 0x8446
MAP2_BINORMAL_EXT 0x8447

Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)


    Section 2.6 is amended to read:

In addition, a current normal, tangent, binormal,
current texture coordinates...

Figure 2.2 is amended to read
Current Normal,Tangent,Binormal...

Figure 2.6.3 is amended to read:

The only GL commands that are allowed within any Begin/End
pairs are the commands for specifying vertex coordinates,
normal coordinates, tangent coordinates, binormal coordinates,
and texture coordinates (Vertex, Color, Index, Normal,
Tangent, Binormal, TexCoord)

Section 2.7 is amended to read:

The current normal, tangent and binormal are set using

void Normal3{bsifd}( T coords ) ;
void Normal3{bsifd}v( T coords ) ;
void Tangent3{bsifd}EXT( T coords ) ;
void Tangent3{bsifd}vEXT( T coords ) ;
void Binormal3{bsifd}EXT( T coords ) ;
void Binormal3{bsifd}vEXT( T coords ) ;

The current normal, tangent and binormal are set to the given...
Byte, short, or integer values passed to Normal, Tangent or Binormal...

Section 2.8 is amended to read:

The client may specify up to 8 arrays: one each to store edge flags,
texture coordinates, colors, color indices, normals, tangents, binormals,
and vertices.

void TangentPointerEXT( enum type, sizei stride, void *pointer);
void BinormalPointerEXT( enum type, sizei stride, void *pointer);

Because normals, tangents and binormals are always specified...
NormalPointer, TangentPointerEXT and BinormalPointerEXT

etc, etc in 2.7.

Additions to Chapter 3 of the 1.0 Specification (Rasterization)


    None

Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations and the Frame Buffer)


    None

Additions to Chapter 5 of the 1.0 Specification (Special Functions)


    Add MAP1_TANGENT_EXT and MAP1_BINORMAL_EXT to table 5.1 right after
the MAP1_NORMAL_EXT entry.

Change the section that starts with "Finally, if either MAP2_VERTEX_3 or
MAP2_VERTEX_4 is enabled, then the normal to the surface is computed."

to include "tangent and binormal" references after each reference to
normal.

Additions to Chapter 6 of the 1.0 Specification (State and State Requests)


    tables are extended with state values from New State section

Additions to the GLX Specification


    None

GLX Protocol


    XXX - not yet complete

Errors


    INVALID_ENUM is generated if TangentPointerEXT parameter <type> is not
BYTE, SHORT, INT, FLOAT, or DOUBLE_EXT.

INVALID_VALUE is generated if TangentPointerEXT parameter <stride> or
<count> is negative.

INVALID_ENUM is generated if BinormalPointerEXT parameter <type> is not
BYTE, SHORT, INT, FLOAT, or DOUBLE_EXT.

INVALID_VALUE is generated if BinormalPointerEXT parameter <stride> or
<count> is negative.

New State


    Get Value			Get Command	Type	Initial Value	Attribute
--------- ----------- ---- ------------- ---------

CURRENT_TANGENT_EXT GetFloatv R3 1,0,0 current
CURRENT_BINORMAL_EXT GetFloatv R3 0,1,0 current
TANGENT_ARRAY_EXT IsEnabled B False vertex-array
TANGENT_ARRAY_TYPE_EXT GetIntegerv Z5 FLOAT vertex-array
TANGENT_ARRAY_STRIDE_EXT GetIntegerv Z+ 0 vertex-array
TANGENT_ARRAY_COUNT_EXT GetIntegerv Z+ 0 vertex-array
TANGENT_ARRAY_POINTER_EXT GetPointerv Z+ 0 vertex-array
BINORMAL_ARRAY_EXT IsEnabled B False vertex-array
BINORMAL_ARRAY_TYPE_EXT GetIntegerv Z5 FLOAT vertex-array
BINORMAL_ARRAY_STRIDE_EXT GetIntegerv Z+ 0 vertex-array
BINORMAL_ARRAY_COUNT_EXT GetIntegerv Z+ 0 vertex-array
BINORMAL_ARRAY_POINTER_EXT GetPointerv Z+ 0 vertex-array

New Implementation Dependent State


    None

Implementation Support


   List of OpenGL implementations supporting the GL_EXT_coordinate_frame extension

Original File


   Original text file for the GL_EXT_coordinate_frame extension


Page generated on Sun Nov 20 18:37:44 2005