CGColorSpace

2011. 10. 30
●概要

CGColorSpaceRef不透過型は、Quartzの色情報をどのように解釈するかを指定するために使用する、色空間情報をカプセル化します。

色空間は、色値がどのように解釈されるかを指定します。

色空間は多次元であり、各次元は特定の色成分を表します。

例えば、RGB色空間の色は三次元、あるいは赤、緑、青の成分を持っています。

各成分の明度は浮動小数点値で表され、その範囲と意味は当該の色空間に依存します。

様々な種類のデバイス(スキャナ、モニタ、プリンタ)では、様々な色空間(RGB、CMYK、グレースケール)で動作します。

更に、同じタイプの2つのデバイス(例えば異なるメーカのカラーディスプレイ)はある程度同じ色空間で動作しますが、それでも異なる色の範囲が生じます。

正確に指定された色空間は、出力デバイスに関係無く一貫した外観の画像を表示することを保証します。

Quartzはいくつかの色空間をサポートします。

  • 校正された色空間は、異なるデバイス上で表示する時に同じ色に見えることを保証します。
    色の視覚的な外観は、デバイスの能力が許す限り保持されます。

  • デバイス依存の色空間は、特定のデバイスでの色再現性のシステムに関連付けられています。
    デバイスの色空間は、高度な忠実度の色の保存が重要な場合には推奨されません。

  • 特殊な色空間(インデックスとパターン)
    インデックス色空間は、最大256エントリまでの色テーブルが含まれ、基盤となる色空間に色テーブルのエントリがマッピングされています。
    色テーブルの各エントリには、基盤となる色空間の1つの色が指定されます。
    パターン色空間は、ストロークやパターンの塗りつぶしに使用されます。
    パターン色空間はMac OS X v10.1以降でサポートされています。



●タスク別の関数

●デバイスに依存しない色空間の生成

CGColorSpaceCreateCalibratedGray
CGColorSpaceCreateCalibratedRGB
CGColorSpaceCreateICCBased
CGColorSpaceCreateWithICCProfile
CGColorSpaceCreateLab

●汎用またはデバイス依存の色空間の生成

Mac OS X v10.4以降では、これらの関数によって返される色空間はもはやデバイスに依存せず、汎用的なものに置換されています。

CGColorSpaceCreateDeviceCMYK
CGColorSpaceCreateDeviceGray
CGColorSpaceCreateDeviceRGB

●特殊色空間の生成

CGColorSpaceCreateIndexed
CGColorSpaceCreatePattern
CGColorSpaceCreateWithName

●色空間に関する情報の取得

CGColorSpaceGetNumberOfComponents
CGColorSpaceGetTypeID
CGColorSpaceGetModel
CGColorSpaceGetBaseColorSpace
CGColorSpaceGetColorTableCount
CGColorSpaceGetColorTable

●色空間の保持と解放

CGColorSpaceRelease
CGColorSpaceRetain



●関数

CGColorSpaceCreateDeviceGray

CGColorSpaceRef CGColorSpaceCreateDeviceGray(
    void
);

デバイス依存のグレースケール色空間を生成します。

戻り値はデバイス依存のグレースケール色空間です。

このオブジェクトは、CGColorSpaceReleaseを呼び出すことによって解放する責任があります。

失敗した場合はNULLを返します。

Mac OS X v10.4以降では、この色空間はもはやデバイスに依存せず、『色空間名』で説明されている汎用的なもの(kCGColorSpaceGenericGray)に置換されています。

Mac OS X v10.4以降でこの関数を使用する場合、色は汎用的な色空間にマッピングされます。

カラーマッチングをバイパスする場合は、対象となるコンテキストの色空間を使用してください。

デバイスでの色は、出力デバイス上で表示する時に依存している色空間への変換、ないしは他の方法での変更はされず、色の視覚的な外観を保持しようとはしません。

したがって、デバイスの色空間の色は異なる出力デバイス上で表示する時に、しばしば異なって表示されます。

この理由から、デバイス色空間は色の保存が重要な場合には推奨されません。


CGColorSpaceCreateDeviceRGB

CGColorSpaceRef CGColorSpaceCreateDeviceRGB(
    void
);

デバイス依存のRGB色空間を生成します。

戻り値はデバイス依存のRGB色空間です。

このオブジェクトは、CGColorSpaceReleaseを呼び出すことによって解放する責任があります。

失敗した場合はNULLを返します。

Mac OS X v10.4以降では、この色空間はもはやデバイスに依存せず、『色空間名』で説明されている汎用的なもの(kCGColorSpaceGenericRGB)に置換されています。

Mac OS X v10.4以降でこの関数を使用する場合、色は汎用的な色空間にマッピングされます。

カラーマッチングをバイパスする場合は、対象となるコンテキストの色空間を使用してください。

デバイスでの色は、出力デバイス上で表示する時に依存している色空間への変換、ないしは他の方法での変更はされず、色の視覚的な外観を保持しようとはしません。

したがって、デバイスの色空間の色は異なる出力デバイス上で表示する時に、しばしば異なって表示されます。

この理由から、デバイス色空間は色の保存が重要な場合には推奨されません。


CGColorSpaceRelease

void CGColorSpaceRelease(
    CGColorSpaceRef cs
);

色空間の保持カウントを減らします。

この関数はCFReleaseと同等で、csパラメータがNULLの場合以外ではエラーは発生しません。

cs:解放するQuartzの色空間を指定します。



●データ型

CGColorSpaceRef

typedef struct CGColorSpace *CGColorSpaceRef;

色空間情報をカプセル化した不透過型です。



定数



参考文献

CGColorSpace Reference

CGImage

2011. 10. 26
●概要

CGImageRef不透過型はユーザが指定したサンプルデータに基づいて、ビットマップ画像とビットマップ画像マスクを表します。

ビットマップ(あるいはサンプリングされた)画像は、各ピクセルを単一のサンプルまたは元画像内のデータ位置を表すピクセルの矩形配列です。



●タスク別の関数

●ビットマップ画像の生成

CGImageCreate
CGImageCreateCopy
CGImageCreateCopyWithColorSpace
CGImageCreateWithJPEGDataProvider
CGImageCreateWithPNGDataProvider
CGImageCreateWithImageInRect
CGImageCreateWithMask
CGImageCreateWithMaskingColors

●画像マスクの生成

CGImageMaskCreate

●画像の保持と解放

CGImageRetain
CGImageRelease

●CFType IDの取得

CGImageGetTypeID

●画像についての情報の取得

CGImageGetAlphaInfo
CGImageGetBitmapInfo
CGImageGetBitsPerComponent
CGImageGetBitsPerPixel
CGImageGetBytesPerRow
CGImageGetColorSpace
CGImageGetDataProvider
CGImageGetDecode
CGImageGetHeight
CGImageGetShouldInterpolate
CGImageGetRenderingIntent
CGImageGetWidth
CGImageIsMask



●関数

CGImageGetAlphaInfo


CGImageAlphaInfo CGImageGetAlphaInfo (
    CGImageRef image
);

ビットマップ画像のアルファチャンネルを返します。

CGImageAlphaInfo定数は、(1)ビットマップがアルファチャンネルを含んでいるかどうか、(2)画像データ内の何処にアルファビットが位置しているか、(3)アルファ値が事前に乗算されているかを指定します。

有効な値は『定数』を参照してください。

画像パラメータが画像マスクを参照している場合、関数はkCGImageAlphaNoneを返します。

アルファ値は描画時にピクセルの不透明度を決定するものです。

image
:検査する画像を指定します。


CGImageGetColorSpace

CGColorSpaceRef CGImageGetColorSpace (
    CGImageRef image
);

ビットマップ画像の色空間を返します。

戻り値は指定されたビットマップ画像の元となる色空間、あるいは画像が画像マスクの場合はNULLになります。

色空間は必要に応じて保持と解放をする責任があります。

image:検査する画像を指定します。


CGImageGetHeight

size_t CGImageGetHeight (
    CGImageRef image
);

ビットマップ画像の高さを返します。

戻り値はビットマップ画像(または画像マスク)のピクセルの高さです。

image:検査する画像を指定します。


CGImageGetWidth

size_t CGImageGetWidth (
    CGImageRef image
);

ビットマップ画像の幅を返します。

戻り値はビットマップ画像(または画像マスク)のピクセルの幅です。

image:検査する画像を指定します。



●データ型

CGImageRef

typedef struct CGImage *CGImageRef;

ビットマップ画像情報をカプセル化した不透過型です。



定数

Alpha Information for Images

アルファコンポーネントデータのストレージオプション。

enum CGImageAlphaInfo {
    kCGImageAlphaNone,
    kCGImageAlphaPremultipliedLast,
    kCGImageAlphaPremultipliedFirst,
    kCGImageAlphaLast,
    kCGImageAlphaFirst,
    kCGImageAlphaNoneSkipLast,
    kCGImageAlphaNoneSkipFirst
};
typedef enum CGImageAlphaInfo CGImageAlphaInfo;

kCGImageAlphaFirst
アルファ成分は各ピクセルの最上位ビットに格納されています。
例:事前に乗算されていないARGB。

kCGImageAlphaLast
アルファ成分は各ピクセルの最下位ビットビットに格納されています。
例:事前に乗算されていないRGBA。

kCGImageAlphaNone
アルファチャンネルがありません。
ピクセルの合計サイズは、色空間における色成分の数に必要な容量より大きい場合、最下位ビットは無視されます。
この値はkCGImageAlphaNoneSkipLastと同等です。

kCGImageAlphaNoneSkipFirst
アルファチャンネルがありません。
ピクセルの合計サイズは、色空間における色成分の数に必要な容量より大きい場合、最上位ビットは無視されます。

kCGImageAlphaOnly
色データが無く、アルファチャンネルのみです。

kCGImageAlphaNoneSkipLast
アルファチャンネルがありません。
ピクセルの合計サイズは、色空間における色成分の数に必要な容量より大きい場合、最下位ビットは無視されます。
この値はkCGImageAlphaNoneと同等です。

kCGImageAlphaPremultipliedFirst
アルファ成分は各ピクセルの最上位ビットに格納され、色成分はこのアルファ値が既に乗算されています。
例:事前に乗算済のARGB。

kCGImageAlphaPremultipliedLast
アルファ成分は各ピクセルの最下位ビットに格納され、色成分はこのアルファ値が既に既に乗算されています。
例:事前に乗算済のRGBA。

CGImageAlphaInfo定数は、(1)ビットマップがアルファチャンネルを含んでいるかどうか、(2)画像データ内の何処にアルファビットが位置しているか、(3)アルファ値が事前に乗算されているかを指定します。

関数CGImageGetAlphaInfoを呼び出すことによって、画像のCGImageAlphaInfo定数を取得することができます。
(CGImageAlphaInfo定数が一部を成すCGBitmapInfo定数は、関数CGImageCreateで提供されます)

Quartzは、『元』となる新たに塗る一ピクセルの一色要素と、『対象』となる背景画像の一色要素を、線形補間式を使用して対象画像の色成分と元画像の色成分を結合することによってアルファブレンディングを実現します。

Quartzは画像の事前に乗算されたアルファのみをサポートします。

Quartzでは指定された他の色値を事前に乗算する必要はありません。


Image Bitmap Information

ビットマップ画像の成分情報。

enum {
    kCGBitmapAlphaInfoMask = 0x1F,
    kCGBitmapFloatComponents = (1 << 8),
    kCGBitmapByteOrderMask = 0x7000,
    kCGBitmapByteOrderDefault = (0 << 12),
    kCGBitmapByteOrder16Little = (1 << 12),
    kCGBitmapByteOrder32Little = (2 << 12),
    kCGBitmapByteOrder16Big = (3 << 12),
    kCGBitmapByteOrder32Big = (4 << 12)
};
typedef uint32_t CGBitmapInfo;

kCGBitmapAlphaInfoMask
アルファ情報のマスク。
ビットマップに含まれているアルファチャンネルの指定と、どのようにアルファチャンネルを生成するかを指定する際に、アルファ情報の抽出に使用します。

kCGBitmapFloatComponents
ビットマップの成分は浮動小数点値です。

kCGBitmapByteOrderMask
ピクセルフォーマットのバイトオーダーです。

kCGBitmapByteOrderDefault
デフォルトのバイトオーダーです。

kCGBitmapByteOrder16Little
16ビットのリトルエンディアンフォーマットです。

kCGBitmapByteOrder32Little
32ビットのリトルエンディアンフォーマットです。

kCGBitmapByteOrder16Big
16ビットのビッグエンディアンフォーマットです。

kCGBitmapByteOrder32Big
32ビットのビッグエンディアンフォーマットです。

アプリケーションはメモリ内に格納するピクセルデータを、ARGBフォーマットを使用して、どのようにデータの読み込むかを処理する必要があります。

コードが正確に記述されていない場合、データを読み違えて色やアルファが間違った表示になる可能性があります。

Quartzのバイトオーダー定数は、ピクセルフォーマットのバイトオーダーを指定します。

Quartzのバイトオーダーの指定には、適切な定数とbitmapInfoパラメータをビット単位のOR演算子で組み合わせて使用します。



参考文献

CGImage Reference

猫にはわからないプログラミング/不透過型(opaque data type)

OpenGL ES 2.0

2011. 10. 24
INDEXABCDEFGHILPRSTUV

A

glActiveTexture
glAttachShader

B

glBindAttribLocation
glBindBuffer
glBindFramebuffer
glBindRenderbuffer
glBindTexture
glBlendColor
glBlendEquation
glBlendEquationSeparate
glBlendFunc
glBlendFuncSeparate
glBufferData
glBufferSubData

C

glCheckFramebufferStatus
glClear
glClearColor
glClearDepthf
glClearStencil
glColorMask
glCompileShader
glCompressedTexImage2D
glCompressedTexSubImage2D
glCopyTexImage2D
glCopyTexSubImage2D
glCreateProgram
glCreateShader
glCullFace

D

glDeleteBuffers
glDeleteFramebuffers
glDeleteProgram
glDeleteRenderbuffers
glDeleteShader
glDeleteTextures
glDepthFunc
glDepthMask
glDepthRangef
glDetachShader
glDisable
glDisableVertexAttribArray
glDrawArrays
glDrawElements

E

glEnable
glEnableVertexAttribArray

F

glFinish
glFlush
glFramebufferRenderbuffer
glFramebufferTexture2D
glFrontFace

G

glGenBuffers
glGenFramebuffers
glGenRenderbuffers
glGenTextures
glGenerateMipmap
glGet
glGetActiveAttrib
glGetActiveUniform
glGetAttachedShaders
glGetAttribLocation
glGetBufferParameteriv
glGetError
glGetFramebufferAttachmentParameteriv
glGetProgramInfoLog
glGetProgramiv
glGetRenderbufferParameteriv
glGetShaderInfoLog
glGetShaderPrecisionFormat
glGetShaderSource
glGetShaderiv
glGetString
glGetTexParameter
glGetUniform
glGetUniformLocation
glGetVertexAttrib
glGetVertexAttribPointerv

H

glHint

I

glIsBuffer
glIsEnabled
glIsFramebuffer
glIsProgram
glIsRenderbuffer
glIsShader
glIsTexture

L

glLineWidth
glLinkProgram

P

glPixelStorei
glPolygonOffset

R

glReadPixels
glReleaseShaderCompiler
glRenderbufferStorage

S

glSampleCoverage
glScissor
glShaderBinary
glShaderSource
glStencilFunc
glStencilFuncSeparate
glStencilMask
glStencilMaskSeparate
glStencilOp
glStencilOpSeparate

T

glTexImage2D
glTexParameter
glTexSubImage2D

U

glUniform
glUseProgram

V

glValidateProgram
glVertexAttrib
glVertexAttribPointer
glViewport



●A

glActiveTexture

void glActiveTexture(GLenum texture);

アクティブなテクスチャユニットを選択します。

glActiveTextureは、後続のテクスチャの状態の呼び出しに作用するテクスチャユニットを選択します。

実装がサポートするテクスチャユニット数は実装に依存しますが、少なくとも2である必要があります。

textureがGL_TEXTUREiの一つ(iの範囲は、0から(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS - 1))でない場合、GL_INVALID_ENUMが発生します。

texture
:アクティブにするテクスチャユニットを指定します。
テクスチャユニット数は実装に依存しますが、少なくとも2である必要があります。
textureはGL_TEXTUREiの一つ(iの範囲は、0から(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS - 1))である必要があります。
初期値はGL_TEXTURE0です。

△ Back to INDEX

glAttachShader


プログラムオブジェクトにシェーダオブジェクトをアタッチします。

void glAttachShader(GLuint program, GLuint shader);

実行可能オブジェクトを生成するには、一緒にリンクするもののリストを指定する方法が必要になります。

プログラムオブジェクトはこの機構を提供します。

プログラムオブジェクト内で一緒にリンクされるシェーダは、最初にプログラムオブジェクトにアタッチする必要があります。

glAttachShaderは、programによって指定されたプログラムオブジェクトに、shaderによって指定されたシェーダオブジェクトをアタッチします。

これは、シェーダがprogram上で実行されるリンク操作内に含まれることを示します。

シェーダオブジェクト上で実行できる全ての操作は、シェーダオブジェクトがプログラムオブジェクトにアタッチされているかどうかに関わらず有効です。

これは、シェーダオブジェクトがソースコードを読み込む前、またはシェーダオブジェクトがコンパイルされる前に、プログラムオブジェクトにシェーダオブジェクトがアタッチすることを許容しています。

同じタイプの複数のシェーダオブジェクトが、単一のプログラムオブジェクトにアタッチすることはできません。

しかし単一のシェーダオブジェクトが一つ以上のプログラムオブジェクトにアタッチすることはできます。

プログラムオブジェクトにアタッチされていたシェーダオブジェクトが削除された場合、削除フラグが立てられますが、アタッチされていた全てのプログラムオブジェクトから、glDetachShaderを呼び出すことによってデタッチされるまでは削除されません。

programまたはshaderが、OpenGLによって生成された値でない場合、GL_INVALID_VALUEが発生します。

programがプログラムオブジェクトでない場合、GL_INVALID_OPERATIONが発生します。

shaderがシェーダオブジェクトでない場合、GL_INVALID_OPERATIONが発生します。

shaderが既にprogramにアタッチされている、またはshaderと同じタイプの他のシェーダオブジェクトが既にprogramにアタッチされている場合、GL_INVALID_OPERATIONが発生します。

program
:シェーダオブジェクトをアタッチするプログラムオブジェクトを指定します。

shader
:アタッチするシェーダオブジェクトを指定します。

△ Back to INDEX



●B

glBindAttribLocation

名付けられたattribute変数で汎用頂点属性インデックスを関連付けします。

void glBindAttribLocation(GLuint program, GLuint index, const GLchar *name);

glBindAttribLocationは、汎用頂点属性インデックスでprogramによって指定されたプログラムオブジェクト内のユーザ定義attribute変数に関連付けるために使用されます。

ユーザ定義attribute変数は、name内のヌル終端文字列として渡されます。

この変数にバインドする汎用頂点属性インデックスは、indexによって指定されます。

programが現在の状態の一部の場合、汎用頂点属性indexを介して提供された値は、nameによって指定されたユーザ定義attribute変数の値に変更されます。

nameが行列attribute変数を参照している場合、indexは行列の最初の列を参照します。

他の行列の列は、その後にタイプmat2の行列の場合はindex+1、タイプmat3の行列の場合はindex+1とindex+2、そしてタイプmat4の行列の場合はindex+1、index+2、index+3の場所へ自動的にバインドされます。

このコマンドは、0からGL_MAX_VERTEX_ATTRIBS -1までの番号付けをした汎用変数ではなく、attribute変数のための記述的な名前を使用した頂点シェーダを作成できます。

各汎用属性インデックスに送信される値は、ちょうど色、法線、頂点位置などの標準的な頂点属性と同じように、現在の状態の一部です。

異なるプログラムオブジェクトがglUseProgramを呼び出すことによって現在作成している場合、汎用頂点属性は同じ値がindexにバインドされている新しいプログラムオブジェクト内の属性によって観測されるような方法で追跡されます。

attribute変数名から汎用属性インデックスのプログラムオブジェクトのバインディングは、glBindAttribLocationを呼び出すことによって、いつでも明示的に割り当てることができます。

属性のバインディングは、glLinkProgramが呼び出されるまで影響しません。

プログラムオブジェクトがリンクに成功した後、汎用属性のインデックス値は次のリンクコマンドが発行されるまで固定されたままになり(その値を照会することができるようになり)ます。

アプリケーションは、必要な時に自動的にバインドするものとしており、このコマンドを使用して標準OpenGL頂点属性のいずれかをバインドすることを許可していません。

プログラムオブジェクトがリンクされた後に発生する属性のバインディングは、次の機会にプログラムオブジェクトがリンクされるまで影響しません。

glBindAttribLocationは、頂点シェーダオブジェクトが指定されたプログラムオブジェクトにバインドされる前に呼び出すことができます。

これは頂点シェーダ内で使用されることが無いattribute変数名に、汎用頂点属性インデックスをバインドすることが許可されています。

nameが以前にバインドされている場合、その情報は失われます。

したがって、複数のインデックスにユーザ定義attribute変数をバインドすることはできませんが、同じインデックスに複数のユーザ定義attribute変数をバインドすることはできます。

アプリケーションは、同じ汎用頂点属性インデックスに一つ以上のユーザ定義attribute変数をバインドすることができます。

これはエイリアシングと呼ばれ、エイリアス属性の一つが実行可能プログラム内でアクティブな場合、またはシェーダを介していないパスが同じ場所に属性エイリアスのセットの一つ以上の属性を消費しない場合のみ許可されます。

コンパイラとリンカはエイリアシングが行われず、エイリアシングの無い状態でのみ動作する最適化を使用して解放すると想定して許可しています。

OpenGLの実装は、エイリアシングを検出するエラーチェックをする必要はありません。

なぜなら標準属性をバインドする方法が無いため、(汎用属性0を除いて)通常のもので汎用属性をエイリアスにすることは不可能です。

明示的にバインドされていないアクティブな属性は、glLinkProgramが呼び出された時に、リンカによってバインドされます。

場所の割り当ては、glGetAttribLocationを呼び出すことによって照会することができます。

glBindAttribLocationが呼び出された時、OpenGLはname文字列をコピーするので、アプリケーションは関数が帰って来た直後にname文字列のコピーを解放することができます。

indexがGL_MAX_VERTEX_ATTRIBS以上の場合、GL_INVALID_VALUEが発生します。

nameが予約接頭辞『gl_』で始まっていない場合、GL_INVALID_OPERATIONが発生します。

programがOpenGLによって生成された値でない場合、GL_INVALID_VALUEが発生します。

programがプログラムオブジェクトでない場合、GL_INVALID_OPERATIONが発生します。

program
:関連付けされるプログラムオブジェクトのハンドルを指定します。

index
:バインドされる汎用頂点属性のインデックスを指定します。

name
indexがバインドされる、ヌル終端文字を含む頂点シェーダのattribute変数の名前を指定します。

△ Back to INDEX

glBindBuffer

void glBindBuffer( GLenum target, GLuint buffer);

名付けられたバッファオブジェクトをバインドします。

glBindBufferは、名付けられたバッファオブジェクトを生成または使用することができます。

targetにGL_ARRAY_BUFFERまたはGL_ELEMENT_ARRAY_BUFFERを、bufferに新しいバッファオブジェクトの名前を設定してglBindBufferを呼び出すと、ターゲットにバッファオブジェクト名をバインドします。

バッファオブジェクトがターゲットにバインドした場合、ターゲットの以前のバインディングは自動的に破棄されます。

バッファオブジェクト名は符号無し整数です。

値ゼロは予約されていますが、各バッファオブジェクトのターゲットにデフォルトのバッファオブジェクトは存在しません。

代わりにbufferをゼロに設定すると以前にバインドされていたバッファオブジェクトは効果的にアンバインドされ、バッファオブジェクトのターゲットの為に使用されていたクライアントのメモリは復元されます。

バッファオブジェクト名と対応するバッファオブジェクトのコンテンツは、現在のGLレンダリングコンテキストの共有オブジェクト空間に対してローカルです。

新しいバッファオブジェクト名の設定には、glGenBuffersを使用することができます。

最初にバインドした直後のバッファオブジェクトの状態には、GL_STATIC_DRAWを使用したゼロサイズのメモリバッファがあります。

非ゼロのバッファオブジェクト名がバインドされている間、ターゲット上のGL操作はバインドされているバッファオブジェクトに影響を及ぼし、ターゲットのクエリはバインドされたバッファオブジェクトから状態を返します。

ゼロのバッファオブジェクト名がバインドされている間は、初期状態におけるように、ターゲット上で状態を変更または照会を試みると、GL_INVALID_OPERATIONエラーが発生します。

頂点配列のポインタの状態がglVertexAttribPointerへの呼び出しによって変更される場合、現在のバッファオブジェクトのバインディング(GL_ARRAY_BUFFER_BINDING)は、変更される頂点属性配列のインデックス化されたGL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDINGのいずれかに対応するクライアント状態にコピーされます。

非ゼロのバッファオブジェクトがGL_ARRAY_BUFFERのターゲットにバインドされている間、クライアント側のメモリへのポインタとして従来解釈されていた頂点配列ポインタのパラメータは、代わりに基本的な機械単位で測定されたバッファオブジェクト内のオフセットとして解釈されます。

非ゼロのバッファオブジェクトがGL_ELEMENT_ARRAY_BUFFERのターゲットにバインドされている間、クライアント側のメモリへのポインタとして従来解釈されていたglDrawElementsのインデックスのパラメータは、代わりに基本的な機械単位で測定されたバッファオブジェクト内のオフセットとして解釈されます。

glBindBufferで生成されたバッファオブジェクトのバインディングは、同じターゲットへ異なるバッファオブジェクト名がバインドされるまで、またはglDeleteBuffersでバインドされているバッファオブジェクトが削除されるまで、アクティブが持続します。

一度生成された名付けられたバッファオブジェクトは、必要に応じて任意のターゲットに再バインドすることができます。

ただしGLの実装は、最初にバインドしたターゲットに基づいて、バッファオブジェクトのストレージを最適化する方法についての選択肢を作成することができます。

targetが有効な値でない場合、GL_INVALID_ENUMが発生します。

target
:バッファオブジェクトがバインドされているターゲットを指定します。
シンボリック定数はGL_ARRAY_BUFFERまたはGL_ELEMENT_ARRAY_BUFFERである必要があります。

buffer
:バッファオブジェクトの名前を指定します。

△ Back to INDEX

glBindFramebuffer

void glBindFramebuffer(GLenum target, GLuint framebuffer);

名付けられたフレームバッファオブジェクトをバインドします。

glBindFramebufferは名付けられたフレームバッファオブジェクトを生成または使用することができます。

targetにGL_FRAMEBUFFERを、framebufferに新しいフレームバッファオブジェクトの名前を設定してglBindFramebufferを呼び出すと、フレームバッファオブジェクト名にバインドします。

フレームバッファオブジェクトがバインドされている時、以前のバインドは自動的に破棄されます。

フレームバッファオブジェクト名は符号無し整数です。

値ゼロは、ウィンドウシステムによって提供されるデフォルトのフレームバッファを表すために予約されています。

フレームバッファオブジェクト名と対応するフレームバッファオブジェクトのコンテンツは、現在のGLレンダリングコンテキストの共有オブジェクト空間に対してローカルです。

新しいフレームバッファオブジェクト名の設定には、glGenFramebuffersを使用することができます。

最初にバインドした直後のフレームバッファオブジェクトの状態には、オブジェクト型としてそれぞれGL_NONEの3つのアタッチメントポイント(GL_COLOR_ATTACHMENT0、GL_DEPTH_ATTACHMENT、そしてGL_STENCIL_ATTACHMENT)があります。

非ゼロのフレームバッファオブジェクト名がバインドされている間、ターゲットGL_FRAMEBUFFER上のGL操作はバインドされているフレームバッファオブジェクトに影響を及ぼし、ターゲットGL_FRAMEBUFFERまたはフレームバッファのクエリは、バインドされたフレームバッファオブジェクトからGL_DEPTH_BITSなどの状態を返します。

ゼロのフレームバッファオブジェクト名がバインドされている間は、初期状態におけるように、ターゲットGL_FRAMEBUFFER上で状態を変更または照会を試みると、GL_INVALID_OPERATIONエラーが発生します。

非ゼロのフレームバッファオブジェクト名がバインドされている間、全ての(glDrawArraysやglDrawElementsによる)フレームバッファへのレンダリングと、(glReadPixels、glCopyTexImage2D、またはglCopyTexSubImage2Dによる)フレームバッファからの読み込みには、デフォルトのウィンドウシステムが提供したフレームバッファではなく、アプリケーションが生成したフレームバッファオブジェクトにアタッチされた画像を使用してください。

アプリケーションで生成されるフレームバッファオブジェクト(即ち非ゼロの名前)は、デフォルトのウィンドウシステムが提供するフレームバッファとはいくつか異なる点が有ります。

第一に、フレームバッファでアタッチ可能な画像をアタッチやデタッチするため、カラーバッファや深度バッファ、ステンシルバッファに対して変更可能なアタッチメントポイントを持っています。

第二に、アタッチされた画像のサイズやフォーマットは完全にGLの制御されており、ピクセルフォーマットの選択やウィンドウのリサイズ、ディスプレイモードの変更といったウィンドウシステムのイベントによる影響を受けません。

第三に、アプリケーションが生成したフレームバッファオブジェクトへのレンダリング、あるいはオブジェクトからの読み込み時は、ピクセル所有権テストは常に成功します(即ち、オブジェクトが全てのピクセルを所有しています)。

第四に、フレームバッファオブジェクトは不可視のカラーバッファビットプレーンで、唯一の『オフスクリーン』カラーイメージアタッチメントであり、フロント/バックバッファやスワッピングの概念はありません。

最後に、フレームバッファオブジェクトにはマルチサンプルバッファが無く、実装依存の状態変数GL_SAMPLESやGL_SAMPLE_BUFFERSは、アプリケーションが生成するフレームバッファオブジェクトの場合には両方ともゼロになります。

glBindFramebufferで生成されたフレームバッファオブジェクトのバインディングは、異なるフレームバッファオブジェクト名がバインドされるまで、あるいはglDeleteFramebuffersでフレームバッファオブジェクトが削除されるまで、アクティブが持続します。

実装依存のピクセルの深さと関連する状態のクエリは、現在バインドされているフレームバッファオブジェクトから派生しています。

これらには、GL_RED_BITS、GL_GREEN_BITS、GL_BLUE_BITS、GL_ALPHA_BITS、GL_DEPTH_BITS、GL_STENCIL_BITS、GL_IMPLEMENTATION_COLOR_READ_TYPE、GL_IMPLEMENTATION_COLOR_READ_FORMAT、GL_SAMPLES、そしてGL_SAMPLE_BUFFERSが含まれています。

targetがGL_FRAMEBUFFERでない場合は、GL_INVALID_ENUMが発生します。

target:フレームバッファオブジェクトをバインドするターゲットを指定します。
シンボリック定数はGL_FRAMEBUFFERである必要があります。

framebuffer:フレームバッファオブジェクトの名前を指定します。

△ Back to INDEX

glBindRenderbuffer

void glBindRenderbuffer(GLenum target, GLuint renderbuffer);

名付けられたレンダバッファオブジェクトをバインドします。

レンダバッファは、レンダリング可能な内部フォーマットの単一の画像を含む、データストレージオブジェクトです。

レンダバッファの画像は、レンダリングの出力先や読み込みのためのソースとして、フレームバッファオブジェクトへのアタッチに使用することができます。

glBindRenderbufferは名付けられたレンダバッファオブジェクトを生成または使用することができます。

targetにGL_RENDERBUFFERを、renderbufferに新しいレンダバッファオブジェクトの名前を設定してglBindRenderbufferを呼び出すと、レンダバッファオブジェクト名にバインドします。

レンダバッファオブジェクトがバインドされている時、以前のバインドは自動的に破棄されます。

レンダバッファオブジェクト名は符号無し整数です。

値ゼロは予約されていますが、デフォルトのレンダバッファは存在しません。

代わりに、renderbufferをゼロに設定すると、以前にバインドされていたレンダバッファオブジェクトは事実上アンバインドされます。

レンダバッファオブジェクト名と対応するレンダバッファオブジェクトのコンテンツは、現在のGLレンダリングコンテキストの共有オブジェクト空間に対してローカルです。

新しいレンダバッファオブジェクト名の設定には、glGenRenderbuffersを使用することができます。

最初にバインドした直後のレンダバッファオブジェクトの状態は、フォーマットGL_RGBA4で、ゼロサイズのred、green、blue、alpha、depth、そしてステンシルピクセル深度のゼロサイズのメモリバッファです。

非ゼロのレンダバッファオブジェクト名がバインドされている間、ターゲットGL_RENDERBUFFER上のGL操作はバインドされているレンダバッファオブジェクトに影響を及ぼし、ターゲットGL_RENDERBUFFERのクエリは、バインドされたレンダバッファオブジェクトから状態を返します。

ゼロのレンダバッファオブジェクト名がバインドされている間は、初期状態におけるように、ターゲットGL_RENDERBUFFER上で状態を変更または照会を試みると、GL_INVALID_OPERATIONエラーが発生します。

glBindRenderbufferで生成されたフレームバッファオブジェクトのバインディングは、異なるレンダバッファオブジェクト名がバインドされるまで、あるいはglDeleteRenderbuffersでレンダバッファオブジェクトが削除されるまで、アクティブが持続します。

targetがGL_RENDERBUFFERでない場合は、GL_INVALID_ENUMが発生します。

target:レンダバッファオブジェクトをバインドするターゲットを指定します。
シンボリック定数はGL_RENDERBUFFERである必要があります。

renderbuffer:レンダバッファオブジェクトの名前を指定します。

△ Back to INDEX

glBindTexture

void glBindTexture(GLenum target, GLuint texture);

テクスチャを貼るターゲットへ名付けられたテクスチャをバインドします。

glBindTextureは名付けられたテクスチャを生成または使用することができます。

targetをGL_TEXTURE_2DまたはGL_TEXTURE_CUBE_MAPに設定してglBindTextureを呼び出し、新しいテクスチャの名前をtextureに設定し、現在アクティブなテクスチャユニットのターゲットへテクスチャ名をバインドします。

ターゲットにテクスチャがバインドされていた場合、そのターゲットの以前のバインディングは自動的に破棄されます。

テクスチャ名は符号無し整数です。

値0は、各テクスチャのターゲットのデフォルトのテクスチャを表現するために予約されています。

テクスチャ名と対応するテクスチャのコンテンツは、現在のGLレンダリングコンテキストの共有テクスチャオブジェクト空間に対してローカルです。

新しいテクスチャ名の設定を生成するには、glGenTexturesを使用してください。

テクスチャが最初にバインドされた時、最初にGL_TEXTURE_2Dにバインドされた場合は二次元テクスチャに、最初にGL_TEXTURE_CUBE_MAPにバインドされた場合はキューブマップテクスチャになると、指定されたターゲットは仮定します。

二次元テクスチャの状態は最初にバインドされた直後のGLの初期化時にデフォルトのGL_TEXTURE_2Dの状態に相当し、キューブマップテクスチャも同様です。

テクスチャがバインドされている間、バインドされているターゲット上のGLの操作はバインドされているテクスチャに影響を与え、バインドされているターゲットのクエリはバインドされているテクスチャから状態が返されます。

テクスチャがバインドされているターゲットの次元のテクスチャマッピングがアクティブな場合、バインドされているテクスチャが使用されます。

実際には、現在バインドされているテクスチャのエイリアスがテクスチャのターゲットとなり、初期化時にテクスチャ名0がバインドされたデフォルトテクスチャを参照します。

glBindTextureで生成されたテクスチャのバインディングは、異なるテクスチャが同じターゲットにバインドされる、またはバインドされているテクスチャがglDeleteTexturesによって削除されるまでアクティブを保持します。

一度生成されると、名付けられたテクスチャは必要に応じて元と同じ次元のターゲットに再バインドさせることができます。

通常、glTexImage2Dを使用してテクスチャ画像を再読み込みするよりも、テクスチャターゲットの1つに既存の名付けられたテクスチャをglBindTextureを使用してバインドした方が遥かに高速です。

targetが有効な値の1つでない場合、GL_INVALID_ENUMが発生します。

target:テクスチャがバインドされている、アクティブなテクスチャユニットのターゲットを指定します。
GL_TEXTURE_2DかGL_TEXTURE_CUBE_MAPのいずれかである必要があります。

texture:テクスチャの名前を指定します。

△ Back to INDEX

glBlendFunc

void glBlendFunc(GLenum sfactor, GLenum dfactor);

ピクセル演算を指定します。

ピクセルは、元となるRGBA値とフレームバッファ(の対象となる値)内にある既存のRGBA値をブレンドする関数を使用して描画することができます。

ブレンディングの初期状態は無効になっています。

ブレンディングを有効/無効にするには、引数GL_BLENDでglEnableglDisableを使用してください。

glBlendFuncは、有効になっている時のブレンディング操作を定義しています。

sfactorは、元となる色成分の比率をメソッドを使用して指定します。

dfactorは、対象となる色成分の比率を1メソッドを使用して指定します。

有効なメソッドは以下に表で表します。

各メソッドは、赤、緑、青、そしてアルファの4つの比率要素で定義されています。

表とその後の方程式において、元と対象の色成分は(Rs, Gs, Bs, As)と(Rd, Gd, Bd, Ad)として表されています。

glBlendColorによって指定された色は、(Rc, Gc, Bc, Ac)として表されています。

これらは0から(kR, kG, kB, kA)間の整数値を持つとすると、

kc = 2(mc) - 1

と表され、(mR, mG, mB, mA)は、赤、緑、青、そしてアルファのビットプレーン数を示します。

元と対象の比率要素は、(sR, sG, sB, sA)と(dR, dG, dB, dA)として参照されます。

比率要素は表では(fR, fG, fB, fA)と示しており、元または対象の要素を表します。

全ての比率要素の範囲は[0, 1]です。

Parameter(fR, fG, fB, fA)
GL_ZERO(0, 0, 0, 0)
GL_ONE(1, 1, 1, 1)
GL_SRC_COLOR(R/ kR, G/ kG, B/ kB, A/ kA)
GL_ONE_MINUS_SRC_COLOR(1, 1, 1, 1) - (R/ kR, G/ kG, B/ kB, A/ kA)
GL_DST_COLOR(R/ kR, G/ kG, B/ kB, A/ kA)
GL_ONE_MINUS_DST_COLOR(1, 1, 1, 1) - (R/ kR, G/ kG, B/ kB, A/ kA)
GL_SRC_ALPHA(A/ kA, A/ kA, A/ kA, A/ kA)
GL_ONE_MINUS_SRC_ALPHA(1, 1, 1, 1) - (A/ kA, A/ kA, A/ kA, A/ kA)
GL_DST_ALPHA(A/ kA, A/ kA, A/ kA, A/ kA)
GL_ONE_MINUS_DST_ALPHA(1, 1, 1, 1) - (A/ kA, A/ kA, A/ kA, A/ kA)
GL_CONSTANT_COLOR(Rc, Gc, Bc, Ac)
GL_ONE_MINUS_CONSTANT_COLOR(1, 1, 1, 1) - (Rc, Gc, Bc, Ac)
GL_CONSTANT_ALPHA(Ac, Ac, Ac, Ac)
GL_ONE_MINUS_CONSTANT_ALPHA(1, 1, 1, 1) - (Ac, Ac, Ac, Ac)
GL_SRC_ALPHA_SATURATE(i, i, i, 1)

表において、

i = min(As, kA - Ad) / kA

ピクセルのブレンドRGBA値の決定に、システムはglBlendEquationまたはglBlendEquationSeparateによって設定される方程式の一つを使用します。

ブレンディングは不正確な整数のカラー値で計算するため、ブレンディングの計算は正確ではありません。

しかし1に等しくなる必要があるブレンド要素は、その被乗数を変更しないことが保証されており、0に等しいブレンド要素は被乗数を0へ減少させます。

元となるアルファは正確な素材の不透明度として意図されており、完全な不透明度を表す1.0(KA)から、完全な透明度を表す0.0(0)の範囲になっています。

透明度は最奥から最前にソートされたプリミティブを、ブレンド関数(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)を使用して、最も頻繁に実装されます。

この透明度の計算は、フレームバッファのアルファビットプレーンの存在を必要としないことに注意してください。

sfactorまたはdfactorが有効な値でない場合、GL_INVALID_ENUMが発生します。

sfactor:元となる赤、緑、青、そしてアルファのブレンディング要素をどのように計算するかを指定します。
GL_ZERO、GL_ONE、GL_SRC_COLOR、GL_ONE_MINUS_SRC_COLOR、GL_DST_COLOR、GL_ONE_MINUS_DST_COLOR、GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA、GL_DST_ALPHA、GL_ONE_MINUS_DST_ALPHA、GL_CONSTANT_COLOR、GL_ONE_MINUS_CONSTANT_COLOR、GL_CONSTANT_ALPHA、GL_ONE_MINUS_CONSTANT_ALPHA、そしてGL_SRC_ALPHA_SATURATEのシンボリック定数を指定できます。
初期値はGL_ONEです。

dfactor:対象となる赤、緑、青、そしてアルファのブレンディング要素をどのように計算するかを指定します。
GL_ZERO、GL_ONE、GL_SRC_COLOR、GL_ONE_MINUS_SRC_COLOR、GL_DST_COLOR、GL_ONE_MINUS_DST_COLOR、GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA、GL_DST_ALPHA、GL_ONE_MINUS_DST_ALPHA、GL_CONSTANT_COLOR、GL_ONE_MINUS_CONSTANT_COLOR、GL_CONSTANT_ALPHA、そしてGL_ONE_MINUS_CONSTANT_ALPHAのシンボリック定数を指定できます。
初期値はGL_ZEROです。

△ Back to INDEX

glBufferData

void glBufferData(GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage);

バッファオブジェクトのデータストアを生成し初期化します。

glBufferDataは、現在ターゲットにバインドされているバッファオブジェクト用の新しいデータストアを生成します。

既存のデータストアは削除されます。

新しいデータストアは、指定されたバイト単位のsizeusageで生成されます。

dataがNULLで無い場合、データストアはポインタの指すデータで初期化されます。

usageは、バッファオブジェクトのデータストアにアクセスする方法に関するGLの実装へのヒントです。

バッファオブジェクトのパフォーマンスに著しく影響する可能性がある、よりインテリジェントな解決を行う為のGLの実装を可能にします。

しかし、実際のデータストアの使用に制限を加えるものではありません。

usageは、(変更と使用の)アクセスの頻度と、アクセスの性質の二つの部分に分けることができます。

アクセスの頻度は下記のいずれかになります。

STREAM
データストアのコンテンツは一度に変更され、ほんの数回使用される。

STATIC
データストアのコンテンツは一度に変更され、何度も使用される。

DYNAMIC
データストアのコンテンツは繰り返し変更され、何度も使用される。

アクセスの性質は下記である必要があります。

DRAW
データストアのコンテンツはアプリケーションによって変更され、GLの描画用および画像の仕様コマンドのソースとして使用されます。

dataがNULLの場合、指定されたサイズのデータストアは作成されますが、コンテンツは初期化されていないため未定義となります。

クライアントはクライアントプラットフォームの要件と一致するデータ要素に揃える必要があり、NNを構成するデータへのバッファ内のオフセットという追加のベースレベルを要求します。

targetがGL_ARRAY_BUFFERまたはGL_ELEMENT_ARRAY_BUFFERでない場合、GL_INVALID_ENUMが発生します。

usageがGL_STREAM_DRAW、GL_STATIC_DRAW、またはGL_DYNAMIC_DRAWでない場合、GL_INVALID_ENUMが発生します。

sizeが負の場合、GL_INVALID_VALUEが発生します。

予約されているバッファオブジェクト名0がtargetにバインドされている場合、GL_INVALID_OPERATIONが発生します。

GLが指定されたsizeでデータストアを生成できない場合、GL_OUT_OF_MEMORYが発生します。

target
:ターゲットのバッファオブジェクトを指定します。
シンボリック定数はGL_ARRAY_BUFFERまたはGL_ELEMENT_ARRAY_BUFFERである必要があります。

size
:バッファオブジェクトの新しいデータストアのサイズをバイト単位で指定します。

data
:初期化用のデータストアにコピーされるデータへのポインタ、またはコピーするデータが存在しない場合はNULLを指定します。

usage
:予想されるデータストアの使用パターンを指定します。
シンボリック定数はGL_STREAM_DRAW、GL_STATIC_DRAW、またはGL_DYNAMIC_DRAWである必要があります。

△ Back to INDEX



●C

glCheckFramebufferStatus

GLenum glCheckFramebufferStatus(GLenum target);

フレームバッファオブジェクトのフレームバッファ完全性ステータスを返します。

glCheckFramebufferStatusは、現在バインドされているフレームバッファが完全であるかどうかを識別するシンボリック定数を返し、そうでない場合はフレームバッファの完全性の規則に違反していることになります。

フレームバッファが完全である場合は、GL_FRAMEBUFFER_COMPLETEが返されます。

フレームバッファが完全でない場合は、以下の値が返されます。

GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
全てのフレームバッファのアタッチメントポイントが、フレームバッファのアタッチメントとして完全ではありません。
これは、アタッチされたレンダバッファやテクスチャの少なくとも一つのアタッチメントポイントで、アタッチされたオブジェクトがもはや存在していない、あるいはゼロの幅または高さのアタッチされた画像を持つ、あるいはカラーアタッチメントポイントがカラーレンダリング不可能な画像にアタッチされている、あるいは深度アタッチメントポイントが深度レンダリング不可能な画像にアタッチされている、あるいはステンシルアタッチメントポイントがステンシルレンダリング不可能な画像にアタッチされていることを意味します。
カラーレンダリング可能なフォーマットには、GL_RGBA4、GL_RGB5_A1、そしてGL_RGB565が含まれています。
深度レンダリング可能なフォーマットはGL_DEPTH_COMPONENT16のみです。
ステンシルレンダリング可能なフォーマットはGL_STENCIL_INDEX8のみです。

GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS
全てのアタッチされた画像が、同じ幅と高さを持っていません。

GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
フレームバッファにアタッチされた画像がありません。

GL_FRAMEBUFFER_UNSUPPORTED
アタッチされた画像の内部フォーマットの組み合わせが、制約の実装依存の設定に違反しています。

現在バインドされているフレームバッファが完全なフレームバッファでない場合、読み書きにフレームバッファを使用しようと試みるとエラーになります。

これはフレームバッファが完全なフレームバッファでない時に呼び出された場合に、レンダリングコマンド(glDrawArraysとglDrawElements)がフレームバッファの読み込みコマンド(glReadPixels、glCopyTexImage2D、そしてglCopyTexSubImage2D)と同様に、GL_INVALID_FRAMEBUFFER_OPERATIONエラーを発生させることを意味します。

必須ではありませんが、アプリケーションがglCheckFramebufferStatusを呼び出して、レンダリングする前にフレームバッファが完全かどうかを確認することを強く推奨します。

なぜなら、いくつかの実装は内部フォーマットの特定の組み合わせへのレンダリングがサポートされていない可能性があるためです。

この場合、GL_FRAMEBUFFER_UNSUPPORTEDが返されます。

デフォルトのウィンドウシステムが提供するフレームバッファは常に完全なフレームバッファであるため、GL_FRAMEBUFFER_BINDINGが0の時にGL_FRAMEBUFFER_COMPLETEが返されます。

エラーが発生した場合、paramsの内容は変更されません。

targetがGL_FRAMEBUFFERでない場合、GL_INVALID_ENUMが発生します。

target:ターゲットのフレームバッファオブジェクトを指定します。
シンボリック定数はGL_FRAMEBUFFERを指定する必要があります。

△ Back to INDEX

glClear


void glClear(GLbitfield mask);

プリセット値にバッファをクリアします。

glClearは、glClearColor、glClearDepthf、そしてglClearStencilによって予め選択された値に、ウィンドウのビットプレーン空間を設定します。

ピクセル所有権テスト、シザーテスト、ディザリング、そしてバッファのホワイトマスクは、glClearの操作に影響を与えます。

シザーボックスはクリアされた領域を制限します。

ブレンド関数、ステンシル、フラグメントのシェーディング、そして深度バッファリングは、glClearによって無視されます。

glClearは、バッファをクリアすることを示すいくつかの値から、ORのビットマスクを1つ引数として選択します。

ビットマスクの値は以下の通りです。

GL_COLOR_BUFFER_BIT
現在のカラー書き込みが有効なバッファを示します。

GL_DEPTH_BUFFER_BIT
深度バッファを示します。

GL_STENCIL_BUFFER_BIT
ステンシルバッファを示します。

各バッファがクリアされた時の値は、そのバッファのクリア値の設定に依存します。

バッファが存在しない場合、glClearはバッファに対して何も影響を与えません。

定義済の3つのビットマスク以外のビットマスクがmaskに設定された場合、GL_INVALID_VALUEが発生します。

mask:バッファをクリアすることを示す、ORのビットマスクを指定します。
GL_COLOR_BUFFER_BIT、GL_DEPTH_BUFFER_BIT、そしてGL_STENCIL_BUFFER_BITの3つのマスクがあります。

△ Back to INDEX

glClearColor

void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);

カラーバッファのクリア値を指定します。

glClearColorは、glClearでカラーバッファをクリアする際に使用する、赤、緑、青、そしてアルファ値を指定します。

glClearColorが指定できる値は、[0, 1]の範囲に限定されています。

redgreenbluealpha:カラーバッファをクリアする時に使用する、赤、緑、青、そしてアルファ値を指定します。
初期値は全て0です。

△ Back to INDEX

glCompileShader

void glCompileShader(GLuint shader);

シェーダオブジェクトをコンパイルします。

シェーダコンパイラをサポートする実装の場合、glCompileShaderはshaderによって指定されたシェーダオブジェクト内に格納されている、ソースコード文字列をコンパイルします。

コンパイルの状態は、シェーダオブジェクトの状態の一部として格納されます。

この値は、シェーダがエラー無しでコンパイルされ、使用準備ができた場合はGL_TRUEが設定され、それ以外の場合はGL_FALSEになります。

引数にshaderとGL_COMPILE_STATUSを渡してglGetShaderivを呼び出すことによって、照会することができます。

シェーダのコンパイルは、『OpenGL ES Shading Language Specification』によって指定されたいくつかの理由で失敗することがあります。

コンパイルが成功したかどうかは、glGetShaderInfoLogを呼び出すことによって、シェーダオブジェクトの情報ログからコンパイルについての情報を取得することができます。

シェーダコンパイラのサポートはオプションであり、したがって引数GL_SHADER_COMPILERでglGetを呼び出すことによって、使用する前に照会する必要があります。

glShaderSourceglCompileShader、glGetShaderPrecisionFormat、そしてglReleaseShaderCompilerは、シェーダコンパイラをサポートしない実装上ではGL_INVALID_OPERATIONを発生させます。

このような実装の代わりに、事前にコンパイルされたシェーダバイナリを供給するための代替として、glShaderBinaryが提供されています。

シェーダコンパイラがサポートされていない場合、GL_INVALID_OPERATIONが発生します。

shaderがOpenGLによって生成された値でない場合、GL_INVALID_VALUEが発生します。

shaderがシェーダオブジェクトでない場合、GL_INVALID_OPERATIONが発生します。

shader
:コンパイルするシェーダオブジェクトを指定します。

△ Back to INDEX

glCreateProgram

GLuint glCreateProgram(void);

プログラムオブジェクトを生成します。

glCreateProgramは空のプログラムオブジェクトを生成し、参照できるように非ゼロ値を返します。

プログラムオブジェクトは、シェーダオブジェクトをアタッチすることができるオブジェクトです。

これはプログラムを生成するためにリンクされるシェーダオブジェクトを指定する機構を提供します。

また、(例えば、頂点シェーダとフラグメントシェーダ間の互換性をチェックするなど)プログラムの生成に使用されるシェーダの互換性をチェックするための手段も提供します。

プログラムオブジェクトの一部として不要になった時は、シェーダオブジェクトをデタッチすることができます。

glCompileShaderでシェーダオブジェクトのコンパイルが成功し、glLinkProgramでプログラムオブジェクトのリンクが成功し、glAttachShaderでシェーダオブジェクトのアタッチが成功することによって、プログラムオブジェクト内で一つ以上の実行可能オブジェクトが生成されます。

これらの実行可能オブジェクトは、glUseProgramを呼び出した時に、現在の状態の一部となります。

プログラムオブジェクトは、glDeleteProgramを呼び出すことによって削除することができます。

プログラムオブジェクトに関連付けられているメモリは、コンテキストの現在のレンダリング状態の一部でなくなった時に削除されます。

テクスチャオブジェクトと同様に、プログラムオブジェクトの名前空間はコンテキストのセット間で共有されることがあり、その場合コンテキストのサーバ側と同じアドレス空間を共有します。

名前空間がコンテキスト間で共有されている場合、全てのアタッチされているオブジェクトとそれらのアタッチされているオブジェクトに関連するデータも、同様に共有されます。

アプリケーションは、オブジェクトが異なる実行スレッドからアクセスする場合に、APIの呼び出し間での同期を提供する責任があります。

プログラムオブジェクトの生成でエラーが発生した場合、この関数は0を返します。

△ Back to INDEX

glCreateShader

GLuint glCreateShader(GLenum shaderType);

シェーダオブジェクトを生成します。

glCreateShaderは空のシェーダオブジェクトを生成し、参照できるようにするために非ゼロの値を返します。

シェーダオブジェクトは、シェーダを定義するソースコード文字列の保持に使用します。

shaderTypeは、生成されるシェーダのタイプを示します。

シェーダの2つのタイプがサポートされています。

GL_VERTEX_SHADERタイプのシェーダは、プログラマブル頂点プロセッサ上で実行することを意図したシェーダです。

GL_FRAGMENT_SHADERタイプのシェーダは、プログラマブルフラグメントプロセッサ上で実行することを意図したシェーダです。

生成された時、シェーダオブジェクトのGL_SHADER_TYPEパラメータは、shaderTypeの値に応じてGL_VERTEX_SHADERかGL_FRAGMENT_SHADERのどちらかに設定されています。

テクスチャオブジェクトと同様に、シェーダオブジェクトの名前空間はコンテキストのセット間で共有されることがあり、その場合コンテキストのサーバ側と同じアドレス空間を共有します。

名前空間がコンテキスト間で共有されている場合、全てのアタッチされているオブジェクトとそれらのアタッチされているオブジェクトに関連するデータも、同様に共有されます。

アプリケーションは、オブジェクトが異なる実行スレッドからアクセスする場合に、APIの呼び出し間での同期を提供する責任があります。

シェーダオブジェクトの生成でエラーが発生した場合、この関数は0を返します。

shaderTypeが有効な値でない場合、GL_INVALID_ENUMが発生します。

shaderType
:生成するシェーダのタイプを指定します。
GL_VERTEX_SHADERかGL_FRAGMENT_SHADERのどちらかである必要があります。

△ Back to INDEX



●D

glDeleteBuffers

void glDeleteBuffers(GLsizei n, const GLuint * buffers);

名付けられたバッファオブジェクトを削除します。

glDeleteBuffersは、配列buffersの要素によって名付けられたn個のバッファオブジェクトを削除します。

バッファオブジェクトが削除された後はコンテンツが無くなり、(glGenBuffersなどで)再利用できるように名前が解放されます。

現在バインドされているバッファオブジェクトが削除された場合、バインディングは0(クライアントが使用していたメモリが戻り、バッファが空)に戻ります。

glDeleteBuffersは暗黙的に、0および既存のバッファオブジェクトと対応しない名前は無視します。

nが負の場合、GL_INVALID_VALUEが発生します。

n
:削除するバッファオブジェクト数を指定します。

buffers
:削除するバッファオブジェクトの配列を指定します。

△ Back to INDEX


glDeleteFramebuffers

名付けられたフレームバッファオブジェクトを削除します。

void glDeleteFramebuffers(GLsizei n, const GLuint * framebuffers);

glDeleteFramebuffersは、配列framebuffersの要素によって名付けられたn個のフレームバッファオブジェクトを削除します。

フレームバッファオブジェクトが削除された後は接続が無くなり、(glGenFramebuffersなどで)再利用できるように名前が解放されます。

現在バインドされているフレームバッファオブジェクトが削除された場合、バインディングは0(ウィンドウシステムが提供するフレームバッファ)に戻ります。

glDeleteFramebuffersは暗黙的に、0および既存のフレームバッファオブジェクトと対応しない名前は無視します。

nが負の場合、GL_INVALID_VALUEが発生します。

n
:削除するフレームバッファ数を指定します。

framebuffers
:削除するフレームバッファオブジェクトの配列を指定します。

△ Back to INDEX

glDeleteProgram

void glDeleteProgram(GLuint program);

プログラムオブジェクトを削除します。

glDeleteProgramは、メモリを解放し、programによって指定されたプログラムオブジェクトに関連付けられた名前を無効にします。

このコマンドは、事実上glCreateProgramへの呼び出しの効果を無効にします。

プログラムオブジェクトが現在のレンダリング状態の一部として使用されている場合、削除用のフラグが立てられますが、レンダリングコンテキストの現在の状態の一部でなくなるまで削除されません。

削除するプログラムオブジェクトがアタッチされたシェーダオブジェクトを持つ場合、それらのシェーダオブジェクトは自動的にデタッチされますが、事前にglDeleteShaderへの呼び出しによって既に削除用のフラグが立てられていない限り削除されません。

programが値0の場合は無視されます。

プログラムオブジェクトが削除フラグを持っているかどうかを判断するには、引数にprogramとGL_DELETE_STATUSを渡してglGetProgramivを呼び出します。

programがOpenGLで生成された値でない場合は、GL_INVALID_VALUEが発生します。

program:削除するプログラムオブジェクトを指定します。

△ Back to INDEX

glDeleteRenderbuffers

void glDeleteRenderbuffers(GLsizei n, const GLuint * renderbuffers);

名付けられたレンダバッファオブジェクトを削除します。

glDeleteRenderbuffersは、配列renderbuffersの要素によって名付けられたn個のレンダバッファオブジェクトを削除します。

レンダバッファオブジェクトが削除された後はコンテンツが無くなり、(glGenRenderbuffersなどで)再利用できるように名前が解放されます。

現在バインドされているレンダバッファオブジェクトが削除された場合、バインディングは0(レンダバッファオブジェクト無し)に戻ります。

更に、レンダバッファの画像がフレームバッファオブジェクトにアタッチされている場合は、レンダバッファオブジェクトを削除する時には特別な注意を払う必要があります。

この場合、削除されたレンダバッファオブジェクトが現在バインドされているフレームバッファオブジェクトにアタッチされていると、自動的にデタッチされます。

しかし、その他のフレームバッファオブジェクトへ接続は、アプリケーションの責任です。

glDeleteRenderbuffersは暗黙的に、0および既存のレンダバッファオブジェクトと対応しない名前は無視します。

nが負の場合、GL_INVALID_VALUEが発生します。

n
:削除するレンダバッファオブジェクト数を指定します。

renderbuffers
:削除するレンダバッファオブジェクトの配列を指定します。

△ Back to INDEX

glDeleteShader

void glDeleteShader(GLuint shader);

シェーダオブジェクトを削除します。

glDeleteShaderはメモリを解放し、shaderによって指定されたシェーダオブジェクトに関連付けられた名前を無効にします。

このコマンドは、実質的にglCreateShaderの呼び出し効果を取り消します。

削除するシェーダオブジェクトがプログラムオブジェクトにアタッチされている場合、削除フラグが立てられますが、レンダリングコンテキストのプログラムオブジェクトへのアタッチされなくなるまで削除されません。

(すなわち、削除する前にアタッチされているものをデタッチする必要があります。)

shaderが値0の場合は無視されます。

オブジェクトに削除フラグが設定されているかどうかを判断するには、引数shaderとGL_DELETE_STATUSでglGetShaderivを呼び出します。

shaderがOpenGLによって生成された値でない場合、GL_INVALID_VALUEが発生します。

shader
:削除するシェーダオブジェクトを指定します。

△ Back to INDEX

glDeleteTextures

void glDeleteTextures(GLsizei n, const GLuint * textures);

名付けられたテクスチャを削除します。

glDeleteTexturesは、配列texturesの要素によって名付けられたn個のテクスチャを削除します。

テクスチャが削除された後、コンテンツまたは大きさを持っていない場合、名前は(glGenTexturesなどで)再利用するために解放されます。

現在バインドされているテクスチャが削除された場合、バインディングは(デフォルトテクスチャの)0に戻ります。

glDeleteTexturesは暗黙的に、0と既存のテクスチャに対応していない名前は無視します。

nが負の場合GL_INVALID_VALUEが発生します。

n:削除するテクスチャの数を指定します。

textures:削除するテクスチャの配列を指定します。

△ Back to INDEX

glDrawArrays

void glDrawArrays(GLenum mode, GLint first, GLsizei count);

配列データからプリミティブをレンダリングします。

glDrawArraysは、非常に少ないサブルーチンの呼び出しで、複数の幾何学的プリミティブを指定します。

個々の頂点属性を渡してGLの一連の処理手順を呼び出す代わりに、glVertexAttribPointerを使用して事前に頂点、法線、そして色のそれぞれの配列を指定すると、単一のglDrawArraysを呼び出してそれらを使用してプリミティブのシーケンスを構築することができます。

glDrawArraysが呼び出されると、それぞれ有効な配列を要素firstから始まりcountを使用して順次要素を取り出し、幾何学的なプリミティブのシーケンスを構築します。

modeは、どのようにプリミティブは構築されているか、そしてどのように配列の要素はこれらのプリミティブを構築するかを指定します。

一般的な頂点属性配列を有効または無効にするには、glEnableVertexAttribArrayまたはglDisableVertexAttribArrayを呼び出します。

glUseProgramによって設定された現在のプログラムオブジェクトが無効な場合、レンダリング結果は未定義です。

ただしこの場合、エラーが発生しません。

modeが有効な値でない場合、GL_INVALID_ENUMが発生します。

countが負の場合、GL_INVALID_VALUEが発生します。

現在バインドされているフレームバッファが完全なフレームバッファでない場合(すなわちglCheckFramebufferStatusからの戻り値がGL_FRAMEBUFFER_COMPLETEでない場合)、GL_INVALID_FRAMEBUFFER_OPERATIONが発生します。

mode
:どのようにプリミティブをレンダリングするかを指定します。
シンボリック定数GL_POINTS、GL_LINE_STRIP、GL_LINE_LOOP、GL_LINES、GL_TRIANGLE_STRIP、GL_TRIANGLE_FAN、GL_TRIANGLESが有効です。

first
:有効な配列内での開始インデックスを指定します。

count
:レンダリングするインデックス数を指定します。

△ Back to INDEX



●E

glEnable

void glEnable(GLenum cap);

void glDisable(GLenum cap);

サーバ側のGLの機能を有効または無効にします。

glEnableとglDisableは、各種の機能を有効または無効にします。

任意の機能の現在の設定を取得するには、glIsEnabledまたはglGetを使用します。

GL_DITHERを除き、各機能の初期値はGL_FALSEです。

GL_DITHERの初期値はGL_TRUEです。

glEnableとglDisableの両方は、以下の値のいずれかを単一の引数capで受け取ります。

GL_BLEND
有効にした場合、カラーバッファ内の値で計算されたフラグメントの色の値をブレンドします。
glBlendFunc参照。

GL_CULL_FACE
有効にした場合、ウィンドウ座標内のワインディングに基づいてポリゴンを間引きします。
glCullFace参照。

GL_DEPTH_TEST
有効にした場合、深度の比較と深度バッファの更新を行います。
たとえ深度バッファが存在し、深度マスクが非ゼロであっても、深度テストが無効の場合は深度バッファは更新されないことに注意してください。
glDepthFuncとglDepthRangef参照。

GL_DITHER

有効にした場合、カラーバッファへ書き込む前に色要素またはインデックスをディザリングします。

GL_POLYGON_OFFSET_FILL
有効にした場合、ラスタライズによって生成されたポリゴンのフラグメントの深度値にオフセットを追加します。
glPolygonOffset参照。

GL_SAMPLE_ALPHA_TO_COVERAGE
有効にした場合、各ビットが対応するサンプル位置でのアルファ値によって決定された、一時的な適用範囲値を計算します。
一時的な適用範囲値は、フラグメントの適用範囲値とANDが取られます。

GL_SAMPLE_COVERAGE
有効にした場合、フラグメントの適用範囲は一時的な適用範囲値とANDが取られます。
GL_SAMPLE_COVERAGE_INVERTがGL_TRUEに設定されている場合、適用範囲値は反転されます。
glSampleCoverage参照。

GL_SCISSOR_TEST

有効にした場合、シザー矩形の外側にあるフラグメントを破棄します。
glScissor参照。

GL_STENCIL_TEST
有効にした場合、ステンシルテストを実行し、ステンシルバッファを更新します。
glStencilFuncとglStencilOp参照。

capが上記にリストされた値のいずれでもない場合、GL_INVALID_ENUMが発生します。

cap
:GLの機能を示すシンボリック定数を指定します。

△ Back to INDEX

glEnableVertexAttribArray

汎用頂点属性配列を有効または無効にします。

void glEnableVertexAttribArray(GLuint index);

void glDisableVertexAttribArray(GLuint index);

glEnableVertexAttribArrayは、indexによって指定された汎用頂点属性配列を有効にします。

glDisableVertexAttribArrayは、indexによって指定された汎用頂点属性配列を無効にします。

デフォルトでは、全ての汎用頂点属性配列を含めて、全てのクライアント側の機能は無効になっています。

有効にした場合、汎用頂点属性配列の値にアクセスし、glDrawArraysやglDrawElementsなどの頂点配列を作成するコマンドが呼び出された時にレンダリングに使用されます。

indexがGL_MAX_VERTEX_ATTRIBS以上の場合、GL_INVALID_VALUEが発生します。

index
:有効または無効にする汎用頂点属性配列のインデックスを指定します。

△ Back to INDEX



●F

glFramebufferRenderbuffer

void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);

フレームバッファオブジェクトにレンダバッファオブジェクトをアタッチします。

glFramebufferRenderbufferは、現在バインドされているフレームバッファオブジェクトの論理バッファの一つとして、renderbufferによって指定されたレンダバッファにアタッチします。

attachmentは、フレームバッファオブジェクトのカラー、深度、またはステンシルバッファのどれにアタッチするかを指定します。

レンダバッファは、デフォルトのフレームバッファオブジェクト名0にアタッチされていない可能性があります。

renderbufferが0でない場合、アタッチメントポイントに指定されたGL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPEの値はGL_RENDERBUFFERに設定され、GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAMEの値はrenderbufferに設定されます。

GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVELとGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACEは、デフォルト値がそれぞれ0とGL_TEXTURE_CUBE_MAP_POSITIVE_Xに設定されています。

現在バインドされているフレームバッファオブジェクトのattachment論理バッファへの以前のアタッチメントは破棄されます。

renderbufferが0の場合、現在バインドされているフレームバッファオブジェクトattachment論理バッファへアタッチされている画像があればデタッチされます。

GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPEの値はGL_NONEに設定されています。

GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAMEの値は0に設定されています。

GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVELとGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACEは、デフォルト値がそれぞれ0とGL_TEXTURE_CUBE_MAP_POSITIVE_Xに設定されています。

現在バインドされているフレームバッファへ画像がアタッチされている間にレンダバッファオブジェクトが削除された場合、現在バインドされているフレームバッファオブジェクトにアタッチされた画像へのアタッチメントポイントは、0のrenderbufferでglFramebufferRenderbufferを呼び出したようになります。

言い換えると、レンダバッファの画像は現在バインドされているフレームバッファからデタッチされます。

レンダバッファの画像は、バインドされていないフレームバッファから明確にデタッチされないことに注意してください。

バインドされていないフレームバッファからの画像のデタッチは、アプリケーションの責任です。

targetがGL_FRAMEBUFFERでない場合、GL_INVALID_ENUMが発生します。

renderbuffertargetがGL_RENDERBUFFERではなく、renderbufferが0ではない場合、GL_INVALID_ENUMが発生します。

attachmentがアタッチメントポイントに受け付けられなかった場合GL_INVALID_ENUMが発生します。

デフォルトのフレームバッファオブジェクト名0がバインドされている場合、GL_INVALID_OPERATIONが発生します。

renderbufferが0でも現在のレンダバッファオブジェクト名でもない場合、GL_INVALID_OPERATIONが発生します。

target:フレームバッファのターゲットを指定します。
シンボリック定数はGL_FRAMEBUFFERである必要があります。

attachment:アタッチする必要があるレンダバッファのアタッチメントポイントを指定します。
シンボリック定数は、GL_COLOR_ATTACHIMENT0、GL_DEPTH_ATTACHMENT、またはGL_STENCIL_ATTACHMENTの内の一つにする必要があります。

renderbuffertarget:レンダバッファのターゲットを指定します。
シンボリック定数はGL_RENDERBUFFERである必要があります。

renderbuffer:アタッチするレンダバッファオブジェクトを指定します。

△ Back to INDEX

glFramebufferTexture2D

void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);

フレームバッファオブジェクトにテクスチャ画像をアタッチします。

glFramebufferTexture2Dは、現在バインドされているフレームバッファオブジェクトの論理バッファの一つとして、texturelevelによって指定されたテクスチャ画像をアタッチします。

attachmentには、テクスチャ画像がフレームバッファオブジェクトの色、深度、またはステンシルバッファのどれにアタッチされているかを指定します。

テクスチャ画像は、デフォルトのフレームバッファオブジェクト名0にアタッチされていない場合があります。

textureが0でない場合、アタッチメントポイントに指定されたGL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPEの値はGL_TEXTUREに設定され、GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAMEの値はtextureに設定、GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVELの値はlevelに設定されます。

textureがキューブマップテクスチャの場合、GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACEの値はtextargetに指定され、それ以外の場合はデフォルトの値GL_TEXTURE_CUBE_MAP_POSITIVE_Xに設定されます。

現在バインドされているフレームバッファオブジェクトのattachment論理バッファへの以前のアタッチメントは破壊されます。

textureが0の場合、現在バインドされているフレームバッファオブジェクトのattachment論理バッファへアタッチされている現在の画像があった場合はデタッチされます。

GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPEの値はGL_NONEに設定されます。

GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAMEの値は0に設定されます。

GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVELとGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACEは、それぞれデフォルト値0とGL_TEXTURE_CUBE_MAP_POSITIVE_Xに設定されます。

テクスチャオブジェクトが現在バインドされ、潜在的に現在の頂点またはフラグメントシェーダによってサンプリングされている間は、現在バインドされているフレームバッファへのテクスチャ画像のアタッチを避けるための特別な予防措置をとる必要があります。

そうすることで、現在バインドされているテクスチャのテクセルとして使用されているものと同じピクセルの読み込みと同時に、レンダリング操作によるピクセルの書き込みとの間で『フィードバックループ』を生成することができます。

このシナリオでは、フレームバッファは完全なフレームバッファとみなされますが、この状態の間のフラグメントの値は未定義です。

テクスチャサンプルの値も同様に未定義の場合があります。

画像が現在バインドされているフレームバッファにアタッチされている間にテクスチャオブジェクトが削除された場合、この画像が現在バインドされているフレームバッファオブジェクトにアタッチされているアタッチメントポイントに、textureを0にしてglFramebufferTexture2Dを呼び出したようになります。

言い換えると、テクスチャ画像は現在バインドされているフレームバッファからデタッチされます。

テクスチャ画像はバインドされていないフレームバッファからはデタッチされないことに特に注意してください。

バインドされていないフレームバッファから画像をデタッチするのは、アプリケーションの責任です。

targetがGL_FRAMEBUFFERでない場合、GL_INVALID_ENUMが発生します。

textargetが有効なテクスチャターゲットではなく、textureが0でない場合、GL_INVALID_ENUMが発生します。

attachmentが有効なアタッチメントポイントでない場合、GL_INVALID_ENUMが発生します。

levelが0でなく、textureが0でない場合、GL_INVALID_VALUEが発生します。

デフォルトのフレームバッファオブジェクト名0がバインドされている場合、GL_INVALID_OPERATIONが発生します。

textureが0でも存在するテクスチャオブジェクト名でもない場合、GL_INVALID_OPERATIONが発生します。

textureが存在する二次元テクスチャオブジェクト名であるがtextargetがGL_TEXTURE_2Dでない場合、またはtextureが存在するキューブマップテクスチャであるがtextargetがGL_TEXTURE_2Dの場合、GL_INVALID_OPERATIONが発生します。

target
:フレームバッファのターゲットを指定します。
シンボリック定数はGL_FRAMEBUFFERである必要があります。

attachment
:textureから画像をアタッチする必要があるアタッチメントポイントを指定します。
シンボリック定数はGL_COLOR_ATTACHMENT0、GL_DEPTH_ATTACHMENT、またはGL_STENCIL_ATTACHMENTのいずれかである必要があります。

textarget
:テクスチャターゲットを指定します。
シンボリック定数はGL_TEXTURE_2D、GL_TEXTURE_CUBE_MAP_POSITIVE_X、GL_TEXTURE_CUBE_MAP_NEGATIVE_X、GL_TEXTURE_CUBE_MAP_POSITIVE_Y、GL_TEXTURE_CUBE_MAP_NEGATIVE_Y、GL_TEXTURE_CUBE_MAP_POSITIVE_Z、またはGL_TEXTURE_CUBE_MAP_NEGATIVE_Zのいずれかである必要があります。

texture
:アタッチする画像のテクスチャオブジェクトを指定します。

level
:0でなければ、アタッチするテクスチャ画像のミップマップレベルを指定します。

△ Back to INDEX



●G

glGenBuffers

void glGenBuffers(GLsizei n, GLuint * buffers);

バッファオブジェクト名を生成します。

glGenBuffersは、buffersで名付けたn個のバッファオブジェクトを返します。

名前の形式は連続した整数のセットを保証するものではありませんが、返される名前のどれもglGenBuffersの呼び出しの直前に使用されていなかったことを保証します。

glGenBufferの呼び出しによって返されるバッファオブジェクト名は、glDeleteBuffersで最初に削除されない限り、後続の呼び出しによって返されません。

glBindBufferを呼び出すことによって最初にバインドされるまで、返されたバッファオブジェクト名はバッファオブジェクトに関連付けられません。

nが負の場合、GL_INVALID_VALUEが発生します。

n
:生成されるバッファオブジェクト名の数を指定します。

buffers
:生成されたバッファオブジェクト名が格納される配列を指定します。

△ Back to INDEX

glGenFramebuffers

void glGenFramebuffers(GLsizei n, GLuint * framebuffers);

フレームバッファオブジェクト名を生成します。

glGenFramebuffersは、framebuffersで名付けたn個のフレームバッファオブジェクトを返します。

名前の形式は連続した整数のセットを保証するものではありませんが、返される名前のどれもglGenFramebuffersの呼び出しの直前に使用されていなかったことを保証します。

glGenFramebuffersの呼び出しによって返されるフレームバッファオブジェクト名は、glDeleteFramebuffersで最初に削除されない限り、後続の呼び出しによって返されません。

glBindFramebufferを呼び出すことによって最初にバインドされるまで、返されたフレームバッファオブジェクト名はフレームバッファオブジェクトに関連付けられません。

nが負の場合、GL_INVALID_VALUEが発生します。

n:生成されるフレームバッファオブジェクト名の数を指定します。

framebuffers:生成されたフレームバッファオブジェクト名が格納される配列を指定します。

△ Back to INDEX

glGenRenderbuffers

void glGenRenderbuffers(GLsizei n, GLuint * renderbuffers);

レンダバッファオブジェクト名を生成します。

glGenRenderbuffersは、renderbuffersで名付けたn個のレンダバッファオブジェクトを返します。

名前の形式は連続した整数のセットを保証するものではありませんが、返される名前のどれもglGenRenderbuffersの呼び出しの直前に使用されていなかったことを保証します。

glGenRenderbuffersの呼び出しによって返されるレンダバッファオブジェクト名は、glDeleteRenderbuffersで最初に削除されない限り、後続の呼び出しによって返されません。

glBindRenderbufferを呼び出すことによって最初にバインドされるまで、返されたレンダバッファオブジェクト名はレンダバッファオブジェクトに関連付けられません。

nが負の場合、GL_INVALID_VALUEが発生します。

n:生成されるレンダバッファ名の数を指定します。

renderbuffers:生成されたレンダバッファオブジェクト名が格納される配列を指定します。

△ Back to INDEX

glGenTextures


void glGenTextures(GLsizei n, GLuint * textures);

テクスチャ名を生成します。

glGenTextureは、texturesで名付けたn個のテクスチャを返します。

名前は整数の連続したセットを形成することを保証するものではありません。

しかし、返された名前がglGenTexturesの呼び出しの直前に使用されていなかったことを保証します。

生成されたテクスチャは大きさを持っておらず、最初にバインドされたテクスチャのターゲットの大きさを想定しています。(glBindTexture参照)

glDeleteTexturesによって最初に削除されない限り、glGenTexturesの呼び出しによって返されるテクスチャ名は、後続の呼び出しによって返されません。

nが負の場合、GL_INVALID_VALUEが発生します。

n:生成されたテクスチャ名の数を指定します。

texture:生成されたテクスチャ名が格納される配列を指定します。

△ Back to INDEX

glGet

void glGetBooleanv(GLenum pname, GLboolean * params);

void glGetFloatv(GLenum pname, GLfloat * params);

void glGetIntegerv(GLenum pname, GLint * params);

値または選択されたパラメータの値を返します。

これら4つのコマンドは、GL内で単純な状態変数の値を返します。

pnameは返される状態変数を示すシンボリック定数で、paramsは返されるデータが置かれる指定された型の配列へのポインタです。

paramsが要求された状態変数値と型が異なる場合、型の変換が実行されます。

glGetBooleanvの呼び出しでは、浮動小数点(または整数値)は0.0(または0)の場合のみGL_FALSEに変換されます。

それ以外の場合はGL_TRUEに変換されます。

glGetIntegervの呼び出しでは、ブール値はGL_TRUEまたはGL_FALSEとして返され、浮動小数点値は最も近い整数に丸められます。

浮動小数点の色と法線は、表現可能な正の整数最大値を1.0、表現可能な負の整数最小値を-1.0とマップし、線形にマッピングを行います。

glGetFloatvの呼び出しでは、ブール値はGL_TRUEまたはGL_FALSEとして返され、整数値は浮動小数点値に変換されます。

以下にpnameが受け取れるシンボリック定数を示します。

GL_ACTIVE_TEXTURE
paramsはアクティブなマルチテクスチャユニットを示す単一の値を返します。
初期値はGL_TEXTURE0です。
glActiveTexture参照。

GL_ALIASED_LINE_WIDTH_RANGE
paramsはエイリアシングラインのサポートされている幅の、最小と最大の2つの値を返します。
範囲には1が含まれている必要があります。

GL_ALIASED_POINT_SIZE_RANGE
paramsはエイリアシングポイントのサポートされているサイズの最小と最大の2つの値を返します。
範囲には1が含まれている必要があります。

GL_ALPHA_BITS
paramsは現在バインドされているフレームバッファの、カラーバッファ内のアルファビットプレーン数を1つの値で返します。

GL_ARRAY_BUFFER_BINDING
paramsはターゲットGL_ARRAY_BUFFERに現在バインドされているバッファオブジェクトの名前を単一の値で返します。
このターゲットにバインドされているバッファオブジェクトが無い場合は0が返されます。
初期値は0です。
glBindBuffer参照。

GL_BLEND
paramsはブレンディングが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glBlendFunc参照。

GL_BLEND_COLOR
paramsはブレンドカラーの要素である赤、緑、青、アルファの4つの値を返します。
glBlendColor参照。

GL_BLEND_DST_ALPHA
paramsはアルファの対象のブレンド関数を識別するシンボリック定数を1つの値で返します。
初期値はGL_ZEROです。
glBlendFuncとglBlendFuncSeparate参照。

GL_BLEND_DST_RGB
paramsはRGBの対象のブレンド関数を識別するシンボリック定数を1つの値で返します。
初期値はGL_ZEROです。
glBlendFuncとglBlendFuncSeparate参照。

GL_BLEND_EQUATION_ALPHA
paramsはアルファブレンド方程式がGL_FUNC_ADD、GL_FUNC_SUBTRACT、またはGL_FUNC_REVERSE_SUBTRACTかどうかを示す、シンボリック定数を1つの値で返します。
glBlendEquationSeparate参照。

GL_BLEND_EQUATION_RGB
paramsはRGBブレンド方程式がGL_FUNC_ADD、GL_FUNC_SUBTRACT、またはGL_FUNC_REVERSE_SUBTRACTかどうかを示す、シンボリック定数を1つの値で返します。
glBlendEquationSeparate参照。

GL_BLEND_SRC_ALPHA

paramsはアルファのソースのブレンド関数を示すシンボリック定数を1つの値で返します。
初期値はGL_ONEです。
glBlendFuncとglBlendFuncSeparate参照。

GL_BLEND_SRC_RGB
paramsはRGBのソースのブレンド関数を示すシンボリック定数を1つの値で返します。
初期値はGL_ONEです。
glBlendFuncとglBlendFuncSeparate参照。

GL_BLUE_BITS
paramsは現在バインドされているフレームバッファのカラーバッファ内の青のビットプレーン数を1つの値で返します。

GL_COLOR_CLEAR_VALUE
paramsはカラーバッファのクリアに使用する赤、緑、青、アルファの4つの値を返します。
整数値が要求された場合は、表現可能な正の整数最大値を1.0、表現可能な負の整数最小値を-1.0とマップし、内部の浮動小数点の表現を線形にマッピングします。
初期値は(0, 0, 0, 0)です。
glClearColor参照。

GL_COLOR_WRITEMASK

paramsはカラーバッファへの赤、緑、青、アルファの書き込みが有効かどうかを示す4つのブール値を返します。
初期値は(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE)です。
glColorMask参照。

GL_COMPRESSED_TEXTURE_FORMATS
paramsはサポートされている圧縮テクスチャフォーマットを示す長さのシンボリック定数のリストGL_NUM_COMPRESSED_TEXTURE_FORMATSを返します。
glCompressedTexImage2D参照。

GL_CULL_FACE
paramsはポリゴンの間引きが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glCullFace参照。

GL_CULL_FACE_MODE
paramsはポリゴンのフェースが間引きされているかを示すシンボリック定数を1つ返します。
初期値はGL_BACKです。
glCullFace参照。

GL_CURRENT_PROGRAM
paramsは現在アクティブなプログラムオブジェクトの名前を1つの値で、またはアクティブなプログラムオブジェクトが無い場合は0を返します。
glUseProgram参照。

GL_DEPTH_BITS
paramsは現在バインディングされているフレームバッファの深度バッファ内のビットプレーン数を1つの値で返します。

GL_DEPTH_CLEAR_VALUE
paramsは深度バッファのクリアに使用される値を1つの値で返します。
整数値が要求された場合は、表現可能な正の整数最大値を1.0、表現可能な負の整数最小値を-1.0とマップし、内部の浮動小数点の表現を線形にマッピングします。
初期値は1です。
glClearDepthf参照。

GL_DEPTH_FUNC
paramsは深度比較関数を示すシンボリック名を1つの値で返します。
初期値はGL_LESSです。
glDepthFunc参照。

GL_DEPTH_RANGE
paramsは深度バッファでマッピングできる手前と奥の限界値を2つの値で返します。
整数値が要求された場合は、表現可能な正の整数最大値を1.0、表現可能な負の整数最小値を-1.0とマップし、内部の浮動小数点の表現を線形にマッピングします。
初期値は(0, 1)です。
glDepthRangef参照。

GL_DEPTH_TEST
paramsはフラグメントの深度テストが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glDepthFuncとglDepthRangef参照。

GL_DEPTH_WRITEMASK
paramsは深度バッファへの書き込みが有効かどうかを示す単一のブール値を返します。
初期値はGL_TRUEです。
glDepthMask参照。

GL_DITHER
paramsはフラグメントの色のディザリングとインデックスが有効かどうかを示す単一のブール値を返します。
初期値はGL_TRUEです。

GL_ELEMENT_ARRAY_BUFFER_BINDING
paramsは現在ターゲットGL_ELEMENT_ARRAY_BUFFERへバインドしているバッファオブジェクト名を単一の値で返します。
このターゲットにバインドしているバッファオブジェクトが無い場合は0が返されます。
初期値は0です。
glBindBuffer参照。

GL_FRAMEBUFFER_BINDING
paramsは現在バインディングされているフレームバッファ名を単一の値で返します。
初期値は0で、デフォルトのフレームバッファを示します。
glBindFramebuffer参照。

GL_FRONT_FACE
paramsは時計回りまたは反時計回りのポリゴンのワインディングの、どちらを表向きとして扱うかを示すシンボリック定数を1つの値で返します。
初期値はGL_CCWです。
glFrontFace参照。

GL_GENERATE_MIPMAP_HINT
paramsはミップマップ生成フィルタリングのヒントのモードを示すシンボリック定数を1つの値で返します。
初期値はGL_DONT_CAREです。
glHint参照。

GL_GREEN_BITS
paramsは現在バインドされているフレームバッファのカラーバッファ内の緑のビットプレーン数を1つの値で返します。

GL_IMPLEMENTATION_COLOR_READ_FORMAT
paramsはGL_IMPLEMENTATION_COLOR_READ_TYPEと結合している現在バインドされているフレームバッファのカラーバッファからのピクセルの読み込みのため、実装によって選択されたフォーマットを1つの値で返します。
この実装依存フォーマット/型のペアに加えて、型GL_UNSIGNED_BYTEと結合しているフォーマットGL_RGBAは、現在バインドされているレンダリングサーフェスに関係無く全ての実装で常に許可されます。
glReadPixels参照。

GL_IMPLEMENTATION_COLOR_READ_TYPE
paramsはGL_IMPLEMENTATION_COLOR_READ_FORMATと結合している現在バインドされているフレームバッファのカラーバッファからのピクセルの読み込みのため、実装によって選択されたフォーマットを1つの値で返します。
この実装依存フォーマット/型のペアに加えて、型GL_UNSIGNED_BYTEと結合しているフォーマットGL_RGBAは、現在バインドされているレンダリングサーフェスに関係無く全ての実装で常に許可されます。
glReadPixels参照。

GL_LINE_WIDTH

paramsglLineWidthで指定された線幅を1つの値で返します。

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS
paramsは結合されたフラグメントプロセッサと頂点シェーダからテクスチャマップへのアクセスに使用することができる、サポートされる最大のテクスチャ画像を1つの値で返します。
頂点シェーダとフラグメント処理ステージの両方が同じテクスチャ画像ユニットへアクセス する場合、この制限に対して2つのテクスチャ画像ユニットを使用するものとしてカウントします。
この値は少なくとも8である必要があります。
glActiveTexture参照。

GL_MAX_CUBE_MAP_TEXTURE_SIZE
paramsはGLが処理可能な最大のキューブマップテクスチャの概算を1つの値で返します。
この値は少なくとも16である必要があります。
glTexImage2D参照。

GL_MAX_FRAGMENT_UNIFORM_VECTORS
paramsはフラグメントシェーダのための定型変数ストレージ内に保持できる、浮動小数点、整数、ブール値、ベクタの4つの要素の最大数を1つの値で返します。
この値は少なくとも16である必要があります。
glUniform参照。

GL_MAX_RENDERBUFFER_SIZE
paramsはGLが処理可能な最大のレンダバッファの幅と高さを示す1つの値を返します。
この値は少なくとも1である必要があります。
glRenderbufferStorage参照。

GL_MAX_TEXTURE_IMAGE_UNITS
paramsはフラグメントシェーダからテクスチャマップへのアクセスに使用することができる、サポートされる最大のテクスチャ画像ユニットを1つの値で返します。
この値は少なくとも8である必要があります。
glActiveTexture参照。

GL_MAX_TEXTURE_SIZE

paramsはGLが処理可能な最大のテクスチャの概算を1つの値で返します。
この値は少なくとも64である必要があります。
glTexImage2D参照。

GL_MAX_VARYING_VECTORS
paramsは頂点とフラグメントシェーダによって使用される様々な変数を補間するために利用可能な、4つの要素を持つ浮動小数点ベクタの最大数を1つの値で返します。
様々な変数は行列または配列として宣言され、複数の補間で使用されます。
この値は少なくとも8である必要があります。

GL_MAX_VERTEX_ATTRIBS
paramsは頂点シェーダへアクセス可能な4つの一般的な頂点属性要素の最大数を1つの値で返します。
この値は少なくとも8である必要があります。
glVertexAttrib参照。

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS
paramsは頂点シェーダからテクスチャマップへのアクセスに使用することができる、サポートされる最大のテクスチャ画像ユニットを1つの値で返します。
この値は0になる場合があります。
glActiveTexture参照。

GL_MAX_VERTEX_UNIFORM_VECTORS
paramsは頂点シェーダのための定型変数ストレージ内に保持できる、浮動小数点、整数、ブール値、ベクタの4つの要素の最大数を1つの値で返します。
この値は少なくとも128である必要があります。
glUniform参照。

GL_MAX_VIEWPORT_DIMS
paramsはビューポートがサポートされている最大の幅と高さの2つの値を返します。
これらは少なくともレンダリングで表示される可視範囲と同じ大きさである必要があります。
glViewport参照。

GL_NUM_COMPRESSED_TEXTURE_FORMATS
paramsは利用可能な圧縮テクスチャフォーマット数を示す単一の整数値を返します。
この最小値は0です。
glCompressedTexImage2D参照。

GL_NUM_SHADER_BINARY_FORMATS
paramsは利用可能なシェーダのバイナリフォーマット数を示す単一の整数値を返します。
この最小値は0です。 
glShaderBinary参照。

GL_PACK_ALIGNMENT
paramsはメモリにピクセルデータを書き込むために使用する、バイトアラインメントを1つの値で返します。
初期値は4です。
glPixelStorei参照。

GL_POLYGON_OFFSET_FACTOR
paramsはポリゴンがラスタライズされた時に生成される、各フラグメント深度値に追加される変数のオフセットの決定に使用される、スケーリング要素を1つの値で返します。
初期値は0です。
glPolygonOffset参照。

GL_POLYGON_OFFSET_FILL
paramsは塗りつぶしモードのポリゴンで、ポリゴンのオフセットが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glPolygonOffset参照。

GL_POLYGON_OFFSET_UNITS
paramsはポリゴンがラスタライズされた時に生成される、各フラグメントの深度値に追加される、実装固有の値によって乗じる値を1つの値で返します。
初期値は0です。
glPolygonOffset参照。

GL_RED_BITS
paramsは現在バインドされているフレームバッファのカラーバッファ内の赤のビットプレーン数を1つの値で返します。

GL_RENDERBUFFER_BINDING
paramsは現在バインドされているレンダバッファ数を単一の値で返します。
初期値は0で、バインドされているレンダバッファが無いことを示します。
glBindRenderbuffer参照。

GL_SAMPLE_ALPHA_TO_COVERAGE
paramsはフラグメントのアルファ値に基づいて、フラグメントの適用範囲値に一時的な適用範囲値をAND演算する必要があるかどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glSampleCoverage参照。

GL_SAMPLE_BUFFERS
paramsは現在バインドされているフレームバッファに関連付けられているサンプルバッファ数を示す単一の整数値を返します。
glSampleCoverage参照。

GL_SAMPLE_COVERAGE
paramsは現在のサンプル適用範囲値に基づいて、フラグメントの適用範囲値に一時的な適用範囲値をAND演算する必要があるかどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glSampleCoverage参照。

GL_SAMPLE_COVERAGE_INVERT
paramsは一時的な適用範囲値を反転する必要があるかどうかを示す単一のブール値を返します。
glSampleCoverage参照。

GL_SAMPLE_COVERAGE_VALUE
paramsは現在のサンプル適用範囲値を示す単一の正の浮動小数点値を返します。
glSampleCoverage参照。

GL_SAMPLES
paramsは現在バインドされているフレームバッファの適用範囲のマスクサイズを示す単一の整数値を返します。
glSampleCoverage参照。

GL_SCISSOR_BOX
paramsはシザーボックスのウィンドウ座標のx、y、幅、高さの4つの値を返します。
初期はウィンドウ座標のxとyは共に0で、幅と高さはウィンドウのサイズに設定されます。
glScissor参照。

GL_SCISSOR_TEST
paramsはシザーリングが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glScissor参照。

GL_SHADER_BINARY_FORMATS
paramsはシェーダバイナリフォーマットが利用可能かどうかを示す長さGL_NUM_SHADER_BINARY_FORMATS のシンボリック定数のリストを返します。
glShaderBinary参照。

GL_SHADER_COMPILER
paramsはシェーダコンパイラがサポートされているかどうかを示す単一のブール値を返します。
GL_FALSEは、glShaderSourceglCompileShader、またはglReleaseShaderCompilerへの呼び出しの結果、GL_INVALID_OPERATIONエラーが生成されたことを示します。

GL_STENCIL_BACK_FAIL
paramsはステンシルテストが失敗した時に背面ポリゴンのために実行するアクションを示すシンボリック定数を1つの値で返します。
初期値はGL_KEEPです。
glStencilOpSeparate参照。

GL_STENCIL_BACK_FUNC
paramsはステンシル基準値とステンシルバッファ値の比較するために、背面ポリゴンに使用される関数を示すシンボリック定数を1つの値で返します。
初期値はGL_ALWAYSです。
glStencilFuncSeparate参照。

GL_STENCIL_BACK_PASS_DEPTH_FAIL
paramsはステンシルテストが成功したが深度テストが失敗した時に、背面ポリゴンのために実行するアクションを示すシンボリック定数を1つの値で返します。
初期値はGL_KEEPです。
glStencilOpSeparate参照。

GL_STENCIL_BACK_PASS_DEPTH_PASS
paramsはステンシルテストと深度テストが成功した時に、背面ポリゴンのために実行するアクションを示すシンボリック定数を1つの値で返します。
初期値はGL_KEEPです。
glStencilOpSeparate参照。

GL_STENCIL_BACK_REF
paramsは背面ポリゴンのために、ステンシルバッファのコンテンツと比較する基準値を1つの値で返します。
初期値は0です。
glStencilFuncSeparate参照。

GL_STENCIL_BACK_VALUE_MASK
paramsは比較する前にステンシルバッファ値とステンシル基準値の両方をマスクする、背面ポリゴンのために使用するマスクを1つの値で返します。
初期値は全て1です。
glStencilFuncSeparate参照。

GL_STENCIL_BACK_WRITEMASK
paramsは背面ポリゴンのためのステンシルビットプレーンの書き込みを制御するマスクを1つの値で返します。
初期値は全て1です。
glStencilMaskSeparate参照。

GL_STENCIL_BITS
paramsは現在バインドされているフレームバッファのステンシルバッファ内のビットプレーン数を1つの値で返します。

GL_STENCIL_CLEAR_VALUE
paramsはクリアされたステンシルのビットプレーンのインデックスを1つの値で返します。
glClearStencil参照。

GL_STENCIL_FAIL
paramsは前面ポリゴンと非ポリゴンのため、ステンシルテストが失敗した時に実行するアクションを示すシンボリック定数を1つの値で返します。
初期値はGL_KEEPです。
glStencilOpとglStencilOpSeparate参照。

GL_STENCIL_FUNC
paramsは前面ポリゴンと非ポリゴンのため、ステンシルバッファ値とステンシル基準値の比較に使用する関数を示すシンボリック定数を1つの値で返します。
初期値はGL_ALWAYSです。
glStencilFuncとglStencilFuncSeparate参照。

GL_STENCIL_PASS_DEPTH_FAIL
paramsは前面ポリゴンと非ポリゴンのため、ステンシルテストが成功したが深度テストが失敗した時に実行するアクションを示すシンボリック定数を1つの値で返します。
初期値はGL_KEEPです。
glStencilOpとglStencilOpSeparate参照。

GL_STENCIL_PASS_DEPTH_PASS
paramsは前面ポリゴンと非ポリゴンのため、ステンシルテストと深度テストが成功した時に実行するアクションを示すシンボリック定数を1つの値で返します。
初期値はGL_KEEPです。
glStencilOpとglStencilOpSeparate参照。

GL_STENCIL_REF
paramsは前面ポリゴンと非ポリゴンのため、ステンシルバッファのコンテンツと比較する基準値を1つの値で返します。
初期値は0です。
glStencilFuncとglStencilFuncSeparate参照。

GL_STENCIL_TEST
paramsはフラグメントのステンシルテストが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glStencilFuncとglStencilOp参照。

GL_STENCIL_VALUE_MASK
paramsは前面ポリゴンと非ポリゴンのため、比較する前にステンシルバッファ値とステンシル基準値の両方をマスクするために使用するマスクを1つの値で返します。
初期値は全て1です。
glStencilFuncとslStencilFuncSeparate参照。

GL_STENCIL_WRITEMASK
paramsは前面ポリゴンと非ポリゴンのため、ステンシルのビットプレーンの書き込みを制御するマスクを1つの値で返します。
初期値は全て1です。
glStencilMaskとglStencilMaskSeparate参照。

GL_SUBPIXEL_BITS
paramsはウィンドウ座標内でラスタライズされたジオメトリの配置に使用する、サブピクセルの解像度のビット数の推定値を1つの値で返します。
この値は少なくとも4である必要があります。

GL_TEXTURE_BINDING_2D
paramsはアクティブなマルチテクスチャユニットのため、ターゲットGL_TEXTURE_2Dに現在バインドされているテクスチャ名を単一の値で返します。
初期値は0です。
glBindTexture参照。

GL_TEXTURE_BINDING_CUBE_MAP
paramsはアクティブなマルチテクスチャユニットのため、ターゲットGL_TEXTURE_CUBE_MAPに現在バインドされているテクスチャ名を単一の値で返します。
初期値は0です。
glBindTexture参照。

GL_UNPACK_ALIGNMENT
paramsはメモリからピクセルデータを読み込むために使用するバイトアラインメントを1つの値で返します。
初期値は4です。
glPixelStorei参照。

GL_VIEWPORT
paramsはビューポートのウィンドウ座標のx、y、幅、高さの4つの値を返します。
初期はウィンドウ座標のxとyは共に0で、幅と高さはGLのレンダリング先となるウィンドウのサイズに設定されます。
glViewport参照。

ブーリアンパラメータの多くは、glIsEnabledを使用してより簡単に照会することができます。

pnameが有効な値でない場合、GL_INVALID_ENUMが発生します。

pname:返されるパラメータの値を指定します。
上記リストのシンボリック定数が指定できます。

params:値または指定されたパラメータの値を返します。

△ Back to INDEX

glGetProgramInfoLog

プログラムオブジェクトの情報ログを返します。

void glGetProgramInfoLog( GLuint program, GLsizei maxLength, GLsizei *length, GLchar *infoLog);

glGetProgramInfoLogは、指定されたプログラムオブジェクトの情報ログを返します。

プログラムオブジェクトの情報ログは、プログラムオブジェクトがリンクまたは検証された時に変更されます。

文字列はヌル終端で返されます。

glGetProgramInfoLogは、maxLength文字の最大まで、できるかぎり多くの情報ログをinfoLog内に返します。

実際に返される文字数は、ヌル終端を除いて、lengthによって指定されています。

返される文字列の長さが必要な場合は、引数lengthにNULL値を渡すことができます。

返される情報ログの格納に必要なバッファサイズは、GL_INFO_LOG_LENGTH値でglGetProgramivを呼び出すことによって取得することができます。

プログラムオブジェクトの情報ログは、空の文字列、または最後のリンク操作についての情報を含む文字列、あるいは最後の検証操作についての情報を含む文字列のいずれかになります。

それには診断メッセージ、警告メッセージ、その他の情報が含まれている場合があります。

プログラムオブジェクトが生成されると、情報ログは長さ0の文字列になります。

プログラムオブジェクトの情報ログは、リンクや検証に関する情報を伝達するための、OpenGLの実装における主要な機構です。

したがって、情報ログはこれらの操作に成功した場合でも、開発工程中のアプリケーション開発者にとって役立ちます。

アプリケーション開発者は、同一の情報ログを生成するために異なるOpenGLの実装を期待してはいけません。

programがOpenGLによって生成された値でない場合、GL_INVALID_VALUEが発生します。

programがプログラムオブジェクトでない場合、GL_INVALID_OPERATIONが発生します。

maxLengthが0未満の場合、GL_INVALID_VALUEが発生します。

program
:情報ログを必要とするプログラムオブジェクトを指定します。

maxLength
:返される情報ログを格納するための文字バッファのサイズを指定します。

length
:(ヌル終端を除いた)infoLog内に返された文字列の長さを返します。

infoLog
:情報ログを返すために使用されている文字配列を指定します。

△ Back to INDEX

glGetProgramiv

プログラムオブジェクトからパラメータを返します。

void glGetProgramiv(GLuint program, GLenum pname, GLint *params);

glGetProgramivは、params内の指定したプログラムオブジェクトからパラメータの値を返します。

以下のパラメータが定義されています。

GL_DELETE_STATUS
paramsは、programが現在削除フラグが立てられている場合はGL_TRUE、それ以外の場合はGL_FALSEを返します。

GL_LINK_STATUS
paramsは、program上の最後のリンク操作が成功した場合はGL_TRUE、それ以外の場合はGL_FALSEを返します。

GL_VALIDATE_STATUS
paramsは、program上の最後の検証操作が成功した場合はGL_TRUE、それ以外の場合はGL_FALSEを返します。

GL_INFO_LOG_LENGTH
paramsは、ヌル終端文字を含むprogramの情報ログ内にある文字数(すなわち、情報ログを格納するために必要な文字バッファのサイズ)を返します。
programが情報ログを持っていない場合、値0を返します。

GL_ATTACHED_SHADERS
paramsは、programにアタッチされているシェーダオブジェクトの数を返します。

GL_ACTIVE_ATTRIBUTES
paramsは、programのアクティブなattribute変数の数を返します。

GL_ACTIVE_ATTRIBUTE_MAX_LENGTH
paramsは、ヌル終端文字を含むprogramの最長のアクティブなattribute名(すなわち、最長のattribute名を格納するために必要な文字バッファのサイズ)を返します。
アクティブなattributesが存在しない場合、0を返します。

GL_ACTIVE_UNIFORMS
paramsは、programのアクティブなuniform変数の数を返します。

GL_ACTIVE_UNIFORM_MAX_LENGTH
paramsは、ヌル終端文字を含むprogramの最長のアクティブなuniform名(すなわち、最長のuniform変数名を格納するために必要な文字バッファのサイズ)を返します。
アクティブなuniform変数が存在しない場合、0を返します。

エラーが発生した場合、paramsの内容は変更されません。

pnameが有効な値でない場合、GL_INVALID_ENUMが発生します。

programがOpenGLによって生成された値でない場合、GL_INVALID_VALUEが発生します。

programがプログラムオブジェクトを参照していない場合、GL_INVALID_OPERATIONが発生します。

program
:照会するプログラムオブジェクトを指定します。

pname
:オブジェクトパラメータを指定します。
有効なシンボリック名はGL_DELETE_STATUS、GL_LINK_STATUS、GL_VALIDATE_STATUS、GL_INFO_LOG_LENGTH、GL_ATTACHED_SHADERS、GL_ACTIVE_ATTRIBUTES、GL_ACTIVE_ATTRIBUTE_MAX_LENGTH、GL_ACTIVE_UNIFORMS、GL_ACTIVE_UNIFORM_MAX_LENGTHです。

params
:要求されたオブジェクトパラメータを返します。

△ Back to INDEX

glGetRenderbufferParameteriv

void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint * params);

レンダバッファオブジェクトのパラメータを返します。

glGetRenderbufferParameterivは、現在バインドされているレンダバッファオブジェクトのparamsで選択されたパラメータを返します。

pname名はレンダバッファオブジェクトのパラメータを指定するもので以下のようになっています。

GL_RENDERBUFFER_WIDTH
paramsは現在バインドされているレンダバッファの画像の幅をピクセル単位で返します。
初期値は0です。

GL_RENDERBUFFER_HEIGHT

paramsは現在バインドされているレンダバッファの画像の高さをピクセル単位で返します。
初期値は0です。

GL_RENDERBUFFER_INTERNAL_FORMAT
paramsは現在バインドされているレンダバッファの画像の内部フォーマットを返します。
初期値はGL_RGBA4です。

GL_RENDERBUFFER_RED_SIZE

paramsは現在バインドされているレンダバッファの画像の赤成分のビットの解像度を返します。
初期値は0です。

GL_RENDERBUFFER_GREEN_SIZE
paramsは現在バインドされているレンダバッファの画像の緑成分のビットの解像度を返します。
初期値は0です。

GL_RENDERBUFFER_BLUE_SIZE
paramsは現在バインドされているレンダバッファの画像の青成分のビットの解像度を返します。
初期値は0です。

GL_RENDERBUFFER_ALPHA_SIZE
paramsは現在バインドされているレンダバッファの画像のアルファ成分のビットの解像度を返します。
初期値は0です。

GL_RENDERBUFFER_DEPTH_SIZE
paramsは現在バインドされているレンダバッファの画像の深度成分のビットの解像度を返します。
初期値は0です。

GL_RENDERBUFFER_STENCIL_SIZE
paramsは現在バインドされているレンダバッファの画像のステンシル成分のビットの解像度を返します。
初期値は0です。

glGetRenderbufferParameterivによって報告される成分の解像度は、格納されている成分の実際の解像度で、glRenderbufferStorageのinternalformatパラメータが要求するものと異なる場合があります。

エラーが発生した場合、paramsの内容への変更は行われません。

targetがGL_RENDERBUFFERでない場合、GL_INVALID_ENUMが発生します。

pnameがGL_RENDERBUFFER_WIDTH、GL_RENDERBUFFER_HEIGHT、GL_RENDERBUFFER_INTERNAL_FORMAT、GL_RENDERBUFFER_RED_SIZE、GL_RENDERBUFFER_GREEN_SIZE、GL_RENDERBUFFER_BLUE_SIZE、GL_RENDERBUFFER_ALPHA_SIZE、GL_RENDERBUFFER_DEPTH_SIZE、またはGL_RENDERBUFFER_STENCIL_SIZEでない場合、GL_INVALID_ENUMが発生します。

予約済のレンダバッファオブジェクト名0がバインドされていた場合、GL_INVALID_OPERATIONが発生します。

target:ターゲットのレンダバッファオブジェクトを指定します。
シンボリック定数はGL_RENDERBUFFERである必要があります。

pname:レンダバッファオブジェクトのパラメータのシンボリック名を指定します。
指定可能な値は、GL_RENDERBUFFER_WIDTH、GL_RENDERBUFFER_HEIGHT、GL_RENDERBUFFER_INTERNAL_FORMAT、GL_RENDERBUFFER_RED_SIZE、GL_RENDERBUFFER_GREEN_SIZE、GL_RENDERBUFFER_BLUE_SIZE、GL_RENDERBUFFER_ALPHA_SIZE、GL_RENDERBUFFER_DEPTH_SIZE、GL_RENDERBUFFER_STENCIL_SIZEです。

params:要求されたパラメータを返します。

△ Back to INDEX

glGetShaderInfoLog

シェーダオブジェクトの情報ログを返します。

void glGetShaderInfoLog(GLuint shader, GLsizei maxLength, GLsizei *length, GLchar *infoLog);

glGetShaderInfoLogは指定されたシェーダオブジェクトの情報ログを返します。

シェーダオブジェクトの情報ログは、シェーダのコンパイル時に変更されます。

返される文字列はヌル終端されます。

glGetShaderInfoLogはmaxLengthの文字の最大まで、できるかぎり多くの情報ログをinfoLog内に返します。

実際に返される文字数は、ヌル終端を除いて、lengthによって指定されています。

返される文字列の長さが必要な場合は、引数lengthにNULL値を渡すことができます。

返される情報ログの格納に必要なバッファサイズは、GL_INFO_LOG_LENGTH値でglGetShaderivを呼び出すことによって取得することができます。

シェーダオブジェクトの情報ログは、最後のコンパイル操作に関する診断メッセージ、警告メッセージ、その他の情報を含む文字列です。

シェーダオブジェクトが生成された時、情報ログの文字列長は0になります。

シェーダオブジェクトの情報ログは、コンパイル工程に関する情報を伝達するための、OpenGLの実装における主要な機構です。

したがって、情報ログはコンパイルに成功した場合でも、開発工程中のアプリケーション開発者にとって役立ちます。

アプリケーション開発者は、同一の情報ログを生成するために異なるOpenGLの実装を期待してはいけません。

shaderがOpenGLによって生成された値でない場合、GL_INVALID_VALUEが発生します。

shaderがシェーダオブジェクトでない場合、GL_INVALID_OPERATIONが発生します。

maxLengthが0未満の場合、GL_INVALID_VALUEが発生します。

shader
:情報ログを必要とするシェーダオブジェクトを指定します。

maxLength
:返される情報ログを格納するための文字バッファのサイズを指定します。

length
:(ヌル終端を除いた)infoLog内に返された文字列の長さを返します。

infoLog
:情報ログを返すために使用される文字配列を指定します。

△ Back to INDEX

glGetShaderiv

シェーダオブジェクトからパラメータを返します。

void glGetShaderiv(GLuint shader, GLenum pname, GLint *params);

glGetShaderivは、params内の指定したシェーダオブジェクトからのパラメータ値を返します。

以下のパラメータが定義されています。

GL_SHADER_TYPE
paramsは、shaderが頂点シェーダオブジェクトの場合はGL_VERTEX_SHADERを、shaderがフラグメントシェーダオブジェクトの場合はGL_FRAGMENT_SHADERを返します。

GL_DELETE_STATUS
shaderが現在削除フラグが立てられている場合、paramsはGL_TRUEを返し、それ以外の場合はGL_FALSEを返します。

GL_COMPILE_STATUS
シェーダコンパイラをサポートする実装の場合、shader上での最後のコンパイル操作が成功した場合はparamsはGL_TRUEを返し、それ以外の場合はGL_FALSEを返します。

GL_INFO_LOG_LENGTH
シェーダコンパイラをサポートする実装の場合、paramsはヌル終端文字を含むshaderの情報ログ内の文字数(すなわち、情報ログを格納するために必要な文字バッファのサイズ)を返します。
shaderが情報ログを持っていない場合、値0を返します。

GL_SHADER_SOURCE_LENGTH
シェーダコンパイラをサポートする実装の場合、paramsはヌル終端文字を含むshaderのためのシェーダソースを作成するソース文字列の連結の長さ(すなわち、シェーダソースを格納するために必要な文字バッファのサイズ)を返します。
ソースコードが存在しない場合は0を返します。

シェーダコンパイラのサポートはオプションであり、したがって引数GL_SHADER_COMPILERでglGetを呼び出すことによって、使用する前に照会する必要があります。

glShaderSourceglCompileShader、glGetShaderPrecisionFormat、そしてglReleaseShaderCompilerは、シェーダコンパイラをサポートしない実装上では、glGetShaderivでGL_COMPILE_STATUS、GL_INFO_LOG_LENGTH、そしてGL_SHADER_SOURCE_LENGTHの照会するのと同様に、GL_INVALID_OPERATIONを発生させます。

このような実装の代わりに、事前にコンパイルされたシェーダバイナリを供給するための代替として、glShaderBinaryが提供されています。

エラーが発生した場合、paramsの内容は変更されません。

pnameが有効な値でない場合、GL_INVALID_ENUMが発生します。

shaderがOpenGLによって生成された値でない場合、GL_INVALID_VALUEが発生します。

pnameがGL_COMPILE_STATUS、GL_INFO_LOG_LENGTH、またはGL_SHADER_SOURCE_LENGTHで、シェーダコンパイラがサポートされていない場合、GL_INVALID_OPERATIONが発生します。

shaderがシェーダオブジェクトを参照していない場合、GL_INVALID_OPERATIONが発生します。

shader
:照会するシェーダオブジェクトを指定します。

pname
:オブジェクトのパラメータを指定します。
有効なシンボル名はGL_SHADER_TYPE、GL_DELETE_STATUS、GL_COMPILE_STATUS、GL_INFO_LOG_LENGTH、GL_SHADER_SOURCE_LENGTHです。

params
:要求されたオブジェクトのパラメータを返します。

△ Back to INDEX

glGetUniformLocation

uniform変数の場所を返します。

GLint glGetUniformLocation(GLuint program, const GLchar *name);

glGetUniformLocationは、プログラムオブジェクト内の指定されたuniform変数の場所を表す整数を返します。

nameは、空白を含まないヌル終端の文字列である必要があります。

nameは構造体ではなく、構造体の配列、またはベクトルや行列のサブコンポーネントで、program内のアクティブなuniform変数名である必要があります。

この関数は、nameprogram内のアクティブなuniform変数と一致しない、またはnameが予約接頭辞『gl_』で始まらない場合、-1を返します。

構造体または構造体の配列であるuniform変数は、構造体の各フィールドにglGetUniformLocationを呼び出すことによって照会することができます。

配列要素演算子『[ ]』と構造体フィールド演算子『.』は、配列内の要素または構造体内のフィールドを選択するためのnameに使用することができます。

これらの演算子を使用した結果は、別の構造体、構造体の配列、またはベクトルや行列のサブコンポーネントに使用することはできません。

nameの最後の部分がuniform変数の配列を示す場合を除き、配列の最初の要素の場所は、配列の名前を使用する、または『[0]』を付けた名前を使用することによって取得することができます。

uniform変数に割り当てられている実際の場所は、プログラムオブジェクトがリンクに成功するまでは不明です。

リンクの実行後、コマンドglGetUniformLocationはuniform変数の場所を取得するために使用することができます。

この場所の値は、uniform変数を設定するためにglUniformに渡したり、uniform変数の現在の値を照会するためにglGetUniformに渡すことができます。

プログラムオブジェクトがリンクに成功した後、uniform変数のインデックス値は、次のリンクコマンドが発行するまで固定されます。

uniform変数の場所と値は、リンクが成功した後でのみ照会することができます。

programがOpenGLによって生成された値でない場合、GL_INVALID_VALUEが発生します。

programがプログラムオブジェクトでない場合、GL_INVALID_OPERATIONが発生します。

programがリンクに成功しなかった場合、GL_INVALID_OPERATIONが発生します。

program
:照会するプログラムオブジェクトを指定します。

name
:場所を照会する、uniform変数の名前を含むヌル終端の文字列へのポインタを指定します。

△ Back to INDEX



●L

glLineWidth

void glLineWidth(GLfloat width);

ラスタライズされるラインの幅を指定します。

glLineWidthは、ラインのラスタライズの幅を指定します。

実際の幅は最も近い整数に丸められて決定されます。
(丸められた結果の値が0の場合、線幅は1とされます。)

x| >= |Δy|の場合、丸められたwidthの値をiとすると、ラスタライズされた各列がiピクセルで埋められます。

サポートされる線幅には範囲があります。

幅1のみサポートが保証されており、それ以外は実装に依存します。

サポートされている幅の範囲を照会するには、引数GL_ALIASED_LINE_WIDTH_RANGEでglGetを呼び出します。

glLineWidthによって指定された線幅は、GL_LINE_WIDTHで照会された場合に常に返されます。

クランプや丸めは指定された値に影響を与えません。

線幅は実装依存の最大値にクランプされる場合があります。

最大幅の決定には、GL_ALIASED_LINE_WIDTH_RANGEでglGetを呼び出してください。

widthが0以下の場合、GL_INVALID_VALUEが発生します。

width
:ラスタライズされるラインの幅を指定します。
初期値は1です。

△ Back to INDEX

glLinkProgram

プログラムオブジェクトをリンクします。

void glLinkProgram(GLuint program);

glLinkProgramはprogramで指定されたプログラムオブジェクトをリンクします。

programにアタッチされたGL_VERTEX_SHADERタイプのシェーダオブジェクトは、プログラマブル頂点プロセッサ上で実行される実行可能オブジェクトの生成に使用します。

programにアタッチされたGL_FRAGMENT_SHADERタイプのシェーダオブジェクトは、プログラマブルフラグメントプロセッサ上で実行される実行可能オブジェクトの生成に使用します。

リンク操作の状態は、プログラムオブジェクトの状態の一部として保存されます。

この値は、プログラムオブジェクトがエラー無しでリンクされ、使用準備ができた場合はGL_TRUEに設定され、それ以外の場合はGL_FALSEになります。

引数にprogramとGL_LINK_STATUSを渡してglGetProgramivを呼び出すことによって、照会することができます。

リンク操作が成功すると、programに属する全てのアクティブなユーザ定義のuniform変数は0に初期化され、プログラムオブジェクトのアクティブなuniform変数はそれぞれglGetUniformLocationを呼び出すことによって照会することができる場所に割り当てられます。

また、汎用頂点属性インデックスにバインドされていない全てのアクティブなユーザ定義のattribute変数は、この一時にバインドされます。

プログラムオブジェクトのリンクは、『OpenGL ES Shading Language Specification』によって指定されたいくつかの理由で失敗することがあります。

リンクエラーが発生するいくつかの条件の一部を以下に示します。
  • 頂点シェーダとフラグメントシェーダが、プログラムオブジェクトに両方とも存在しない。

  • 実装でサポートしているアクティブなattribute変数の数を超えている。

  • uniform変数のストレージ制限を超えている。

  • 実装でサポートしているアクティブなuniform変数の数を超えている。

  • 頂点シェーダまたはフラグメントシェーダの主要関数が欠落している。

  • フラグメントシェーダで実際に使用されている様々な変数が頂点シェーダと同じ方法で宣言されていない(または全てが宣言されていない)。

  • 関数または変数名への参照が未定になっている。

  • 共有グローバルが2つの異なる型で宣言されている、または初期値が異なる。

  • 一つ以上のアタッチされたシェーダオブジェクトが、(glCompileShaderによる)コンパイル、または(glShaderBinaryによる)事前コンパイルされたシェーダバイナリの読み込みに成功していない。

  • 汎用属性行列のバインディングで、行列のいくつかの行がGL_MAX_VERTEX_ATTRIBSの最大許容値を超えている。

  • 十分に連続されていない頂点属性の位置が、属性行列のバインドで結合できていない。
プログラムオブジェクトがリンクに成功した場合、プログラムオブジェクトはglUseProgramを呼び出すことによって現在の状態の一部を作成することができます。

リンク操作の成功/失敗に関わらず、プログラムオブジェクトの情報ログは上書きされます。

情報ログは、glGetProgramInfoLogを呼び出すことによって取得することができます。

リンク操作が成功した場合、glLinkProgramはまた、現在のレンダリング状態の一部として生成された実行可能オブジェクトをインストールし、指定されたプログラムオブジェクトは、glUseProgramを呼び出す前の結果として、既に現在使用されています。

現在使用しているプログラムオブジェクトが再リンクに失敗した場合、リンク状態はGL_FALSEに設定されますが、実行可能オブジェクトと関連する状態は、後続のglUseProgramが呼び出されて使用からそれを削除するまで現在の状態の一部が保持されます

使用から削除された後は、再リンクが成功するまで現在の状態の一部にすることができません。

プログラムオブジェクトの情報ログは更新され、プログラムはリンク操作の時に生成されます。

リンク操作の後、アプリケーションはアタッチされたシェーダオブジェクトの変更、アタッチされたシェーダオブジェクトのコンパイル、シェーダオブジェクトのデタッチ、シェーダオブジェクトの削除、そして追加のシェーダオブジェクトのアタッチを自由に行うことができます。

これらの操作を行っても、情報ログまたはプログラムオブジェクトの一部であるプログラムには影響しません。

リンク操作が失敗した場合、program上の以前のリンク操作についての情報は失います。
(すなわち、失敗したリンクはprogramの古い状態に復元されません)

特定の情報はリンク操作に失敗した後でもprogramから取得することができます。

インスタンスのglGetActiveAttribとglGetActiveUniformを参照してください。

programがOpenGLによって生成された値でない場合、GL_INVALID_VALUEが発生します。

programがプログラムオブジェクトでない場合、GL_INVALID_OPERATIONが発生します。

program
:リンクするプログラムオブジェクトのハンドルを指定します。

△ Back to INDEX



●S

glShaderSource

シェーダオブジェクトのソースコードを置換します。

void glShaderSource(GLuint shader, GLsizei count, const GLchar **string, const GLint *length);

シェーダコンパイラをサポートする実装の場合、glShaderSourceはstringによって指定された文字列の配列内にあるソースコードへ、shader内のソースコードを設定します。

シェーダオブジェクト内に格納されていた以前のソースコードは、完全に置換されます。

配列内の文字列数はcountで指定されます。

lengthがNULLの場合、各文字列は各文字列はヌル終端とみなされます。

lengthがNULL以外の値の場合は、stringの対応する要素の、それぞれの文字列長を含む配列へのポインタです。

length配列内の各要素は、対応する文字列の長さ(ヌル文字は文字列長の一部としてカウントしない)、または文字列がヌル終端であることを示す0未満の値が含まれています。

この時ソースコードの文字列は検査や構文解析はされず、単純に指定されたシェーダオブジェクトへコピーされます。

シェーダコンパイラのサポートはオプションであり、したがって引数GL_SHADER_COMPILERでglGetを呼び出すことによって事前に照会する必要があります。

glShaderSourceglCompileShader、glGetShaderPrecisionFormat、そしてglReleaseShaderCompilerは、シェーダコンパイラをサポートしない実装上ではGL_INVALID_OPERATIONを発生させます。

このような実装の代わりに、事前にコンパイルされたシェーダバイナリを供給するための代替として、glShaderBinaryが提供されています。

OpenGLはglShaderSourceが呼び出された時にシェーダソースコード文字列をコピーするので、アプリケーションは関数が戻って来た直後にソースコード文字列のコピーを解放することができます。

シェーダコンパイラがサポートされていない場合、GL_INVALID_OPERATIONが発生します。

shaderがOpenGLによって生成された値でない場合、GL_INVALID_VALUEが発生します。

shaderがシェーダオブジェクトでない場合、GL_INVALID_OPERATIONが発生します。

countが0未満の場合、GL_INVALID_VALUEが発生します。

shader
:ソースコードを置換する場合、シェーダオブジェクトのハンドルを指定します。

count
stringlength配列内の要素数を指定します。

string
:シェーダに読み込まれるソースコードを含む文字列へのポインタの配列を指定します。

length
:文字列長の配列を指定します。

△ Back to INDEX



●T

glTexImage2D

void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * data);

二次元テクスチャ画像を指定します。

テクスチャリングは、テクスチャリングがアクティブになっている各グラフィカルプリミティブ上に、指定されたテクスチャ画像の一部をマッピングします。

現在のフラグメントシェーダまたは頂点シェーダが組込みのテクスチャ参照関数を使用する際に、テクスチャリングがアクティブになります。

テクスチャ画像を定義するには、glTexImage2Dを呼び出します。

引数は、高さ、幅、詳細レベル数(glTexParameter参照)、そしてフォーマットなどのテクスチャ画像のパラメータを表します。

最後の3つの引数は、画像のメモリ内での表現について表します。

データはtypeに応じて符号無しbyteまたはshortのシーケンスとしてdataから読み込まれます。

typeがGL_UNSIGNED_BYTEの場合、各byteはformatに応じて1つの色要素として解釈されます。

typeがGL_UNSIGNED_SHORT_5_6_5、GL_UNSIGNED_SHORT_4_4_4_4、GL_UNSIGNED_SHORT_5_5_5_1のいずれかの場合、各符号無しshort値は決められたformatに従って、色要素は単一のテクセルの全ての要素を含むとして解釈されます。

要素のグループはテクセルと呼ばれます。

width × heightテクセルはメモリから読み込まれ、dataの位置から始まります。

デフォルトでは、全てのwidthテクセルが読み込まれた後以外、読み込むポインタは次の4バイト先に進み、テクセルは隣接したメモリ位置から取得されます。

4バイト行のアライメントは引数GL_UNPACK_ALIGNMENTでglPixelStoreiによって指定され、1、2、4、8バイトに設定することができます。

最初の要素はテクスチャ画像の左下角に対応します。

以降の要素はテクスチャ画像の最下行内のテクセルを左から右へ進み、その後テクスチャ画像の上の行に続きます。

最後の要素はテクスチャ画像の右上角に対応します。

formatdata内の各要素の構成を決定します。

以下のシンボリック値のいずれかを設定できます。

GL_ALPHA
各要素は単一のアルファ成分です。
GLは浮動小数点に変換し、赤、緑、青用に0を付加することによってRGBA要素に組み込みます。
各成分は[0, 1]の範囲にクランプされます。

GL_RGB
各要素はRGBの3つです。
GLは固定小数点または浮動小数点に変換し、アルファ用に1を付加することによってRGBA要素に組み込みます。
各成分は[0, 1]の範囲にクランプされます。

GL_RGBA
各要素は4つ全ての成分が含まれます。
GLは浮動小数点に変換し、各成分は[0, 1]の範囲にクランプされます。

GL_LUMINANCE
各要素は単一の輝度値です。
GLは浮動小数点に変換し、アルファ用に1を付加し、赤、緑、青用に3回輝度値を複製することによってRGBA要素に組み込みます。
各成分は[0, 1]の範囲にクランプされます。

GL_LUMINANCE_ALPHA

各要素は輝度/アルファのペアです。
GLは浮動小数点に変換し、赤、緑、青用に3回輝度値を複製することによってRGBA要素に組み込みます。
各成分は[0, 1]の範囲にクランプされます。

色要素はtypeに基づいて浮動小数点に変換されます。

typeがGL_UNSIGNED_BYTEの場合、各要素は28 - 1で除算されます。

typeがGL_UNSIGNED_SHORT_5_6_5、GL_UNSIGNED_SHORT_4_4_4_4、またはGL_UNSIGNED_SHORT_5_5_5_1の場合、ビットフィールド内のビット数をNとすると各要素は2N-1で除算されます。

internalformatformatと一致する必要があります。

フォーマット間の変換は、テクスチャ画像の処理中はサポートされていません。

typeはどの程度の精密さを望むかを指定するヒントとして使用できますが、GLの実装ではテクスチャ配列に格納されている任意の解像度のものを選択することができます。

dataはNULLポインタにすることができます。

この場合テクスチャメモリはwidth幅とheight高さのテクスチャを格納するために割り当てられます。

その後、このテクスチャメモリを初期化するサブテクスチャをダウンロードすることができます。

ユーザがプリミティブにテクスチャ画像の初期化されていない部分を適用しようとした場合、この画像は未定義です。

glTexImage2Dは、glActiveTextureで指定された現在のテクスチャユニットのための二次元テクスチャまたはキューブマップテクスチャを指定します。

targetがGL_TEXTURE_2D、GL_TEXTURE_CUBE_MAP_POSITIVE_X、GL_TEXTURE_CUBE_MAP_NEGATIVE_X、GL_TEXTURE_CUBE_MAP_POSITIVE_Y、GL_TEXTURE_CUBE_MAP_NEGATIVE_Y、GL_TEXTURE_CUBE_MAP_POSITIVE_Z、またはGL_TEXTURE_CUBE_MAP_NEGATIVE_Zでない場合、GL_INVALID_ENUM が発生します。

formatまたはtypeが有効な定数でない場合、GL_INVALID_ENUMが発生します。

targetが6つのキューブマップ2D画像ターゲットの1つで、幅と高さのパラメータが同じでない場合、GL_INVALID_VALURが発生します。

levelが0より小さい場合、GL_INVALID_VALUEが発生します。

targetがGL_TEXTURE_2Dでない時のGL_MAX_CUBE_MAP_TEXTURE_SIZE、またはtargetがGL_TEXTURE_2Dの時のGL_MAX_TEXTURE_SIZEが返す値をmaxとした時に、levelがlog2(max)より大きい場合、GL_INVALID_VALUEが発生します。

internalformatが有効な定数でない場合、GL_INVALID_VALUEが発生します。

widthまたはheightが0より小さい、あるいはtargetがGL_TEXTURE_2Dの時のGL_MAX_TEXTURE_SIZEまたはtargetがGL_TEXTURE_2Dではない時のGL_MAX_CUBE_MAP_TEXTURE_SIZEより大きい場合、GL_INVALID_VALUEが発生します。

borderが0でない場合、GL_INVALID_VALUEが発生します。

internalformatformatが一致しない場合、GL_INVALID_OPERATIONが発生します。

typeがGL_UNSIGNED_SHORT_5_6_5で、formatがGL_RGBでない場合、GL_INVALID_OPERATIONが発生します。

typeがGL_UNSIGNED_SHORT_4_4_4_4またはGL_UNSIGNED_SHORT_5_5_5_1で、formatがGL_RGBAでない場合、GL_INVALID_OPERATIONが発生します。

target
:アクティブなテクスチャユニットのターゲットテクスチャを指定します。
GL_TEXTURE_2D、GL_TEXTURE_CUBE_MAP_POSITIVE_X、GL_TEXTURE_CUBE_MAP_NEGATIVE_X、GL_TEXTURE_CUBE_MAP_POSITIVE_Y、GL_TEXTURE_CUBE_MAP_NEGATIVE_Y、GL_TEXTURE_CUBE_MAP_POSITIVE_Z、またはGL_TEXTURE_CUBE_MAP_NEGATIVE_Zである必要があります。

level
:詳細レベル番号を指定します。
レベル0は基準画像レベルです。
レベルnn番目のミップマップ縮小画像です。

internalformat
:テクスチャの内部フォーマットを指定します。
GL_ALPHA、GL_LUMINANCE、GL_LUMINANCE_ALPHA、GL_RGB、GL_RGBAのシンボリック定数のいずれかである必要があります。

width
:テクスチャ画像の幅を指定します。
全ての実装で、少なくとも幅64テクセルのテクスチャ画像と、少なくとも幅16テクセルのキューブマップのテクスチャ画像をサポートします。

height
:テクスチャ画像の高さを指定します。
全ての実装で、少なくとも高さ64テクセルのテクスチャ画像と、少なくとも16テクセルのキューブマップのテクスチャ画像をサポートします。

border
:境界線の幅を指定します。
この値は0にする必要があります。

format
:テクセルデータのフォーマットを指定します。
この値はinternalformatと同じにする必要があります。
GL_ALPHA、GL_RGB、GL_RGBA、GL_LUMINANCE、そしてGL_LUMINANCE_ALPHAのシンボリック値が有効です。

type
:テクセルデータのデータ型を指定します。
GL_UNSIGNED_BYTE、GL_UNSIGNED_SHORT_5_6_5、GL_UNSIGNED_SHORT_4_4_4_4、そしてGL_UNSIGNED_SHORT_5_5_5_1のシンボリック値が有効です。

data:メモリ内の画像データへのポインタを指定します。

△ Back to INDEX

glTexParameter


void glTexParameterf(GLenum target, GLenum pname, GLfloat param);

void glTexParameteri(GLenum target, GLenum pname, GLint param);

void glTexParameterx(GLenum target, GLenum pname, GLfixed param);

target
:ターゲットのテクスチャを指定します。
GL_TEXTURE_2Dである必要があります。

pname
:単一の値のテクスチャパラメータのシンボリック名を指定します。
GL_TEXTURE_MIN_FILTER、GL_TEXTURE_MAG_FILTER、GL_TEXTURE_WRAP_S、GL_TEXTURE_WRAP_T、またはGL_GENERATE_MIPMAPのいずれかを指定することができます。

param
pnameの値を指定します。

void glTexParameterfv(GLenum target, GLenum pname, GLfloat * params);

void glTexParameteriv(GLenum target, GLenum pname, GLint * params);

void glTexParameterxv(GLenum target, GLenum pname, GLfixed * params);

target:ターゲットのテクスチャを指定します。
GL_TEXTURE_2Dである必要があります。

pname
:テクスチャパラメータのシンボリック名を指定します。
GL_TEXTURE_MIN_FILTER、GL_TEXTURE_MAG_FILTER、GL_TEXTURE_WRAP_S、GL_TEXTURE_WRAP_T、またはGL_GENERATE_MIPMAPのいずれかを指定することができます。

params
:格納されているpnameの値、または値が格納されている配列へのポインタを指定します。

テクスチャパラメータを設定します。

テクスチャマッピングは、オブジェクトの表面に画像をデカールまたはセロハン包装のように、オブジェクトの表面に画像を適用するテクニックです。

画像は(s, t)座標系のテクスチャ空間に生成されます。

テクスチャは一次元または二次元の画像と、どのようにサンプルを画像から得るかを決定するパラメータとのセットです。

glTexParameterはpnameとして指定されたテクスチャパラメータに、paramまたはparams内の値を割り当てます。

targetはターゲットテクスチャを定義し、GL_TEXTURE_2Dである必要があります。

以下に有効なpnameのシンボルを示します。

  • GL_TEXTURE_MIN_FILTER

    テクスチャ縮小関数は、一つのテクスチャ要素より大きい領域にテクスチャマッピングする度に使用されます。
    6つの縮小関数が定義されています。
    その内2つはテクスチャの値を計算するために、最も近い1つまたは4つのテクスチャ要素を使用します。
    残りの4つはミップマップを使用します。

    ミップマップは、同じ画像を徐々に低解像度で表した配列を順番に並べたセットです。
    テクスチャが2n × 2mの大きさの場合、max(n, m) + 1のミップマップを持ちます。
    最初のミップマップは元となるテクスチャで、2n × 2mの大きさです。
    以前のミップマップを2k × 2lとすると、k = 0またはl = 0のどちらかになるまで、以降の各ミップマップは2k-1 × 2l-1の大きさになります。
    その時点で、以降のミップマップは1 × 2l-1または2k-1 × 1の大きさになりますが、最終的にミップマップは1 × 1の大きさを持ちます。
    ミップマップを定義するには、ミップマップの順番を示すlevel引数でglTexImage2DまたはglCopyTexImage2Dを呼び出します。
    レベル0は元になるテクスチャです。
    レベルmax(n, m)は最終的に1 × 1のミップマップになります。

    paramは、以下のいずれかをテクスチャを縮小するための関数を提供します。

    • GL_NEAREST
      テクスチャが存在するピクセルの中央に(マンハッタン距離で)最も近いテクスチャ要素の値を返します。

    • GL_LINEAR
      テクスチャが存在するピクセルの中央に最も近い4つのテクスチャ要素の加重平均を返します。
      これらはGL_TEXTURE_WRAP_SとGL_TEXTURE_WRAP_Tの値に応じて正確なマッピングで、繰り返しまたはラッピングされた要素を含めることができます。

    • GL_NEAREST_MIPMAP_NEAREST
      テクスチャが存在するピクセルのサイズと一致する最も密接なミップマップを選択し、GL_NEARESTの基準(ピクセルの中央に最も近いテクスチャ要素)を使用して、テクスチャ値を生成します。

    • GL_LINEAR_MIPMAP_NEAREST
      テクスチャが存在するピクセルのサイズと一致する最も密接なミップマップを選択し、GL_LINEARの基準(ピクセルの中央に最も近い4つのテクスチャ要素の加重平均)を使用して、テクスチャ値を生成します。

    • GL_NEAREST_MIPMAP_LINEAR
      テクスチャが存在するピクセルのサイズと一致する最も密接な2つのミップマップを選択し、GL_NEARESTの基準(ピクセルの中央に最も近いテクスチャ要素)を使用して、各ミップマップからテクスチャ値を生成します。
      最終的なテクスチャ値は、これら2つの値の加重平均です。

    • GL_LINEAR_MIPMAP_LINEAR
      テクスチャが存在するピクセルのサイズ一致する最も密接な2つのミップマップを選択し、GL_LINEARの基準(ピクセルの中央に最も近い4つのテクスチャ要素の加重平均)を使用して、各ミップマップからテクスチャ値を生成します。
      最終的なテクスチャ値は、これら2つの値の加重平均です。

      縮小過程でより多くのテクスチャ要素がサンプリングされると、エイリアシングがより少なくなり結果がはっきり見えるようになります。
      縮小関数のGL_NEARESTとGL_LINEARは他の4つよりも高速ですが、レンダリングされるピクセルのテクスチャ値が1つまたは4つの要素のみのサンプリングで決定されるため、モアレパターンや不規則な遷移を生成することになります。

    GL_TEXTURE_MIN_FILTERの初期値はGL_NEAREST_MIPMAP_LINEARです。

  • GL_TEXTURE_MAG_FILTER

    テクスチャ拡大関数は、一つのテクスチャ要素と同じ、またはより小さい領域にテクスチャマッピングする時に使用されます。
    テクスチャ拡大関数は、後述するGL_NEARESTまたはGL_LINEARのどちらかに設定します。
    GL_NEARESTは一般的にGL_LINEARより高速ですが、テクスチャ要素間が滑らかではないので、急な境界を持つテクスチャ画像が生成されます。

    • GL_NEAREST
      テクスチャが存在するピクセルの中央に(マンハッタン距離で)最も近いテクスチャ要素の値を返します。

    • GL_LINEAR
      テクスチャが存在するピクセルの中央に最も近い4つのテクスチャ要素の加重平均を返します。
      これらはGL_TEXTURE_WRAP_SとGL_TEXTURE_WRAP_Tの値に応じて正確なマッピングで、繰り返しまたはラッピングされた要素を含めることができます。

    GL_TEXTURE_MAG_FILTERの初期値はGL_LINEARです。

  • GL_TEXTURE_WRAP_S

    テクスチャ座標sのラップパラメータを、GL_CLAMP_TO_EDGEまたはGL_REPEATのどちらかに設定します。

    • GL_CLAMP_TO_EDGE
      s座標範囲で[(1/2N), 1-(1/2N)]にクランプします。
      Nはクランプする方向にあるテクスチャのサイズです。

    • GL_REPEAT
      s座標の整数部分は無視され、GLは端数部分のみを使用して、繰り返しパターンを生成します。

    GL_TEXTURE_WRAP_Sの初期値はGL_REPEATです。

  • GL_TEXTURE_WRAP_T

    テクスチャ座標tのラップパラメータを、GL_CLAMP_TO_EDGEまたはGL_REPEATのどちらかに設定します。
    内容はGL_TEXTURE_WRAP_S以下の説明を参照してください。

    GL_TEXTURE_WRAP_Tの初期値はGL_REPEATです。

  • GL_GENERATE_MIPMAP

    ミップマップ生成のパラメータを自動的に設定します。
    GL_TRUEが設定されている場合、ミップマップのlevelbase配列の内部テクセルが変更されると、変更されたlevelbase配列から誘導されたミップ マップ配列の完全なセットを計算します。
    配列のレベルlevelbase + 1pは、以前のコンテンツに関係無く誘導された配列に置換されます。
    levelbase配列を含む他の全てのミップマップ配列は、この計算によって変更されません。

    GL_GENERATE_MIPMAPの初期値はGL_FALSEです。

プログラムは(引数GL_TEXTURE_2DでglEnableを呼び出すことによって)テクスチャを有効にしている場合、ミップマップを必要とする関数のいずれかにGL_TEXTURE_MIN_FILTERが設定されていると仮定します。

(事前のglTexImage2DまたはglCopyTexImage2Dの呼び出しで)現在定義されているテクスチャ画像の大きさが(前述の)ミップマップ用の適切な順序に従っていない、または必要数よりも定義されたテクスチャ画像が少ない、あるいはテクスチャ要素の番号がテクスチャ画像のセットと異なる場合、テクスチャマッピングは無効となります。

リニアフィルタリングは、4つの最も近いテクスチャ要素にアクセスします。

glTexParameterはアクティブなテクスチャユニット用のテクスチャパラメータを指定し、glActiveTextureを呼び出すことによって指定されます。

targetまたはpnameが定義された有効な値でない場合、GL_INVALID_ENUMが発生します。

pnameの値を基にして)定義された定数値である必要があるparamがそうでない場合、GL_INVALID_ENUMが発生します。

△ Back to INDEX



●U

glUniform

現在のプログラムオブジェクトのuniform変数の値を指定します。

void glUniform1f(GLint location, GLfloat v0);

void glUniform2f(GLint location, GLfloat v0, GLfloat v1);

void glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);

void glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);

void glUniform1i(GLint location, GLint v0);

void glUniform2i(GLint location, GLint v0, GLint v1);

void glUniform3i(GLint location, GLint v0, GLint v1, GLint v2);

void glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);

location
:変更するuniform変数の場所を指定します。

v0
v1v2v3:指定されたuniform変数に使用する新しい値を指定します。

void glUniform1fv(GLint location, GLsizei count, const GLfloat *value);

void glUniform2fv(GLint location, GLsizei count, const GLfloat *value);

void glUniform3fv(GLint location, GLsizei count, const GLfloat *value);

void glUniform4fv(GLint location, GLsizei count, const GLfloat *value);

void glUniform1iv(GLint location, GLsizei count, const GLint *value);

void glUniform2iv(GLint location, GLsizei count, const GLint *value);

void glUniform3iv(GLint location, GLsizei count, const GLint *value);

void glUniform4iv(GLint location, GLsizei count, const GLint *value);

location
:変更するuniform値の場所を指定します。

count
:変更する要素数を指定します。
対象となるuniform変数が配列でない場合は1、配列の場合は1以上である必要があります。

value
:指定されたuniform変数を更新するために使用される、count値の配列のポインタを指定します。

void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);

void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);

void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);

location
:変更するuniform値の場所を指定します。

count
:変更される行列数を指定します。
対象となるuniform値が行列の配列でない場合は1、行列の配列の場合は1以上である必要があります。

transpose
:uniform変数に読み込む値として、行列を変換するかどうかを指定します。
GL_FALSEにする必要があります。

value
:指定されたuniform値の更新に使用される、count値の配列のポインタを指定します。

glUniformは、uniform変数またはuniform変数配列の値を変更します。

変更するuniform変数の場所はlocationによって指定され、glGetUniformLocationによって返された値である必要があります。

glUniformは、glUseProgramを呼び出すことによって現在の状態の一部に作成されたプログラムオブジェクト上で操作されます。

コマンドglUniform{1|2|3|4}{f|i}は、引数として渡された値を使用して、locationによって指定されたuniform変数の値を変更するために使用されます。

コマンドで指定された数は、指定されたuniform変数(例えば、float、int、boolの場合は1。vec2、ivec2、bvec2の場合は2など)のデータ型の要素数と一致する必要があります。

接尾辞fは浮動小数点値が渡されることを示し、接尾辞iは整数値が渡されることを示し、この型は指定されたuniform変数のデータ型を一致する必要があります。

この関数のiの変形は、int、ivec2、ivec3、ivec4またはこれらの配列として定義されたuniform変数の値の提供に使用する必要があります。

fの変形は、float、vec2、vec3、vec4、またはこれらの配列の型のuniform変数の値の提供に使用する必要があります。

iまたはfの変形のいずれかが、bool、bvec2、bvec2、bvec4、またはこれらの配列の型のuniform変数の値の提供に使用されることがあります。

uniform変数は、入力値が0または0.0fの場合はfalseに設定され、それ以外の場合はtrueに設定されます。

プログラムオブジェクト内で定義されている全てのアクティブなuniform変数は、プログラムオブジェクトがリンクに成功している場合に0で初期化されています。

これらが再び0に初期化されている場合、次の成功したリンク操作がプログラムオブジェクト上で発生するまで、glUniformの呼び出しによってそれらに関連付けられた値は保持されます。

コマンドglUniform{1|2|3|4}{f|i}vは、単一のuniform変数またはuniform変数配列を変更するために使用されます。

これらのコマンドは、uniform変数またはuniform変数配列に読み込まれる値をカウントし、ポインタを渡します。

単一のuniform値の値を変更する場合は1のカウントを使用する必要があり、配列全体または配列の一部を変更する場合は1以上のカウントを使用することができます。

uniform変数配列内の任意の位置mから始まるn個の要素を読み込む場合、配列内の要素m + n -1は新しい値で置換されます。

m + n -1がuniform変数配列のサイズより大きい場合、配列の終端を超える全ての配列要素の値は無視されます。

コマンドの名前で指定された数はvalue内の各要素の成分数を示し、指定されたuniform変数(例えば、float、int、boolの場合は1、vec2、ivec2、bvec2の場合は2など)のデータ型の成分数と一致する必要があります。

コマンドの名前で指定されたデータ型は、glUniform{1|2|3|4}{f|i}のため、前述のように指定されたuniform変数のデータ型と一致する必要があります。

uniform変数配列の場合、配列の各要素はコマンドの名前で示される型であるとみなされます。
(例えば、glUniform3fまたはglUniform3fvは、vec3型のuniform変数配列の読み込みに使用することができます)

変更するuniform変数配列の要素数は、countで指定します。

コマンドglUniformMatrix{2|3|4}fvは、行列または行列の配列の変更に使用します。

コマンド名の数は行列の次元として解釈されます。

数2は2×2行列(すなわち4つの値)、数3は3×3行列(すなわち9つの値)、数4は4×4行列(すなわち16個の値)を示します。

各行列は列優先の順序で指定されていると仮定しています。

引数countは渡される行列の数を示します。

単一の行列の値を変更する場合は1のカウントを使用する必要があり、行列の配列の変更する場合は1以上のカウントを使用することができます。

glUniform1iとglUniform1ivは、サンプラータイプとして定義されているuniform変数の読み込みに使用することができる唯2つの関数です。

他の関数とサンプラーを読み込むと、GL_INVALID_OPERATIONエラーが発生します。

countが1より大きく、uniform変数が配列を示していない場合、GL_INVALID_OPERATIONエラーが発生し、指定されたuniform変数は変更されません。

前述の例外を除き、シェーダで定義されているuniform変数の型とサイズが、その値の読み込み使用されているコマンドの名前で指定された型とサイズに一致しない場合、GL_INVALID_OPERATIONエラーが発生し、指定されたuniform変数は変更されません。

locationが-1以外の値で、現在のプログラムオブジェクトで有効なuniform変数の場所を表していない場合、エラーが発生し、現在のプログラムオブジェクトのuniform変数のストレージは変更されません。

locationが-1の場合、渡されたデータは無視され、指定されたuniform変数は変更されません。

現在のプログラムオブジェクトが存在しない場合は、GL_INVALID_OPERATIONが発生します。

シェーダで宣言されたuniform変数がglUniformコマンドによって示されているサイズと一致しない場合、GL_INVALID_OPERATIONが発生します。

この関数の整数の変形の一つが、型float、vec2、vec3、vec4、またはこれらの配列のuniform変数の読み込みに使用された場合、あるいはこの関数の浮動小数点の変形の一つが、型int、ivec2、ivec3、ivec4、またはそれらの配列のuniform変数の読み込みに使用された場合は、GL_INVALID_OPERATIONが発生します。

locationが現在のプログラムオブジェクトの無効なuniformの場所で、locationが-1で無い場合、GL_INVALID_OPERATIONが発生します。

countが0未満の場合、GL_INVALID_VALUEが発生します。

transposeがGL_FALSEでない場合、GL_INVALID_VALUEが発生します。

countが1より大きく、示されているunifoem変数が配列変数でない場合、GL_INVALID_OPERATIONが発生します。

サンプラーがglUniform1iとglUniform1iv以外のコマンドを使用して読み込まれた場合、GL_INVALID_OPERATIONが発生します。

△ Back to INDEX

glUseProgram

void glUseProgram(GLuint program);

現在のレンダリング状態の一部としてプログラムをインストールします。

glUseProgramは、現在のレンダリング状態の一部として、programで指定されたプログラムオブジェクトをインストールします。

プログラムオブジェクト内には、glAttachShaderでアタッチに成功したシェーダオブジェクト、glCompileShaderでコンパイルに成功したシェーダオブジェクト、そしてglLinkProgramでリンクに成功したプログラムオブジェクトが一つ以上実行可能オブジェクトが生成されています。

プログラムオブジェクトには、全てコンパイルとリンクに成功した一つ以上のGL_VERTEX_SHADERタイプのシェーダオブジェクトと、一つ以上のGL_FRAGMENT_SHADERタイプのシェーダオブジェクトが含まれている場合、頂点とフラグメントのプロセッサ上で実行される、実行可能なものが含まれています。

プログラムオブジェクトを使用している間、アプリケーションはアタッチされたシェーダオブジェクトの変更、アタッチされたシェーダオブジェクトのコンパイル、追加のシェーダオブジェクトをアタッチ、そしてシェーダオブジェクトのデタッチや削除を自由に行うことができます。

これらの操作を行っても、現在の状態の一部である実行可能オブジェクトには影響しません。

ただし、現在使用されているプログラムオブジェクトを再リンクすると、リンクの操作が成功した場合、現在のレンダリング状態の一部としてプログラムオブジェクトがインストールされます。
glLinkProgram参照)

現在使用中のプログラムオブジェクトが再リンクに失敗した場合、リンクのステータスがGL_FALSEに設定されますが、実行可能オブジェクトと関連する状態はglUseProgramが以降呼び出されて使用からそれを削除するまで現在の状態の一部のままになります。

使用から削除された後は、再リンクが成功するまで現在の状態の一部にすることができません。

programが0の場合、現在のレンダリング状態は無効なプログラムオブジェクトを参照しており、全てのglDrawArraysまたはglDrawElementsコマンドによる頂点とフラグメントシェーダの実行結果は未定義になります。

テクスチャオブジェクトやバッファオブジェクトと同様に、プログラムオブジェクトの名前空間はコンテキストのセット間で共有されることがあり、その場合コンテキストのサーバ側と同じアドレス空間を共有します。

名前空間がコンテキスト間で共有されている場合、全てのアタッチされているオブジェクトとそれらのアタッチされているオブジェクトに関連するデータも、同様に共有されます。

アプリケーションは、オブジェクトが異なる実行スレッドからアクセスする場合に、APIの呼び出し間での同期を提供する責任があります。

programが0またはOpenGLによって生成された値でもない場合、GL_INVALID_VALUEが発生します。

programがプログラムオブジェクトでない場合、GL_INVALID_OPERATIONが発生します。

programが現在の状態の一部を作成できなかった場合、GL_INVALID_OPERATIONが発生します。

program:現在のレンダリング状態の一部として使用される、実行可能なプログラムオブジェクトの名前を指定します。

△ Back to INDEX



●V

glValidateProgram

プログラムオブジェクトを検証します。

void glValidateProgram(GLuint program);

glValidateProgramは、program内に含まれている実行可能オブジェクトが、与えられた現在のOpenGLの状態で実行できるかどうかをチェックします。

検証工程によって生成された情報は、programの情報ログ内に格納されます。

検証情報は、空の文字列、または現在のOpenGLの状態の残りと現在のプログラムオブジェクトがどのように相互作用するかに関する情報が含まれた文字列の場合があります。

これは、現在のプログラムの非効率、次善策、実行の失敗などについての原因に関する詳細な情報を伝える、OpenGLの実装方法を提供します。

検証操作の状態は、プログラムオブジェクトの状態の一部として格納されます。

この値は、検証に成功した場合はGL_TRUE、それ以外の場合はGL_FALSEに設定されます。

これは引数programとGL_VALIDATE_STATUSでglGetProgramivを呼び出すことによって、照会することができます。

検証が成功した場合、programは与えられた現在の状態で実行されることが保証されます。

それ以外の場合、programは実行を保証しません。

この関数は、通常アプリケーション開発工程中のみ有効です。

情報ログ内に格納されている情報文字列は完全に実装依存なため、アプリケーションが同一の情報文字列を生成するために、異なるOpenGLの実装を期待してないでください。

この関数は、プログラマブルシェーダが現在の状態の一部である間にレンダリングコマンドが発行された時、OpenGLの実装が実行する必要がある検証操作を模倣しています。

現在のプログラムオブジェクト内の2つのアクティブなサンプラーが異なるタイプでありながら、同じテクスチャ画像ユニットを参照している場合、glDrawArraysまたはglDrawElementsによってエラーGL_INVALID_OPERATIONが発生します。

レンダリングコマンドが発行された時に、アプリケーションがこれらのエラーを捕捉することは困難であるか、またはパフォーマンス低下の原因となります。

したがって、アプリケーション開発中にこれらの問題を発見するために、glValidateProgramを呼び出すことを勧めます。

programがOpenGLによって生成された値でない場合、GL_INVALID_VALUEが発生します。

programがプログラムオブジェクトでない場合、GL_INVALID_OPERATIONが発生します。

program
:検証するプログラムオブジェクトのハンドルを指定します。

△ Back to INDEX

glVertexAttribPointer

汎用頂点属性データの配列を定義します。

void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer);

glVertexAttribPointerは、レンダリング時に使用するインデックスindexにある汎用頂点属性の配列の、場所とデータフォーマットを指定します。

sizeは属性ごとの要素数を指定し、1、2、3、または4である必要があります。

typeは各要素のデータ型を指定し、strideはある属性から次の属性へのバイトストライドを指定しており、頂点と属性を単一の配列内にまとめたり、別々の配列に格納することができます。

GL_TRUEが設定されている場合、normalizedは[-1, 1](符号有り値の場合)または[0, 1](符号無し値の場合)の範囲にマップされた整数フォーマット内に格納された値を示し、アクセス時に浮動小数点に変換されます。

それ以外の場合、値は正規化されず、直接浮動小数点に変換されます。

汎用頂点属性配列が指定されている間、非ゼロで名付けられたバッファオブジェクトがGL_ARRAY_BUFFERターゲット(glBindBuffer参照)にバインドされている場合、pointerはバッファオブジェクトのデータストアへのバイトオフセットとしてみなされます。

また、バッファオブジェクトのバインディング(GL_ARRAY_BUFFER_BINDING)は、インデックスindexのための汎用頂点属性配列のクライアント側の状態(GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING)として保存されます。

汎用頂点属性配列が指定されている場合、sizetypenormalizedstride、そしてpointerはクライアント側の状態として保存され、現在の頂点配列のバッファオブジェクトのバインディングに追加されます。

汎用頂点属性配列の有効/無効には、indexglEnableVertexAttribArrayやglDisableVertexAttribArrayを呼び出します。

有効にした場合、glDrawArraysやglDrawElementsが呼び出された時に、汎用頂点属性配列が使用されます。

各汎用頂点属性配列は初期状態で無効であり、glDrawElementsやglDrawArraysが呼び出された時にアクセスすることができません。

glVertexAttribPointerは、通常クライアント側に実装されます。

typeが有効な値でない場合、GL_INVALID_ENUMが発生します。

indexがGL_MAX_VERTEX_ATTRIBS以上の場合、GL_INVALID_VALUEが発生します。

sizeが1、2、3、または4でない場合、GL_INVALID_VALUEが発生します。

strideが負の場合、GL_INVALID_VALUEが発生します。

index
:変更する汎用頂点属性のインデックスを指定します。

size
:汎用頂点属性ごとの要素数を指定します。
1、2、3、または4である必要があります。
初期値は4です。

type
:配列内の各要素のデータ型を指定します。
シンボリック定数はGL_BYTE、GL_UNSIGNED_BYTE、GL_SHORT、GL_UNSIGNED_SHORT、GL_FIXED、GL_FLOATが使用できます。
初期値はGL_FLOATです。

normalized
:アクセス時に、固定小数点データ値が正規化されたもの(GL_TRUE)か固定小数点値として直接変換されたものか(GL_FALSE)を指定します。

stride
:連続した汎用頂点属性間のバイトオフセットを指定します。
strideが0の場合、汎用頂点属性は配列内で隙間無く格納されていると解釈されます。
初期値は0です。

pointer
:配列内の最初の汎用頂点属性の最初の要素へのポインタを指定します。
初期値は0です。

△ Back to INDEX

glViewport


void glViewport(GLint x, GLint y, GLsizei width, GLsizei height);

ビューポートを設定します。

glViewportは、正規化デバイス座標系からウィンドウ座標系へと、xyのアフィン変換を指定します。

(xnd, ynd)を正規化デバイス座標系とすると、ウィンドウ座標系(xw, yw)は以下のように計算されます。

xw
= (xnd + 1) * (width / 2) + x

yw
= (ynd + 1) * (height / 2) + y

ビューポートの幅と高さは、実装に依存する範囲に暗黙的に固定されます。

この範囲の照会には、引数GL_MAX_VIEWPORT_DIMSでglGetを呼び出してください。

width
またはheightが負の場合、GL_INVALID_VALUEが発生します。

x
y:ビューポート矩形の左下角をピクセル単位で指定します。

初期値は(0, 0)です。

width
height:ビューポートの幅と高さを指定します。

GLコンテキストがウィンドウに最初にアタッチされている場合、widthheightはそのウィンドウの寸法に設定されます。

△ Back to INDEX



参考文献

OpenGL ES 2.0 Reference Pages

Wikipedia/マンハッタン距離

X Window System リファレンス/jman/GLGET

テン*シー*シー/iPhoneアプリ開発、その(100) ようやく終息OpenGL ESセットアップ

WisdomSoft/OpenGL入門/テクスチャ

OpenGL ES 1.1

2011. 10. 22
INDEXABCDEFGHILMNOPRSTVegl

A

glActiveTexture
glAlphaFunc

B

glBindBuffer
glBindTexture
glBlendFunc
glBufferData
glBufferSubData

C

glClear
glClearColor
glClearDepth
glClearStencil
glClientActiveTexture
glClipPlane
glColor
glColorMask
glColorPointer
glCompressedTexImage2D
glCompressedTexSubImage2D
glCopyTexImage2D
glCopyTexSubImage2D
glCullFace

D

glDeleteBuffers
glDeleteTextures
glDepthFunc
glDepthMask
glDepthRange
glDisable
glDisableClientState
glDrawArrays
glDrawElements

E

glEnable
glEnableClientState

F

glFinish
glFlush
glFog
glFrontFace
glFrustum

G

glGenBuffers
glGenTextures
glGet
glGetBufferParameteriv
glGetClipPlane
glGetError
glGetLight
glGetMaterial
glGetPointerv
glGetString
glGetTexEnv
glGetTexParameter

H

glHint

I

glIsBuffer
glIsEnabled
glIsTexture

L

glLight
glLightModel
glLineWidth
glLoadIdentity
glLoadMatrix
glLogicOp

M

glMaterial
glMatrixMode
glMultMatrix
glMultiTexCoord

N

glNormal
glNormalPointer

O

glOrtho

P

glPixelStorei
glPointParameter
glPointSize
glPointSizePointerOES
glPolygonOffset
glPopMatrix
glPushMatrix

R

glReadPixels
glRotate

S

glSampleCoverage
glScale
glScissor
glShadeModel
glStencilFunc
glStencilMask
glStencilOp

T

glTexCoordPointer
glTexEnv
glTexImage2D
glTexParameter
glTexSubImage2D
glTranslate

V

glVertexPointer
glViewport

egl

eglBindTexImage
eglChooseConfig
eglCopyBuffers
eglCreateContext
eglCreatePbufferSurface
eglCreatePixmapSurface
eglCreateWindowSurface
eglDestroyContext
eglDestroySurface
eglGetConfigAttrib
eglGetConfigs
eglGetCurrentContext
eglGetCurrentDisplay
eglGetCurrentSurface
eglGetDisplay
eglGetError
eglGetProcAddress
eglInitialize
eglMakeCurrent
eglQueryContext
eglQueryString
eglQuerySurface
eglReleaseTexImage
eglSurfaceAttrib
eglSwapBuffers
eglSwapInterval
eglTerminate
eglWaitGL
eglWaitNative



●B

glBindTexture

void glBindTexture(GLenum target, GLuint texture);

テクスチャを貼るターゲットへ名付けられたテクスチャをバインドします。

glBindTextureは名付けられたテクスチャを生成または使用することができます。

targetをGL_TEXTURE_2Dに設定してglBindTextureを呼び出し、新しいテクスチャの名前をtextureに設定し、ターゲットへテクスチャ名をバインドします。

ターゲットにテクスチャがバインドされていた場合、そのターゲットの以前のバインディングは自動的に破棄されます。

テクスチャ名は符号無し整数です。

値0は、各テクスチャのターゲットのデフォルトのテクスチャを表現するために予約されています。

テクスチャ名と対応するテクスチャのコンテンツは、現在のGLレンダリングコンテキストの共有テクスチャオブジェクト空間(eglCreateContext参照)に対してローカルです。

新しいテクスチャ名の設定を生成するには、glGenTexturesを使用してください。

テクスチャがバインドされている間、バインドされているターゲット上のGLの操作はバインドされているテクスチャに影響を与えます。

テクスチャがバインドされているターゲットの次元のテクスチャマッピングがアクティブな場合、バインドされているテクスチャが使用されます。

実際には、現在バインドされているテクスチャのエイリアスがテクスチャのターゲットとなり、初期化時にテクスチャ名0がバインドされたデフォルトテクスチャを参照します。

glBindTextureで生成されたテクスチャのバインディングは、異なるテクスチャが同じターゲットにバインドされる、またはバインドされているテクスチャがglDeleteTexturesによって削除されるまでアクティブを保持します。

一度生成されると、名付けられたテクスチャは必要に応じて一致する次元のターゲットに再バインドさせることができます。

通常、glTexImage2Dを使用してテクスチャ画像を再読み込みするよりも、テクスチャターゲットの1つに既存の名付けられたテクスチャをglBindTextureを使用してバインドした方が遥かに高速です。

targetが有効な値の1つでない場合、GL_INVALID_ENUMが発生します。

target:テクスチャがバインドされているターゲットを指定します。
GL_TEXTURE_2Dである必要があります。

texture:テクスチャの名前を指定します。

△ Back to INDEX

glBlendFunc


void glBlendFunc(GLenum sfactor, GLenum dfactor);

ピクセル演算を指定します。

ピクセルは、元となる値とカラーバッファ(の対象となる値)内にある既存の値をブレンドする関数を使用して描画することができます。

ブレンディングを有効/無効にするには、引数GL_BLENDでglEnableglDisableを使用してください。

ブレンディングの初期状態は無効になっています。

glBlendFuncは、有効になっている時のブレンディング操作を定義しています。

sfactorは、元となる色成分の比率を11のメソッドを使用して指定します。

dfactorは、対象となる色成分の比率を10のメソッドを使用して指定します。

11の有効なメソッドは以下に表で表します。

各メソッドは、赤、緑、青、そしてアルファの4つの比率要素で定義されています。

表とその後の方程式において、元と対象の色成分は(Rs, Gs, Bs, As)と(Rd, Gd, Bd, Ad)として表されています。

これらは0から(kR, kG, kB, kA)間の整数値を持つとすると、

kc = 2mc - 1

と表され、(mR, mG, mB, mA)は、赤、緑、青、そしてアルファのビットプレーン数を示します。

元と対象の比率要素は、(sR, sG, sB, sA)と(dR, dG, dB, dA)として参照されます。

比率要素は表では(fR, fG, fB, fA)と示しており、元または対象の要素を表します。

全ての比率要素の範囲は[0, 1]です。

Parameter (fR, fG, fB, fA)
GL_ZERO (0, 0, 0, 0)
GL_ONE (1, 1, 1, 1)
GL_SRC_COLOR (R/ kR, G/ kG, B/ kB, A/ kA)
GL_ONE_MINUS_SRC_COLOR (1, 1, 1, 1) - (R/ kR, G/ kG, B/ kB, A/ kA)
GL_DST_COLOR (R/ kR, G/ kG, B/ kB, A/ kA)
GL_ONE_MINUS_DST_COLOR (1, 1, 1, 1) - (R/ kR, G/ kG, B/ kB, A/ kA)
GL_SRC_ALPHA (A/ kA, A/ kA, A/ kA, A/ kA)
GL_ONE_MINUS_SRC_ALPHA (1, 1, 1, 1) - (A/ kA, A/ kA, A/ kA, A/ kA)
GL_DST_ALPHA (A/ kA, A/ kA, A/ kA, A/ kA)
GL_ONE_MINUS_DST_ALPHA (1, 1, 1, 1) - (A/ kA, A/ kA, A/ kA, A/ kA)
GL_SRC_ALPHA_SATURATE (i, i, i, 1)

表において、

i = min(As, kA - Ad) / kA

ピクセルのブレンド値の決定に、システムは以下の方程式を使用します。

Rd = min(kR, RssR + RddR)

Gd = min(kG, GssG + GddG)

Bd = min(kB, BssB + BddB)

Ad = min(kA, AssA + AddA)

ブレンディングは不正確な整数のカラー値で計算するため、上記の方程式の精密な見た目にも関わらず、ブレンディングの計算は正確ではありません。

しかし1に等しくなる必要があるブレンド要素は、その被乗数を変更しないことが保証されており、0に等しいブレンド要素は被乗数を0へ減少させます。

例えばsfactorがGL_SRC_ALPHAで、dfactorがGL_ONE_MINUS_SRC_ALPHA、AskAが等しい場合、方程式は単純なものに置換できます。

Rd = Rs

Gd = Gs

Bd = Bs

Ad = As

全てのピクセル書き込み操作上でのglBlendFuncの操作は、ポイント、ライン、そしてポリゴンの走査変換を含みます。

glBlendFuncはglClearの影響を受けません。

一例として、透明度は最奥から最前にソートされたプリミティブを、glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)を使用して、最も頻繁に実装されます。

この透明度の計算は、カラーバッファのアルファビットプレーンの存在を必要としないことに注意してください。

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)はまた、アンチエイリアシングをしたポイントとラインのレンダリングに便利です。

sfactorまたはdfactorが有効な値でない場合、GL_INVALID_ENUMが発生します。

sfactor:元となる赤、緑、青、そしてアルファのブレンディング要素をどのように計算するかを指定します。
GL_ZERO、GL_ONE、GL_DST_COLOR、GL_ONE_MINUS_DST_COLOR、GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA、GL_DST_ALPHA、GL_ONE_MINUS_DST_ALPHA、そしてGL_SRC_ALPHA_SATURATEのシンボリック定数を指定できます。
初期値はGL_ONEです。

dfactor:対象となる赤、緑、青、そしてアルファのブレンディング要素をどのように計算するかを指定します。

GL_ZERO、GL_ONE、GL_SRC_COLOR、GL_ONE_MINUS_SRC_COLOR、GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA、GL_DST_ALPHA、そしてGL_ONE_MINUS_DST_ALPHAの8つのシンボリック定数を指定できます。
初期値はGL_ZEROです。

△ Back to INDEX



●C

glClear


void glClear(GLbitfield mask);

プリセット値にバッファをクリアします。

glClearは、glClearColor、glClearDepthf、そしてglClearStencilによって予め選択された値に、ウィンドウのビットプレーン空間を設定します。

ピクセル所有権テスト、シザーテスト、ディザリング、そしてバッファのホワイトマスクは、glClearの操作に影響を与えます。

シザーボックスはクリアされた領域を制限します。

アルファ関数、ブレンド関数、論理操作、ステンシル、テクスチャマッピング、そして深度バッファリングは、glClearによって無視されます。

glClearは、バッファをクリアすることを示すいくつかの値から、ORのビットマスクを1つ引数として選択します。

ビットマスクの値は以下の通りです。

GL_COLOR_BUFFER_BIT
カラーバッファを示します。

GL_DEPTH_BUFFER_BIT
深度バッファを示します。

GL_STENCIL_BUFFER_BIT
ステンシルバッファを示します。

各バッファがクリアされた時の値は、そのバッファのクリア値の設定に依存します。

バッファが存在しない場合、glClearはバッファに対して何も影響を与えません。

定義済の3つのビットマスク以外のビットマスクがmaskに設定された場合、GL_INVALID_VALUEが発生します。

mask:バッファをクリアすることを示す、ORのビットマスクを指定します。
有効なマスクはGL_COLOR_BUFFER_BIT、GL_DEPTH_BUFFER_BIT、そしてGL_STENCIL_BUFFER_BITです。

△ Back to INDEX

glClearColor


void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);

void glClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);

カラーバッファのクリア値を指定します。

glClearColorは、glClearでカラーバッファをクリアする際に使用する、赤、緑、青、そしてアルファ値を指定します。

glClearColorが指定できる値は、[0, 1]の範囲に限定されています。

redgreenbluealpha:カラーバッファをクリアする時に使用する、赤、緑、青、そしてアルファ値を指定します。
初期値は全て0です。

△ Back to INDEX

glColor

void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);

void glColor4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);

void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);

現在の色を設定します。

glColorは、新しい4つの値で現在のRGBA色を設定します。

現在の色の値は、固定小数点または浮動小数点で格納されています。

浮動小数点で格納されている場合、仮数部と指数部のサイズは不定です。

固定小数点も浮動小数点値も、現在の色が更新される以前は、範囲[0, 1]にクランプされていません。

ただし、色要素はカラーバッファに補間あるいは書き込まれる前に、この範囲にクランプされます。

glColor4ubで指定された符号無しbyteの色要素は、0は0.0(ゼロ輝度)に、255は1.0(最大輝度)として、浮動小数点値をリニアにマッピングします。

現在の色の初期値は(1, 1, 1, 1)です。

red
greenbluealpha:現在の色に新しい赤、緑、青、アルファ値を指定します。

△ Back to INDEX

glColorPointer

色の配列を定義します。

void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);

glColorPointerは、レンダリング時に使用する色要素の配列の場所とデータを指定します。

sizeは色ごとの要素数を指定し、4である必要があります。

typeは各色要素のデータ型を指定し、strideはある色から次の属性へのバイトストライドを指定しており、頂点と属性を単一の配列内にまとめたり、別々の配列に格納することができます。
(単一の配列ストレージは、いくつかの実装でより効率的な場合があります)

色配列が指定されている場合、sizetypestride、そしてpointerはクライアント側の状態として保存されます。

色配列が有効な場合、glDrawArraysまたはglDrawElementsが呼び出された時に使用されます。

色配列の有効/無効は、glEnableClientStateglDisableClientStateを引数GL_COLOR_ARRAYで呼び出します。

色配列は初期状態が無効で、glDrawArraysやglDrawElementsを呼び出した時にアクセスすることはできません。

予め指定された頂点と頂点属性配列から(全てが同型の)プリミティブのシーケンスを構築するには、glDrawArraysを使用してください。

インデックスされた頂点と頂点属性でプリミティブのシーケンスを構築する場合は、glDrawElementsを使用してください。

glColorPointerは、通常クライアント側で実装します。

sizeが4でない場合、GL_INVALID_VALUEが発生します。

typeが有効な値でない場合、GL_INVALID_ENUMが発生します。

strideが負の場合、GL_INVALID_VALUEが発生します。

size
:色ごとの要素数を指定します。
4である必要があります。
初期値は4です。

type
:配列内の各色要素のデータ型を指定します。
シンボリック定数はGL_UNSIGNED_BYTEとGL_FIXEDが有効です。
ただし初期値はGL_FLOATです。
一般的なプロファイルは、シンボリック定数GL_FLOATも受け付けます。

stride
:連続した色間のバイトオフセットを指定します。
strideが0の場合、色は配列内で隙間無く格納されていると解釈されます。
初期値は0です。

pointer
:配列内の最初の色成分の最初の要素へのポインタを指定します。

△ Back to INDEX



●D

glDeleteTextures

void glDeleteTextures(GLsizei n, const GLuint * textures);

名付けられたテクスチャを削除します。

glDeleteTexturesは、配列texturesの要素によって名付けられたn個のテクスチャを削除します。

テクスチャが削除された後、コンテンツまたは大きさを持っていない場合、名前は(glGenTexturesなどで)再利用するために解放されます。

現在バインドされているテクスチャが削除された場合、バインディングは(デフォルトテクスチャの)0に戻ります。

glDeleteTexturesは暗黙的に、0と既存のテクスチャに対応していない名前は無視します。

nが負の場合、GL_INVALID_VALUEが発生します。

n:削除するテクスチャの数を指定します。

textures:削除するテクスチャの配列を指定します。

△ Back to INDEX

glDrawArrays

void glDrawArrays(GLenum mode, GLint first, GLsizei count);

配列データからプリミティブをレンダリングします。

glDrawArraysは、非常に少ないサブルーチンの呼び出しで、複数の幾何学的プリミティブを指定します。

事前に頂点、法線、色、そしてテクスチャ座標それぞれの配列を指定すると、単一のglDrawArraysを呼び出してそれらを使用してプリミティブのシーケンスを構築することができます。

glDrawArraysが呼び出されると、それぞれ有効な配列を要素firstから始まりcountを使用して順次要素を取り出し、幾何学的なプリミティブのシーケンスを構築します。

modeは、どのようにプリミティブは構築されているか、そしてどのように配列の要素はこれらのプリミティブを構築するかを指定します。

GL_VERTEX_ARRAYが有効でない場合、幾何学的なプリミティブは生成されません。

glDrawArraysによって変更される頂点属性はglDrawArraysが戻った後に指定されていない値を持ちます。

例えばGL_COLOR_ARRAYが有効な場合、現在の色の値はglDrawArrays実行後に未定義になります。

変更されていない属性は、定義された値を保持します。

modeが有効な値でない場合、GL_INVALID_ENUMが発生します。

countが負の場合、GL_INVALID_VALUEが発生します。

mode
:どのようにプリミティブをレンダリングするかを指定します。
シンボリック定数GL_POINTS、GL_LINE_STRIP、GL_LINE_LOOP、GL_LINES、GL_TRIANGLE_STRIP、GL_TRIANGLE_FAN、GL_TRIANGLESが有効です。

first
:有効な配列内での開始インデックスを指定します。

count
:レンダリングするインデックス数を指定します。

△ Back to INDEX



●E

glEnable

void glEnable(GLenum cap);

void glDisable(GLenum cap);

サーバ側のGLの機能を有効または無効にします。

glEnableとglDisableは、各種の機能を有効または無効にします。

任意の機能の現在の設定を取得するには、glIsEnabledまたはglGetを使用します。

GL_DITHERとGL_MULTISAMPLEを除き、各機能の初期値はGL_FALSEです。

GL_DITHERとGL_MULTISAMPLEの初期値はGL_TRUEです。

glEnableとglDisableの両方は、以下の値のいずれかを単一の引数capで受け取ります。

GL_ALPHA_TEST
有効にした場合、アルファテストを行います。
glAlphaFunc参照。

GL_BLEND
有効にした場合、カラーバッファ内の値で計算されたフラグメントの色の値をブレンドします。
glBlendFunc参照。

GL_COLOR_LOGIC_OP
有効にした場合、計算されたフラグメントの色とカラーバッファ値に、現在選択された論理操作を適用します。
glLogicOp参照。

GL_CLIP_PLANEi
有効にした場合、ユーザ定義のクリッピング面iに対して幾何形状をクリッピングします。

GL_COLOR_MATERIAL
有効にした場合、環境と拡散マテリアルパラメータは現在の色を追跡します。

GL_CULL_FACE
有効にした場合、ウィンドウ座標内にあるそれらのワインディングに基づいてポリゴンを間引きします。

GL_DEPTH_TEST
有効にした場合、深度の比較と深度バッファの更新を行います。
たとえ深度バッファが存在し、深度マスクが非ゼロであっても、深度テストが無効の場合は深度バッファは更新されないことに注意してください。
glDepthFuncとglDepthRange参照。

GL_DITHER
有効にした場合、カラーバッファへ書き込む前に色要素をディザリングします。

GL_FOG
有効にした場合、ポストテクスチャリングの色にフォグの色をブレンドします。
glFog参照。

GL_LIGHTi
有効にした場合、ライティング方程式の評価にライトiを含めます。
glLightModelとglLight参照。

GL_LIGHTING
有効にした場合、頂点色の計算に現在のライティングのパラメータを使用します。
それ以外の場合、単純に各頂点に現在の色を関連付けます。
glMaterial、glLightModel、そしてglLight参照。

GL_LINE_SMOOTH
有効にした場合、適切なフィルタリングでラインを描画します。
それ以外の場合、エイリアシングしたラインを描画します。
glLineWidth参照。

GL_MULTISAMPLE
有効にした場合、ピクセルの最終的な色の計算に複数のフラグメントのサンプルを使用します。
glSampleCoverage参照。

GL_NORMALIZE
有効にした場合、法線ベクトルは単位長に変換した後、ライティングの前に正規化されます。
このメソッドは、一般にGL_RESCALE_NORMALより効率的です。
glNormalとglNormalPointer参照。

GL_POINT_SMOOTH
有効にした場合、適切なフィルタリングで点を描画します。
それ以外の場合、エイリアシングした点を描画します。
glPointSize参照。

GL_POINT_SPRITE_OES
有効にした場合、ポイントスプライトが有効になります。
glPointSizeとglTexEnv参照。

GL_POLYGON_OFFSET_FILL
有効にした場合、深度の比較を実行する前にポリゴンのフラグメントの深度値にオフセットを追加します。
glPolygonOffset参照。

GL_RESCALE_NORMAL
有効にした場合、モデルビュー行列で計算された係数によって、ライティングの前に、法線ベクトルは変換後にスケーリングされます。
モデルビュー行列が空間に対して一律にスケーリングされる場合、単位長に変換された法線を戻す効果があります。
このメソッドは、一般的にGL_NORMALIZEより効率的です。
glNormalとglNormalPointer参照。

GL_SAMPLE_ALPHA_TO_COVERAGE
有効にした場合、各ビットが対応するサンプル位置でのアルファ値によって決定された、一時的な適用範囲値を計算します。
一時的な適用範囲値は、フラグメントの適用範囲値とANDが取られます。

GL_SAMPLE_ALPHA_TO_ONE
有効にした場合、各サンプルのアルファ値は表現可能な最大アルファ値によって置換されます。

GL_SAMPLE_COVERAGE
有効にした場合、フラグメントの適用範囲は一時的な適用範囲値とANDが取られます。
GL_SAMPLE_COVERAGE_INVERTがGL_TRUEに設定されている場合、適用範囲値は反転されます。
glSampleCoverage参照。

GL_SCISSOR_TEST
有効にした場合、シザー矩形の外側にあるフラグメントを破棄します。
glScissor参照。

GL_STENCIL_TEST
有効にした場合、ステンシルテストを実行し、ステンシルバッファを更新します。
glStencilFunc、glStencilMask、そしてglStencilOp参照。

GL_TEXTURE_2D
有効にした場合、二次元テクスチャリングはアクティブなテクスチャユニットに対し実行されます。
glActiveTexture、glTexImage2D、glCompressedTexImage2D、そしてglCopyTexImage2D参照。

GL_CLIP_PLANEiとGL_POINT_SPRITE_OESはGLバージョン1.1以降でのみサポートされています。

capが上記にリストされた値のいずれでもない場合、GL_INVALID_ENUMが発生します。

cap
:GLの機能を示すシンボリック定数を指定します。

△ Back to INDEX

glEnableClientState

void glEnableClientState(GLenum array);

void glDisableClientState(GLenum array);

クライアント側の機能を有効または無効にします。

glEnableClientStateとglDisableClientStateはクライアント側の機能を個々に有効または無効にします。

デフォルトでは全てのクライアント側の機能が無効になっています。

glEnableClientStateとglDisableClientStateの両方とも、以下の値のいずれか一つの配列を、単一の引数として取ることができます。

GL_COLOR_ARRAY
有効にした場合、カラー配列は書き込みが有効になり、glDrawArraysまたはglDrawElementsが呼び出された時に、レンダリングの間使用することができます。
glColorPointerを参照してください。

GL_NORMAL_ARRAY
有効にした場合、ノーマル配列は書き込みが有効になり、glDrawArraysまたはglDrawElementsが呼び出された時に、レンダリングの間使用することができます。
glNormalPointerを参照してください。

GL_POINT_SIZE_ARRAY_OES
有効にした場合、ポイントサイズ配列はポイントとポイントスプライトのレンダリングに使用するサイズを制御します。
この場合、glPointSizeによって定義されるポイントサイズは無視されます。
ポイントサイズ配列で供給されるポイントサイズは、ポイントとポイントスプライトの両方のレンダリングに使用されるサイズになります。
glPointSizeを参照してください。

GL_TEXTURE_COORD_ARRAY
有効にした場合、テクスチャ座標配列は書き込みが有効になり、glDrawArraysまたはglDrawElementsが呼び出された時に、レンダリングの間使用することができます。
glTexCoordPointerを参照してください。

GL_VERTEX_ARRAY
有効にした場合、頂点配列は書き込みが有効になり、glDrawArraysまたはglDrawElementsが呼び出された時に、レンダリングの間使用することができます。
glVertexPointerを参照してください。

GL_TEXTURE_COORD_ARRAYの有効および無効は、アクティブなクライアントのテクスチャユニットに影響を与えます。

アクティブなクライアントのテクスチャユニットは、glClientActiveTextureで制御されます。

配列が有効な値でない場合、GL_INVALID_ENUMが発生します。

array:有効または無効にする機能を指定します。
シンボリック定数は、GL_COLOR_ARRAY、GL_NORMAL_ARRAY、GL_POINT_SIZE_ARRAY_OES、GL_TEXTURE_COORD_ARRAY、そしてGL_VERTEX_ARRAYが指定できます。

△ Back to INDEX



●G

glGenTextures


void glGenTextures(GLsizei n, GLuint * textures);

テクスチャ名を生成します。

glGenTextureは、textures内のn個のテクスチャ名を返します。

名前は整数の連続したセットを形成することを保証するものではありません。

しかし、返された名前がglGenTexturesの呼び出しの直前に使用されていなかったことを保証します。

生成されたテクスチャは大きさを持っておらず、最初にバインドされたテクスチャのターゲットの大きさを想定しています。(glBindTexture参照)

glDeleteTexturesによって最初に削除されない限り、glGenTexturesの呼び出しによって返されるテクスチャ名は、後続の呼び出しによって返されません。

nが負の場合、GL_INVALID_VALUEが発生します。

n:生成されたテクスチャ名の個数を指定します。

texture:生成されたテクスチャ名が格納される配列を指定します。

△ Back to INDEX

glGet

void glGetBooleanv(GLenum pname, GLboolean * params);

void glGetFixedv(GLenum pname, GLfixed * params);

void glGetFloatv(GLenum pname, GLfloat * params);

void glGetIntegerv(GLenum pname, GLint * params);

値または選択されたパラメータの値を返します。

これらのコマンドは、GL内で静的な状態変数の値を返します。

pnameは返される静的な状態変数を示すシンボリック定数で、paramsは返されるデータが置かれる指定された型の配列へのポインタです。

Getコマンドは取得した値の型と返す値の型が異なる場合、型の変換を実行します。

GetBooleanvの呼び出しでは、浮動小数点または整数値はゼロの場合のみGL_FALSEに、それ以外の場合はGL_TRUEに変換されます。

GetIntegervの呼び出しでは、ブール値は1または0と解釈され、浮動小数点値はRGBAの色成分、DepthRange値、深度バッファのクリア値、または通常の座標値でない限り、最も近い整数に丸められます。

これらの場合、Getコマンドは表現可能な正の整数最大値を1.0、表現可能な負の整数最小値を-1.0とマップし、線形にマッピングを行います。

GetFloatvの呼び出しでは、ブール値は1.0または0.0と解釈され、整数は強制的に浮動小数点に変換されます。

要求された型で表現することができない非常に大きなの値は、要求された型で表現可能な最も近い値で返されます。

以下にpnameが受け取れるシンボリック定数を示します。

GL_ACTIVE_TEXTURE
paramsはアクティブなマルチテクスチャユニットを示す単一の値を返します。
初期値はGL_TEXTURE0です。
glActiveTexture参照。

GL_ALIASED_POINT_SIZE_RANGE
paramsはエイリアシングポイントのサポートされているサイズの、最小と最大の2つの値を返します。
範囲には1が含まれている必要があります。
glPointSize参照。

GL_ALIASED_LINE_WIDTH_RANGE
paramsはエイリアシングラインのサポートされている幅の、最小と最大の2つの値を返します。
範囲には1が含まれている必要があります。
glLineWidth参照。

GL_ALPHA_BITS
paramsはカラーバッファ内のアルファビットプレーン数を単一の値で返します。

GL_ALPHA_TEST
paramsはテストのフラグメントのアルファテストが有効になっているかを示す、単一のブール値を返します。
初期値はGL_FALSEです。
glAlphaFunc参照。

GL_ALPHA_TEST_FUNC
paramsはアルファテスト関数のシンボリック名を単一の値で返します。
glAlphaFunc参照。

GL_ALPHA_TEST_REF
paramsはアルファテストのための基準値を単一の値で返します。
整数値は要求された場合に、表現可能な正の整数最大値を1.0、表現可能な負の整数最小値を-1.0とマップし、内部の浮動小数点表現から線形にマッピングを行います。
glAlphaFunc参照。

GL_ARRAY_BUFFER_BINDING
paramsはターゲットGL_ARRAY_BUFFERに現在バインドされているバッファオブジェクトの名前を単一の値で返します。
このターゲットにバインドされているバッファオブジェクトが無い場合は0が返されます。
初期値は0です。
glBindBuffer参照。

GL_BLEND
paramsはフラグメントのブレンディングが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glBlendFuncとglLogicOp参照。

GL_BLEND_DST
paramsは対象のブレンド機能を識別するシンボリック定数を単一の値で返します。
glBlendFunc参照。

GL_BLEND_SRC
paramsは元のブレンド機能を識別するシンボリック定数を単一の値で返します。
glBlendFunc参照。

GL_BLUE_BITS
paramsはカラーバッファの青ビットプレーンの数を単一の値で返します。

GL_CLIENT_ACTIVE_TEXTURE
paramsは現在のクライアントのアクティブなマルチテクスチャユニットを示す単一の値を返します。
初期値はGL_TEXTURE0です。
glClientActiveTexture参照。

GL_CLIP_PLANEi
paramsi番目のユーザのクリッピングプレーンが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glClipPlane参照。

GL_COLOR_ARRAY
paramsは色配列が有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glColorPointer参照。

GL_COLOR_ARRAY_BUFFER_BINDING
paramsは色配列バッファのバインディングを単一の値で返します。
glColorPointer参照。

GL_COLOR_ARRAY_SIZE
paramsは色配列内の色ごとの要素数を単一の値で返します。
glColorPointer参照。

GL_COLOR_ARRAY_STRIDE
paramsは色配列内の連続した色の間のバイトオフセットを単一の値で返します。
glColorPointer参照。

GL_COLOR_ARRAY_TYPE
paramsは色配列内の各要素のデータ型を単一の値で返します。
glColorPointer参照。

GL_COLOR_CLEAR_VALUE
paramsはカラーバッファのクリアに使用する赤、緑、青、アルファの4つの値を返します。
glClearColor参照。

GL_COLOR_LOGIC_OP
paramsはカラー値上の論理演算が有効になっているかどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glLogicOp参照。

GL_COLOR_MATERIAL
paramsはカラーマテリアルのトラッキングが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glMaterial参照。

GL_COLOR_WRITEMASK
paramsはカラーバッファへの赤、緑、青、アルファの書き込みが有効かどうかを示す4つのブール値を返します。
glColorMask参照。

GL_COMPRESSED_TEXTURE_FORMATS
paramsはサポートされている圧縮テクスチャフォーマットをGL_NUM_COMPRESSED_TEXTURE_FORMATS値で返します。
glCompressedTexImage2DとglCompressedTexSubImage2D参照。

GL_CULL_FACE
paramsはポリゴンの間引きが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glCullFace参照。

GL_CULL_FACE_MODE
paramsはポリゴンのフェースが間引きされているかを示すシンボリック定数を1つ返します。
初期値はGL_BACKです。
glCullFace参照。

GL_CURRENT_COLOR
paramsは現在の色の赤、緑、青、アルファ値を示す4つの値を返します。
整数値が要求された場合は、表現可能な正の整数最大値を1.0、表現可能な負の整数最小値を-1.0とマップし、内部の浮動小数点の表現を線形にマッピングします。
初期値は(1, 1, 1, 1)です。
glColor参照。

GL_CURRENT_NORMAL
paramsは現在の法線を表すx、y、z値の3つの値を返します。
整数値が要求された場合は、表現可能な正の整数最大値を1.0、表現可能な負の整数最小値を-1.0とマップし、内部の浮動小数点の表現を線形にマッピングします。
初期値は(0, 0, 1)です。
glNormal参照。

GL_CURRENT_TEXTURE_COORDS
paramsは現在のテクスチャ座標を表すs、t、r、qの4つの値を返します。
初期値は(0, 0, 0, 1)です。
glMultiTexCoord参照。

GL_DEPTH_BITS
paramsは深度バッファ内のビットプレーン数を1つの値で返します。

GL_DEPTH_CLEAR_VALUE
paramsは深度バッファのクリアに使用される値を1つ返します。
glClearDepth参照。

GL_DEPTH_FUNC
paramsは深度比較関数のシンボリック名を1つ返します。
glDepthFunc参照。

GL_DEPTH_RANGE
paramsは深度バッファでマッピングできる手前と奥の限界値を2つの値で返します。
glDepthRange参照。

GL_DEPTH_TEST
paramsはフラグメントの深度テストが有効になっているかどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glDepthFuncとglDepthRange参照。

GL_DEPTH_WRITEMASK
paramsは深度バッファへの書き込みが有効かどうかを示す単一のブール値を返します。
glDepthMask参照。

GL_ELEMENT_ARRAY_BUFFER_BINDING
paramsは現在ターゲットGL_ELEMENT_ARRAY_BUFFERへバインドしているバッファオブジェクト名を単一の値で返します。
このターゲットにバインドしているバッファオブジェクトが無い場合は0が返されます。
初期値は0です。
glBindBuffer参照。

GL_FOG
paramsはフォグが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glFog参照。

GL_FOG_COLOR
paramsはフォグカラーの赤、緑、青、アルファ要素の4つの値を返します。
glFog参照。

GL_FOG_DENSITY
paramsはフォグの濃度パラメータを表す1つの値を返します。
glFog参照。

GL_FOG_END
paramsは線形フォグ方程式の終了要素を表す1つの値を返します。
glFog参照。

GL_FOG_HINT
paramsはフォグのヒントのモードを示すシンボリック定数を表す1つの値を返します。
glHint参照。

GL_FOG_MODE
paramsはフォグ方程式が選択されているかどうかを示すシンボリック定数を1つの値で返します。
glFog参照。

GL_FOG_START
paramsは線形フォグ方程式の開始要素を表す1つの値を返します。
glFog参照。

GL_FRONT_FACE
paramsは時計回りまたは反時計回りのポリゴンのワインディングの、どちらを表向きとして扱うかを示すシンボリック定数を1つの値で返します。
glFrontFace参照。

GL_GREEN_BITS
paramsはカラーバッファ内の緑のビットプレーン数を1つの値で返します。

GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
paramsはピクセルの読み込みのために優先するフォーマットを1つの値で返します。
glReadPixels参照。

GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
paramsはピクセルの読み込みのために優先する型を1つの値で返します。
glReadPixels参照。

GL_LIGHT_MODEL_AMBIENT
paramsはシーン全体の環境光の赤、緑、青、アルファ要素の4つの値を返します。
glLightModel参照。

GL_LIGHT_MODEL_TWO_SIDE
paramsはポリゴンの表と裏面のためのライティングに別々のマテリアルを使用するかどうかを示す単一のブール値を返します。
glLightModel参照。

GL_LIGHTi
paramsi番目のライトが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glLightとglLightModel参照。

GL_LIGHTING
paramsはライティングが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glLight、glLightModelとglMaterial参照。

GL_LINE_SMOOTH
paramsはラインのアンチエイリアシングが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glLineWidth参照。

GL_LINE_SMOOTH_HINT
paramsはラインのアンチエイリアシングのヒントのモードを示す、シンボリック定数を1つの値で返します。
glHint参照。

GL_LINE_WIDTH
paramsglLineWidthで指定された線幅を1つの値で返します。

GL_LOGIC_OP_MODE
paramsは選択された論理操作モードを示すシンボリック定数を1つの値で返します。
glLogicOp参照。

GL_MATRIX_MODE
paramsは行列スタックが現在全ての行列操作のターゲットかどうかを示すシンボリック定数を1つの値で返します。
glMatrixMode参照。

GL_MAX_CLIP_PLANES
paramsはアプリケーションが定義したクリッピングプレーンの最大数を1つの値で返します。
この値は少なくとも6である必要があります。
glClipPlane参照。

GL_MAX_LIGHTS
paramsはライトの最大数を1つの値で返します。
この値は少なくとも8である必要があります。
glLight参照。

GL_MAX_MODELVIEW_STACK_DEPTH
paramsはモデルビュー行列スタックでサポートされる最大深度を1つの値で返します。
この値は少なくとも16である必要があります。
glPushMatrix参照。

GL_MAX_PROJECTION_STACK_DEPTH
paramsは射影行列スタックでサポートされる最大深度を1つの値で返します。
この値は少なくとも2である必要があります。
glPushMatrix参照。

GL_MAX_TEXTURE_SIZE
paramsはGLが処理可能な最大のテクスチャの概算を1つの値で返します。
この値は少なくとも64である必要があります。
glTexImage2D、glCompressedTexImage2DとglCopyTexImage2D参照。

GL_MAX_TEXTURE_STACK_DEPTH
paramsはテクスチャ行列スタックでサポートされる最大深度を1つの値で返します。
この値は少なくとも2である必要があります。
glPushMatrix参照。

GL_MAX_TEXTURE_UNITS
paramsはサポートされているテクスチャユニット数を示す単一の値を返します。
この値は少なくとも1である必要があります。
glActiveTexture、glClientActiveTextureとglMultiTexCoord参照。

GL_MAX_VIEWPORT_DIMS
paramsはビューポートがサポートされている最大の幅と高さの2つの値を返します。
これらは少なくともレンダリングで表示される可視範囲と同じ大きさである必要があります。
glViewport参照。

GL_MODELVIEW_MATRIX
paramsはモデルビュー行列スタックの最上位にあるモデルビュー行列の16個の値を返します。
glPushMatrix参照。

GL_MODELVIEW_STACK_DEPTH
paramsはモデルビュー行列スタックの行列数を1つの値で返します。
glPushMatrix参照。

GL_MULTISAMPLE
paramsはマルチサンプリングが有効かどうかを示す単一のブール値を返します。
初期値はGL_TRUEです。

GL_NORMAL_ARRAY
paramsは法線配列が有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glNormalPointer参照。

GL_NORMAL_ARRAY_BUFFER_BINDING
paramsは法線配列バッファのバインディングを1つの値で返します。
glNormalPointer参照。

GL_NORMAL_ARRAY_STRIDE
paramsは法線配列内の連続した法線間のバイトオフセットを1つの値で返します。
glNormalPointer参照。

GL_NORMAL_ARRAY_TYPE
paramsは法線配列内の各法線のデータ型を1つの値で返します。
glNormalPointer参照。

GL_NORMALIZE
paramsは法線の正規化が有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glNormal参照。

GL_NUM_COMPRESSED_TEXTURE_FORMATS
paramsはサポートされている圧縮テクスチャフォーマット数を1つの値で返します。
この値は少なくとも10である必要があります。
glCompressedTexImage2DとglCompressedTexSubImage2D参照。

GL_PACK_ALIGNMENT
paramsはメモリにピクセルデータを書き込むために使用する、バイトアラインメントを1つの値で返します。
glPixelStorei参照。

GL_PERSPECTIVE_CORRECTION_HINT
paramsは透視変換補正のヒントのモードを示すシンボリック定数を1つの値で返します。
glHint参照。

GL_POINT_DISTANCE_ATTENUATION
paramsは間隔減衰関数の係数a、b、cの3つの値を返します。
初期値は(1, 0, 0)です。
glPointParameter参照。

GL_POINT_FADE_THRESHOLD_SIZE
paramsはポイントのフェードの閾値を一つの値で返します。
初期値は1です。
glPointParameter参照。

GL_POINT_SIZE
paramsはglPointSizeによって指定されたものとしてポイントサイズを1つの値で返します。

GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES
paramsはポイントサイズの配列バッファのバインディングを1つの値で返します。
glPointSizePointerOES参照。

GL_POINT_SIZE_ARRAY_OES
paramsはポイントサイズの配列が有効かどうかを示す単一のブール値を示します。
初期値はGL_FALSEです。
glPointSizePointerOES参照。

GL_POINT_SIZE_ARRAY_STRIDE_OES
paramsはポイントサイズ配列内の連続したポイントサイズ間のバイトオフセットを1つの値で返します。
glPointSizePointerOES参照。

GL_POINT_SIZE_ARRAY_TYPE_OES
paramsはポイント配列内の各ポイントサイズのデータ型を1つの値で返します。
glPointSizePointerOES参照。

GL_POINT_SIZE_MAX
paramsはクランプされたポイントサイズから取得した上限を1つの値で返します。
初期値はエイリアスとスムーズポイントサイズの実装に依存した最大値です。
glPointParameter参照。

GL_POINT_SIZE_MIN
paramsはクランプされたポイントサイズから取得した下限を1つの値で返します。
初期値は0です。
glPointParameter参照。

GL_POINT_SMOOTH
paramsはポイントのアンチエイリアシングが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glPointSize参照。

GL_POINT_SMOOTH_HINT
paramsはポイントのアンチエイリアシングのヒントのモードを示すシンボリック定数を1つの値で返します。
glHint参照。

GL_POINT_SPRITE_OES
paramsはポイントスプライトが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glTexEnv参照。

GL_POLYGON_OFFSET_FACTOR
paramsはポリゴンがラスタライズされた時に生成される、各フラグメント深度値に追加される変数のオフセットの決定に使用される、スケーリング要素を1つの値で返します。
glPolygonOffset参照。

GL_POLYGON_OFFSET_FILL
paramsは塗りつぶしモードのポリゴンで、ポリゴンのオフセットが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glPolygonOffset参照。

GL_POLYGON_OFFSET_UNITS
paramsはポリゴンがラスタライズされた時に生成される、各フラグメントの深度値に追加される、実装固有の値によって乗じる値を1つの値で返します。
glPolygonOffset参照。

GL_PROJECTION_MATRIX
paramsは投影行列スタックの最上位にある投影行列の16個の値を返します。
glPushMatrix参照。

GL_PROJECTION_STACK_DEPTH
paramsは投影行列スタックの行列数を1つの値で返します。
glPushMatrix参照。

GL_RED_BITS
paramsはカラーバッファ内の赤のビットプレーン数を1つの値で返します。

GL_RESCALE_NORMAL
paramsは法線の再スケーリングが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glNormal参照。

GL_SAMPLE_ALPHA_TO_COVERAGE
paramsはフラグメントのアルファ値に基づいて、フラグメントの適用範囲値に一時的な適用範囲値をAND演算する必要があるかどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glSampleCoverage参照。

GL_SAMPLE_ALPHA_TO_ONE
paramsは適用範囲決定後に、フラグメントのアルファ値を表現可能な最大のアルファ値によって置換するかどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glSampleCoverage参照。

GL_SAMPLE_BUFFERS

paramsは現在バインドされているフレームバッファに関連付けられているサンプルバッファ数を示す単一の整数値を返します。
glSampleCoverage参照。

GL_SAMPLE_COVERAGE

paramsは現在のサンプル適用範囲値に基づいて、フラグメントの適用範囲値に一時的な適用範囲値をAND演算する必要があるかどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glSampleCoverage参照。

GL_SAMPLE_COVERAGE_INVERT
paramsは一時的な適用範囲値を反転する必要があるかどうかを示す単一のブール値を返します。
glSampleCoverage参照。

GL_SAMPLE_COVERAGE_VALUE
paramsは現在のサンプル適用範囲値を示す単一の正の浮動小数点値を返します。
glSampleCoverage参照。

GL_SAMPLES

paramsは現在バインドされているフレームバッファの適用範囲のマスクサイズを示す単一の整数値を返します。
glSampleCoverage参照。

GL_SCISSOR_BOX
paramsはシザーボックスのウィンドウ座標のx、y、幅、高さの4つの値を返します。
glScissor参照。

GL_SCISSOR_TEST
paramsはシザーリングが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glScissor参照。

GL_SHADE_MODEL
paramsはシェーディングモードがフラットまたはスムーズであるかどうかを示すシンボリック定数を1つの値で返します。
glShadeModel参照。

GL_SMOOTH_LINE_WIDTH_RANGE
paramsはアンチエイリアスされたラインのサポートされている最小と最大の幅の2つの値を返します。
範囲には1が含まれている必要があります。
glLineWidth参照。

GL_SMOOTH_POINT_SIZE_RANGE

paramsはアンチエイリアスされたポイントのサポートされている最小と最大の幅の2つの値を返します。
範囲には1が含まれている必要があります。
glPointSize参照。

GL_STENCIL_BITS
paramsはステンシルバッファ内のビットプレーン数を1つの値で返します。

GL_STENCIL_CLEAR_VALUE
paramsはクリアされたステンシルのビットプレーンのインデックスを1つの値で返します。
glClearStencil参照。

GL_STENCIL_FAIL
paramsはステンシルテストが失敗した時に実行するアクションを示すシンボリック定数を1つの値で返します。
glStencilOp参照。

GL_STENCIL_FUNC
paramsはステンシルバッファ値とステンシル基準値の比較に使用する関数を示すシンボリック定数を1つの値で返します。
glStencilFunc参照。

GL_STENCIL_PASS_DEPTH_FAIL
paramsはステンシルテストが成功したが深度テストが失敗した時に実行するアクションを示すシンボリック定数を1つの値で返します。
glStencilOp参照。

GL_STENCIL_PASS_DEPTH_PASS

paramsはステンシルテストと深度テストが成功した時に実行するアクションを示すシンボリック定数を1つの値で返します。
glStencilOp参照。

GL_STENCIL_REF
paramsはステンシルバッファのコンテンツと比較する基準値を1つの値で返します。
glStencilFunc参照。

GL_STENCIL_TEST
paramsはフラグメントのステンシルテストが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glStencilFuncとglStencilOp参照。

GL_STENCIL_VALUE_MASK
paramsは比較する前にステンシルバッファ値とステンシル基準値の両方をマスクするために使用するマスクを1つの値で返します。
glStencilFunc参照。

GL_STENCIL_WRITEMASK
paramsはステンシルのビットプレーンの書き込みを制御するマスクを1つの値で返します。
glStencilMask参照。

GL_SUBPIXEL_BITS
paramsはウィンドウ座標内でラスタライズされたジオメトリの配置に使用する、サブピクセルの解像度のビット数の推定値を1つの値で返します。
この値は少なくとも4である必要があります。

GL_TEXTURE_2D
paramsは2Dテクスチャリングが有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glTexImage2D参照。

GL_TEXTURE_BINDING_2D
paramsはターゲットGL_TEXTURE_2Dに現在バインドされているテクスチャ名を1つの値で返します。
glBindTexture参照。

GL_TEXTURE_COORD_ARRAY
paramsはテクスチャ座標配列が有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glTexCoordPointer参照。

GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING
paramsはテクスチャ座標配列バッファのバインディングを1つの値で返します。
glTexCoordPointer参照。

GL_TEXTURE_COORD_ARRAY_SIZE

paramsはテクスチャ座標配列内の要素ごとの座標数を1つの値で返します。
glTexCoordPointer参照。

GL_TEXTURE_COORD_ARRAY_STRIDE
paramsはテクスチャ座標配列内の連続した要素間のバイトオフセットを1つの値で返します。
glTexCoordPointer参照。

GL_TEXTURE_COORD_ARRAY_TYPE
paramsはテクスチャ座標配列内の各座標のデータ型を1つの値で返します。
glTexCoordPointer参照。

GL_TEXTURE_MATRIX
paramsはテクスチャ行列スタックの最上位にあるテクスチャ行列の16個の値を返します。
glPushMatrix参照。

GL_TEXTURE_STACK_DEPTH
paramsはテクスチャ行列スタックの行列数を1つの値で返します。
glBindTexture参照。

GL_UNPACK_ALIGNMENT
paramsはメモリからピクセルデータを読み込むために使用するバイトアラインメントを1つの値で返します。
glPixelStorei参照。

GL_VIEWPORT
paramsはビューポートのウィンドウ座標のx、y、幅、高さの4つの値を返します。
glViewport参照。

GL_VERTEX_ARRAY
paramsは頂点配列が有効かどうかを示す単一のブール値を返します。
初期値はGL_FALSEです。
glVertexPointer参照。

GL_VERTEX_ARRAY_BUFFER_BINDING
paramsは頂点配列のバッファのバインディングを1つの値で返します。
glVertexPointer参照。

GL_VERTEX_ARRAY_SIZE
paramsは頂点配列内の頂点ごとの座標数を1つの値で返します。
glVertexPointer参照。

GL_VERTEX_ARRAY_STRIDE
paramsは頂点配列内の連続した頂点間のバイトオフセットを1つの値で返します。
glVertexPointer参照。

GL_VERTEX_ARRAY_TYPE

paramsは頂点配列内の各座標のデータ型を1つの値で返します。
glVertexPointer参照。

GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES、GL_POINT_SIZE_ARRAY_STRIDE_OES、そしてGL_POINT_SIZE_ARRAY_TYPE_OESはOpenGL ES 1.1以上でのみ受け取れます。

pnameが有効な値でない場合、GL_INVALID_ENUMが発生します。

pname:返されるパラメータの値を指定します。
上記リストのシンボリック定数が指定できます。

params:値または指定されたパラメータの値を返します。

△ Back to INDEX



●L

glLineWidth

void glLineWidth(GLfloat width);

void glLineWidthx(GLfixed width);

ラスタライズされるラインの幅を指定します。

glLineWidthは、エイリアスとアンチエイリアス両方のラインの、ラスタライズの幅を指定します。

1以外の線幅を使用するとアンチエイリアシングが有効かどうかに応じて異なる効果が得られます。

ラインのアンチエイリアシングを有効または無効にするには、引数GL_LINE_SMOOTHでglEnableまたはglDisableを呼び出します。

ラインのアンチエイリアシングは、初期状態で無効になっています。

ラインのアンチエイリアシングを無効にした場合、実際の幅は最も近い整数の幅に丸められることによって決定されます。
(丸められた結果の値が0の場合、線幅は1とされます。)

x| >= |Δy|の場合、丸められたwidthの値をiとすると、ラスタライズされた各列がiピクセルで埋められます。

それ以外の場合、ラスタライズされた各行がiピクセルで埋められます。

アンチエイリアシングを有効にした場合、ラインのラスタライズは、数学的な線分の中心に実際のラインの長さに等しい長さで、現在の線幅に等しい幅を持つ矩形内にある領域と交差する各ピクセル正方形のためのフラグメントを生成します。

各フラグメントの適用範囲値は、対応するピクセル正方形と矩形領域の交差するウィンドウ座標領域です。

この値は保存され、最終的なラスタライズの工程で使用されます。

ラインのアンチエイリアシングが有効になっている場合でも全ての幅がサポートされる訳ではありません。

サポートされていない幅が要求された場合、サポートされている最も近い幅が使用されます。

幅1のみサポートが保証されており、それ以外は実装に依存します。

また、エイリアシングされた線幅も同様です。

サポートされている幅の範囲を照会するには、引数GL_ALIASED_LINE_WIDTH_RANGEまたはGL_SMOOTH_LINE_WIDTH_RANGEでglGetを呼び出します。

アンチエイリアシングされていない線幅は、実装依存の最大値にクランプされる場合があります。

最大幅の決定には、GL_ALIASED_LINE_WIDTH_RANGEでglGetを呼び出してください。

widthが0以下の場合、GL_INVALID_VALUEが発生します。

width
:ラスタライズされるラインの幅を指定します。
初期値は1です。

△ Back to INDEX

glLoadIdentity


void glLoadIdentity(void);

現在の行列と単位行列を置換します。

glLoadIdentityは、現在の行列と単位行列を置換します。

これは単位行列でglLoadMatrixを呼び出したのと同義ですが、場合によってはより効率的です。

7541

△ Back to INDEX



●M

glMatrixMode


void glMatrixMode(GLenum mode);

現在の行列となる行列を指定します。

glMatrixModeは現在の行列モードを設定します。

modeは以下の値の内の一つを採ることができます。

GL_MODELVIEW
モデルビュー行列スタックに、後続の行列操作を適用します。

GL_PROJECTION
投影行列スタックに、後続の行列操作を適用します。

GL_TEXTURE
テクスチャ行列スタックに、後続の行列操作を適用します。

modeが有効な値でない場合、GL_INVALID_ENUMが発生します。

mode:行列スタックにその後の行列操作のためのターゲットを指定します。
GL_MODELVIEW、GL_PROJECTION、そしてGL_TEXTUREという値が使用できます。
初期値はGL_MODELVIEWです。

△ Back to INDEX



●O

glOrtho


void glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near, GLfloat far);

void glOrthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed near, GLfixed far);

正射影行列を現在の行列に乗じます。

glOrtho正射影(平行投影)を生成する変換を記述します。

これはglMultMatrixを以下の行列を引数として呼び出したものと同様に、現在の行列(glMatrixMode参照)はこの行列によって乗じられ、その結果が現在の行列に置換されます。

7542

7543

通常、行列モードはGL_PROJECTIONで、視点が(0, 0, 0)に配置されていると仮定して、ウィンドウの左下と右上角にマッピングされるように、手前のクリッピング面上の点にそれぞれ(left, bottom, -near)と(right, top, -near)を指定します。

奥のクリッピング面の位置は、-farを指定します。

nearfarの双方とも、正や負になる場合があります。

現在の行列スタックの保存と復元には、glPushMatrixとglPopMatrixを使用してください。

left = right、またはbottom = top、あるいはnear = farの場合はGL_INVALID_VALUEが発生します。

leftright:垂直クリッピング面の左右の座標を指定します。

bottomtop:水平クリッピング面の上下の座標を指定します。

nearfar:深度クリッピング面の手前と奥の距離を指定します。

クリッピング面がビューアより後方になる場合は、値が負になります。

△ Back to INDEX



●R

glRotate

void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);

void glRotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z);

回転行列を現在の行列に乗じます。

glRotateはangle度で(x, y, z)方向への回転を生成します。

これはglMultMatrixを以下の行列を引数として呼び出したものと同様に、現在の行列(glMatrixMode参照)はこの行列によって乗じられ、その結果が現在の行列に置換されます。

7779

c = cos(angle)、s = sin(angle)、|| (x, y, z) || = 1(正規化されていない場合、GLはこのベクトルを正規化します)。

行列モードがGL_MODELVIEWまたはGL_PROJECTIONのどちらかの場合、glRotateが呼び出された後に描画された全てのオブジェクトが回転します。

回転前の座標系の保存と復元には、glPushMatrixとglPopMatrixを使用してください。

この回転は右手則に従い、ユーザに対してベクトル(x, y, z)は反時計回りに回転します。

angle:度で回転角度を指定します。

xyz:x、y、zそれぞれのベクトル座標を指定します。

△ Back to INDEX



●S

glScale

void glScalef(GLfloat x, GLfloat y, GLfloat z);

void glScalex(GLfixed x, GLfixed y, GLfixed z);

glScaleはx、y、z軸について不均一な拡大縮小を生成します。

3つのパラメータは、三軸それぞれについての目的とする拡大縮小要素を示します。

これはglMultMatrixを以下の行列を引数として呼び出したものと同様に、現在の行列(glMatrixMode参照)はこの行列によって乗じられ、その結果が現在の行列に置換されます。

7781

行列モードがGL_MODELVIEWまたはGL_PROJECTIONのどちらかの場合、glScaleが呼び出された後に描画された全てのオブジェクトが拡大縮小します。

拡大縮小前の座標系の保存と復元には、glPushMatrixとglPopMatrixを使用してください。

1以外の拡大縮小要素がモデルビュー行列に適用された場合、ライティングが有効であると、ライティングはしばしば間違って表示されます。

その場合、引数GL_NORMALIZEでglEnableを呼び出すことによって、法線の自動正規化を有効にしてください。

xyzxyz軸それぞれについてスケーリング要素を指定します。

△ Back to INDEX



●T

glTexCoordPointer

void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);

glTexCoordPointerはレンダリング時に使用するテクスチャ座標の配列の位置とデータを指定します。

sizeは要素ごとの座標数を指定し、2、3、または4である必要があります。

typeは各テクスチャ座標のデータ型を指定し、strideはある配列要素から次に与える頂点へのバイトストライドと、単一の配列または別々の配列内に格納する属性を指定します。
(単一の配列のストレージは、いくつかの実装でより効率的な場合があります。)

テクスチャ座標配列が指定されている場合、sizetypestride、そしてpointerはクライアント側の状態として保存されます。

テクスチャ座標配列が有効な場合、glDrawArraysまたはglDrawElementsが呼び出された時に使用されます。

クライアント側のアクティブなテクスチャユニットの、テクスチャ座標配列を有効または無効にするには、引数GL_TEXTURE_COORD_ARRAYでglEnableClientStateまたはglDisableClientStateを呼び出してください。

全てのクライアント側のアクティブなテクスチャユニットのテクスチャ座標配列の初期状態は無効で、glDrawArraysまたはglDrawElementsが呼び出された時にアクセスできません。

予め指定された頂点と頂点属性配列から(全て同じ型の)プリミティブのシーケンスを構築するにはglDrawArraysを使用してください。

インデックス化された頂点と頂点属性によってプリミティブのシーケンスを構築するにはglDrawElementsを使用してください。

glTexCoordPointerは、通常クライアント側に実装されています。

glTexCoordPointerはglClientActiveTextureを指定して、クライアント側のアクティブなテクスチャユニットのテクスチャ座標配列を更新します。

sizeが2、3、または4でない場合、GL_INVALID_VALUEが発生します。

typeが有効な値でない場合、GL_INVALID_ENUMが発生します。

strideが負の場合、GL_INVALID_VALUEが発生します。

size
:配列要素ごとの座標数を指定します。
2、3、または4である必要があります。
初期値は4です。

type
:各テクスチャ座標のデータ型を指定します。
シンボリック定数GL_BYTE、GL_SHORT、そしてGL_FIXEDが有効です。
ただし初期値はGL_FLOATです。
一般的なプロファイルでは、シンボリック定数GL_FLOATも有効です。

stride
:連続した配列要素間のバイトオフセットを指定します。
strideが0の場合、配列要素は隙間無く格納されていると解釈されます。
初期値は0です。

pointer
:配列内の最初の要素の最初の座標へのポインタを指定します。
初期値は0です。

△ Back to INDEX

glTexEnv


void glTexEnvf(GLenum target, GLenum pname, GLfloat param);

void glTexEnvi(GLenum target, GLenum pname, GLint param);

void glTexEnvx(GLenum target, GLenum pname, GLfixed param);

target

テクスチャ環境を指定します。
GL_TEXTURE_ENVまたはGL_POINT_SPRITE_OESになります。

pname

単一の値となるテクスチャ環境パラメータのシンボリック名を指定します。
GL_TEXTURE_ENV_MODE、GL_COMBINE_RGB、GL_COMBINE_ALPHA、GL_SRC0_RGB、GL_SRC1_RGB、GL_SRC2_RGB、GL_SRC0_ALPHA、GL_SRC1_ALPHA、GL_SRC2_ALPHA、GL_OPERAND0_RGB、GL_OPERAND1_RGB、GL_OPERAND2_RGB、GL_OPERAND0_ALPHA、GL_OPERAND1_ALPHA、GL_OPERAND2_ALPHA、GL_RGB_SCALE、GL_ALPHA_SCALE、GL_COORD_REPLACE_OESのいずれかになります。

param

単一のシンボリック定数を指定します。
GL_ADD、GL_ADD_SIGNED、GL_DOT3_RGB、GL_DOT3_RGBA、GL_INTERPOLATE、GL_MODULATE、GL_DECAL、GL_BLEND、GL_REPLACE、GL_SUBTRACT、GL_COMBINE、GL_TEXTURE、GL_CONSTANT、GL_PRIMARY_COLOR、GL_PREVIOUS、GL_SRC_COLOR、GL_ONE_MINUS_SRC_COLOR、GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA、ポイントスプライトのテクスチャ座標の代わりとして単一のブール値、あるいはGL_RGB_SCALEまたはGL_ALPHA_SCALEが指定された時には1.0、2.0、4.0のいずれか一つになります。

void glTexEnvfv(GLenum target, GLenum pname, const GLfloat * params);

void glTexEnviv(GLenum target, GLenum pname, const GLint * params);

void glTexEnvxv(GLenum target, GLenum pname, const GLfixed * params);

target

テクスチャ環境を指定します。
GL_TEXTURE_ENVまたはGL_POINT_SPRITE_OESになります。

pname

単一の値となるテクスチャ環境パラメータのシンボリック名を指定します。
GL_TEXTURE_ENV_MODE、GL_TEXTURE_ENV_COLOR、GL_COMBINE_RGB、GL_COMBINE_ALPHA、GL_SRC0_RGB、GL_SRC1_RGB、GL_SRC2_RGB、GL_SRC0_ALPHA、GL_SRC1_ALPHA、GL_SRC2_ALPHA、GL_OPERAND0_RGB、GL_OPERAND1_RGB、GL_OPERAND2_RGB、GL_OPERAND0_ALPHA、GL_OPERAND1_ALPHA、GL_OPERAND2_ALPHA、GL_RGB_SCALE、GL_ALPHA_SCALE、GL_COORD_REPLACE_OESのいずれかになります。

params

RGBAカラーを含むパラメータ配列へのポインタか、単一のシンボリック定数を指定します。
GL_ADD、GL_ADD_SIGNED、GL_DOT3_RGB、GL_DOT3_RGBA、GL_INTERPOLATE、GL_MODULATE、GL_DECAL、GL_BLEND、GL_REPLACE、GL_SUBTRACT、GL_COMBINE、GL_TEXTURE、GL_CONSTANT、GL_PRIMARY_COLOR、GL_PREVIOUS、GL_SRC_COLOR、GL_ONE_MINUS_SRC_COLOR、GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA、ポイントスプライトのテクスチャ座標の代わりとして単一のブール値、あるいはGL_RGB_SCALEまたはGL_ALPHA_SCALEが指定された時には1.0、2.0、4.0のいずれか一つになります。

テクスチャ環境のパラメータを設定します。

テクスチャ環境はフラグメントがテクスチャの時にテクスチャ値がどのように解釈されるかを指定します。

targetがGL_POINT_SPLITE_OESの時、pnameはGL_COORD_REPLACE_OESにする必要があります。

targetがGL_TEXTURE_ENVの時、pnameはGL_TEXTURE_ENV_MODE、GL_TEXTURE_ENV_COLOR、GL_COMBINE_RGB、GL_COMBINE_ALPHA、GL_RGB_SCALE、GL_ALPHA_SCALE、GL_OPERAND0_RGB、GL_OPERAND1_RGB、GL_OPERAND2_RGB、GL_OPERAND0_ALPHA、GL_OPERAND1_ALPHA、GL_OPERAND2_ALPHA、GL_SRC0_RGB、GL_SRC1_RGB、GL_SRC2_RGB、GL_SRC0_ALPHA、GL_SRC1_ALPHA、GL_SRC2_ALPHAのいずれかにすることができます。

pnameがGL_TEXTURE_ENV_MODEの時、paramsはテクスチャ関数のシンボリック名(またはポインタ)で、GL_ADD、GL_MODULATE、GL_DECAL、GL_BLEND、GL_REPLACE、GL_COMBINEの6つのテクスチャ関数のいずれかになります。

以下の表でテクスチャのソースコンポーネントへのフィルタリングされたテクスチャ値RtGtBtAtLtの対応を示します。

CsAsは、後述するテクスチャ関数によって使用されます。

Texture Base Internal FormatCsAs
GL_ALPHA(0, 0, 0)At
GL_LUMINANCE(Lt, Lt, Lt)1
GL_LUMINANCE_ALPHA(Lt, Lt, Lt)At
GL_RGB(Rt, Gt, Bt)1
GL_RGBA(Rt, Gt, Bt)At

テクスチャ関数は、フラグメントに適用するテクスチャ画像の値を使用して(glTexParameter参照)フラグメントのRGBAカラーを生成し、フラグメントのテクスチャを決定します。

以下の表は、最初に選択することができる5つのテクスチャ関数が、それぞれどのようにRGBAカラーを生成するかを示しています。

Cは3つのカラー値(RGB)で、Aは関連するアルファ値です。

テクスチャ画像から抽出されたRGBA値の範囲は[0, 1]です。

添字のpは以前のテクスチャステージ(またはテクスチャステージ0の処理の場合は受信フラグメント)から計算される色を、添字sはテクスチャの元の色を、添字cはテクスチャの環境色を、添字vはテクスチャ関数によって生成される値を示します。

Texture Base
Internal
Format
ValueGL_
REPLACE
Function
GL_
MODULATE
Function
GL_DECAL
Function
GL_BLEND
Function
GL_ADD
Function
GL_ALPHACv =CpCpundefinedCpCp
 Av =AsApAs Av = ApAsApAs
GL_LUMINANCECv =CsCpCsundefinedCp(1 - Cs) + CcCsCp + Cs
(or 1)Av =ApAp ApAp
GL_LUMINANCE
_ALPHA
Cv =CsCpCsundefinedCp(1 - Cs) + CcCsCp + Cs
(or 2)Av =AsApAs ApAsApAs
GL_RGBCv =CsCpCsCsCp(1 - Cs) + CcCsCp + Cs
(or 3)Av =ApApApApAp
GL_RGBACv =CsCpCsCp(1 - As) + CsAsCp(1 - Cs) + CcCsCp + Cs
(or 4)Av =AsApAsApApAsApAs

pnameがGL_TEXTURE_ENV_MODEで、paramsがGL_COMBINEの場合、テクスチャ関数の形式はGL_COMBINE_RGBとGL_COMBINE_ALPHAの値に依存します。

以下にGL_SRC0_RGB、GL_SRC1_RGB、GL_SRC2_RGB、GL_SRC0_ALPHA、GL_SRC1_ALPHA、そしてGL_SRC2_ALPHAによって指定されたテクスチャのソースが、どのように最終的なテクスチャ色を生成する際に結合されるかを説明します。

以下の表では、GL_SRC0_cをArg0、GL_SRC1_cをArg1、そしてGL_SRC2_cをArg2と表します。

GL_COMBINE_RGBは、GL_REPLACE、GL_MODULATE、GL_ADD、GL_ADD_SIGNED、GL_INTERPOLATE、GL_SUBTRACT、GL_DOT3_RGB、GL_DOT3_RGBAのいずれかになります。

GL_COMBINE_RGBTexture Function
GL_REPLACEArg0
GL_MODULATEArg0 × Arg1
GL_ADDArg0 + Arg1
GL_ADD_SIGNEDArg0 + Arg1 - 0.5
GL_INTERPOLATEArg0 × Arg2 + Arg1 × (1 - Arg2)
GL_SUBTRACTArg0 - Arg1
GL_DOT3_RGB
or
GL_DOT3_RGBA
4 × ((((Arg0r) - 0.5) × ((Arg1r) - 0.5)) + (((Arg0g) - 0.5) × 
((Arg1g) - 0.5)) + (((Arg0b) - 0.5) × ((Arg1b) - 0.5)))

GL_DOT3_RGBとGL_DOT3_RGBAのスカラ結果は、出力の3つ(RGB)または4つ(RGBA)の各要素に置かれます。

同様にGL_COMBINE_ALFAは、GL_REPLACE、GL_MODULATE、GL_ADD、GL_ADD_SIGNED、GL_INTERPOLATE、GL_SUBTRACTのいずれかになります。

以下の表では、どのようにアルファ値が結合されるかを説明します。

GL_COMBINE_ALPHATexture Function
GL_REPLACEArg0
GL_MODULATEArg0 × Arg1
GL_ADDArg0 + Arg1
GL_ADD_SIGNEDArg0 + Arg1 - 0.5
GL_INTERPOLATEArg0 × Arg2 + Arg1 × (1 - Arg2)
GL_SUBTRACTArg0 - Arg1

以下の表では、値Csは現在バインドされているテクスチャからサンプリングされた色を、Ccは定数のテクスチャ環境色を、Cfは受信フラグメントの元の色を、そしてCpは以前のテクスチャステージから計算された色、またはテクスチャステージ0の処理の場合はCfを表します。

同様に、AsAcAf、そしてApはそれぞれのアルファ値を表します。

以下の表では、RGBのソースとオペランドに基づいて、Arg0Arg1Arg2に割り当てられる値を説明します。

GL_SRCn_RGBGL_OPERANDn_RGBArgument Value
GL_TEXTUREGL_SRC_COLOR(Cs)
 GL_ONE_MINUS_SRC_COLOR1 - (Cs)
 GL_SRC_ALPHA(As)
 GL_ONE_MINUS_SRC_ALPHA1 - (As)
GL_TEXTUREnGL_SRC_COLOR(Cs)
 GL_ONE_MINUS_SRC_COLOR1 - (Cs)
 GL_SRC_ALPHA(As)
 GL_ONE_MINUS_SRC_ALPHA1 - (As)
GL_CONSTANTGL_SRC_COLOR(Cc)
 GL_ONE_MINUS_SRC_COLOR1 - (Cc)
 GL_SRC_ALPHA(Ac)
 GL_ONE_MINUS_SRC_ALPHA1 - (Ac)
GL_PRIMARY_COLORGL_SRC_COLOR(Cf)
 GL_ONE_MINUS_SRC_COLOR1 - (Cf)
 GL_SRC_ALPHA(Af)
 GL_ONE_MINUS_SRC_ALPHA1 - (Af)
GL_PREVIOUSGL_SRC_COLOR(Cp)
 GL_ONE_MINUS_SRC_COLOR1 - (Cp)
 GL_SRC_ALPHA(Ap)
 GL_ONE_MINUS_SRC_ALPHA1 - (Ap)

GL_TEXTUREnのソースの色とアルファはCsAsで表され、それぞれテクスチャステージnから生成されます。

以下の表では、アルファのソースとオペランドに基づいて、Arg0Arg1Arg2に割り当てられる値を説明します。

GL_SRCn_ALPHAGL_OPERANDn_ALPHAArgument Value
GL_TEXTUREGL_SRC_ALPHA(As)
 GL_ONE_MINUS_SRC_ALPHA1 - (As)
GL_TEXTUREnGL_SRC_ALPHA(As)
 GL_ONE_MINUS_SRC_ALPHA1 - (As)
GL_CONSTANTGL_SRC_ALPHA(Ac)
 GL_ONE_MINUS_SRC_ALPHA1 - (Ac)
GL_PRIMARY_COLORGL_SRC_ALPHA(Af)
 GL_ONE_MINUS_SRC_ALPHA1 - (Af)
GL_PREVIOUSGL_SRC_ALPHA(Ap)
 GL_ONE_MINUS_SRC_ALPHA1 - (Ap)

テクスチャ関数のRGBとアルファの結果は、GL_RGB_SCALEとGL_ALPHA_SCALE値によってそれぞれ増加し、[0, 1]の範囲にクランプされます。

pnameがGL_TEXTURE_ENV_COLORの場合、paramsは4つの値で構成されるRGBAカラーを保持する配列へのポインタです。

整数の色成分は、正の整数の最大値が1.0、負の整数の最小値が-1.0になるよう、線形にマップされます。

それらは指定された時に[0, 1]の範囲にクランプされます。

Ccはこれら4つの値をとります。

GL_TEXTURE_ENV_MODEはデフォルトでGLMODULATEに、GL_TEXTURE_ENV_COLORはデフォルトで(0, 0, 0, 0)になっています。

targetがGL_POINT_SPRITE_OESで、pnameがGL_COORD_REPLACE_OESの場合、指定されたブール値はポイントスプライトのテクスチャ座標の置換を有効または無効にするために使用されます。

デフォルト値はGL_FALSEです。

glTexEnvは、glActiveTextureで選択された現在のアクティブなテクスチャユニットのためのテクスチャ環境を制御します。

GL_POINT_SPRITE_OESとGL_COORD_REPLACE_OESは、OpenGL ESのバージョン1.1以降で使用することができます。

GL_INVALID_ENUMは、targetまたはpnameが定義されている有効な値でない場合、またはparamsが必要とする(pnameの値に基づく)定義された定数値を持たない場合に発生します。

GL_INVALID_VALUEは、GL_RGB_SCALEまたはGL_ALPHA_SCALEのためのparamsの値が1.0、2.0、4.0のいずれかでない場合に発生します。

△ Back to INDEX

glTexImage2D

void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels);

二次元テクスチャ画像を指定します。

テクスチャリングは、テクスチャリングが有効になっている各グラフィカルプリミティブ上に、指定されたテクスチャ画像の一部をマッピングします。

二次元のテクスチャリングを有効や無効にするには、引数GL_TEXTURE_2DでglEnableglDisableを呼び出します。

二次元のテクスチャリングの初期状態は無効になっています。

テクスチャ画像を定義するには、glTexImage2Dを呼び出します。

引数は、高さ、幅、境界線の幅、詳細レベル数(glTexParameter参照)、色要素数などのテクスチャ画像のパラメータを表します。

最後の3つの引数は、画像のメモリ内での表現について表します。

データはtypeに応じて符号無しbyteまたはshortのシーケンスとしてpixelsから読み込まれます。

これらの値はformatに応じて要素を形成するために、1つ、2つ、3つ、あるいは4つの値のセットにグループ化されます。

typeがGL_UNSIGNED_BYTEの場合、各byteはformatに応じて1つの色要素として解釈されます。

typeがGL_UNSIGNED_SHORT_5_6_5、GL_UNSIGNED_SHORT_4_4_4_4、GL_UNSIGNED_SHORT_5_5_5_1のいずれかの場合、各符号無し値は決められたフォーマットに従って、色要素は単一のピクセルの全ての要素を含むとして解釈されます。

最初の要素はテクスチャ画像の左下角に対応します。

以降の要素はテクスチャ画像の最下行内のテクセルを左から右へ進み、その後テクスチャ画像の上の行に続きます。

最後の要素はテクスチャ画像の右上角に対応します。

デフォルトでは、全ての幅のピクセルが読み込まれた後以外、読み込むポインタは次の4バイト先に進み、隣接するピクセルは隣接するメモリ位置から取得されます。

4バイト行のアライメントは引数GL_UNPACK_ALIGNMENTでglPixelStoreiによって指定され、1、2、4、8バイトに設定することができます。

formatはピクセル内の各要素の構成を決定します。

以下のシンボリック値のいずれかを設定できます。

GL_ALPHA
各要素は単一のアルファ成分です。
GLは浮動小数点に変換し、赤、緑、青用に0を付加することによってRGBA要素に組み込みます。

GL_RGB
各要素はRGBの3つです。
GLは固定小数点または浮動小数点に変換し、アルファ用に1を付加することによってRGBA要素に組み込みます。

GL_RGBA
各要素は4つ全ての成分が含まれます。
GLは固定小数点または浮動小数点に変換します。

GL_LUMINANCE
各要素は単一の輝度値です。
GLは固定小数点または浮動小数点に変換し、アルファ用に1を付加し、赤、緑、青用に3回輝度値を複製することによってRGBA要素に組み込みます。

GL_LUMINANCE_ALPHA
各要素は輝度/アルファのペアです。
GLは固定小数点または浮動小数点に変換し、赤、緑、青用に3回輝度値を複製することによってRGBA要素に組み込みます。

pixelsにはNULLを指定することができます。

この場合テクスチャメモリはwidth幅とheight高さのテクスチャを格納するために割り当てられます。

その後、このテクスチャメモリを初期化するサブテクスチャをダウンロードすることができます。

ユーザがプリミティブにテクスチャ画像の初期化されていない部分を適用しようとした場合、この画像は未定義です。

glTexImage2DはglBindTextureで指定された現在バインドされているテクスチャのための二次元テクスチャと、glActiveTextureで指定された現在のテクスチャユニットを指定します。

targetがGL_TEXTURE_2Dでない場合、GL_INVALID_ENUM が発生します。

formatが有効な定数でない場合、GL_INVALID_ENUMが発生します。

typeが有効な定数でない場合、GL_INVALID_ENUMが発生します。

levelが0より小さい場合、GL_INVALID_VALUEが発生します。

GL_MAX_TEXTURE_SIZEが返す値をmaxとした時に、levelがlog2maxより大きい場合、GL_INVALID_VALUEが発生します。

internalformatが有効な定数でない場合、GL_INVALID_VALUEが発生します。

widthまたはheightが0より小さい、あるいはGL_MAX_TEXTURE_SIZEより大きい、もしくは整数をkとした時に2k + 2borderで表すことができない場合、GL_INVALID_VALUEが発生します。

borderが0でない場合、GL_INVALID_VALUEが発生します。

internalformatformatが同じでない場合、GL_INVALID_OPERATIONが発生します。

typeがGL_UNSIGNED_SHORT_5_6_5で、formatがGL_RGBでない場合、GL_INVALID_OPERATIONが発生します。

typeがGL_UNSIGNED_SHORT_4_4_4_4の一つ、またはGL_UNSIGNED_SHORT_5_5_5_1でformatがGL_RGBAでない場合、GL_INVALID_OPERATIONが発生します。

target
:ターゲットテクスチャを指定します。
GL_TEXTURE_2Dである必要があります。

level
:詳細レベル番号を指定します。
レベル0は基準画像レベルです。
レベルnn番目のミップマップ縮小画像です。
この値は0以上である必要があります。

internalformat
:テクスチャの色要素を指定します。
formatと同じである必要があります。
GL_ALPHA、GL_RGB、GL_RGBA、GL_LUMINANCE、またはGL_LUMINANCE_ALPHAのシンボリック値が有効です。

width
:テクスチャ画像の幅を指定します。
整数をnとすると、2n + 2borderにする必要があります。
全ての実装で、少なくとも幅64テクセルのテクスチャ画像をサポートします。

height
:テクスチャ画像の高さを指定します。
整数をmとすると、2m + 2borderにする必要があります。
全ての実装で、少なくとも高さ64テクセルのテクスチャ画像をサポートします。

border
:境界線の幅を指定します。
この値は0にする必要があります。

format
:ピクセルデータのフォーマットを指定します。
この値はinternalformatと同じにする必要があります。
GL_ALPHA、GL_RGB、GL_RGBA、GL_LUMINANCE、そしてGL_LUMINANCE_ALPHAのシンボリック値が有効です。

type
:ピクセルデータのデータ型を指定します。
GL_UNSIGNED_BYTE、GL_UNSIGNED_SHORT_5_6_5、GL_UNSIGNED_SHORT_4_4_4_4、そしてGL_UNSIGNED_SHORT_5_5_5_1のシンボリック値が有効です。

pixels
:メモリ内の画像データへのポインタを指定します。

△ Back to INDEX

glTexParameter


void glTexParameterf(GLenum target, GLenum pname, GLfloat param);

void glTexParameteri(GLenum target, GLenum pname, GLint param);

void glTexParameterx(GLenum target, GLenum pname, GLfixed param);

target
:ターゲットのテクスチャを指定します。
GL_TEXTURE_2Dである必要があります。

pname
:単一の値のテクスチャパラメータのシンボリック名を指定します。
GL_TEXTURE_MIN_FILTER、GL_TEXTURE_MAG_FILTER、GL_TEXTURE_WRAP_S、GL_TEXTURE_WRAP_T、またはGL_GENERATE_MIPMAPのいずれかを指定することができます。

param
pnameの値を指定します。

void glTexParameterfv(GLenum target, GLenum pname, GLfloat * params);

void glTexParameteriv(GLenum target, GLenum pname, GLint * params);

void glTexParameterxv(GLenum target, GLenum pname, GLfixed * params);

target:ターゲットのテクスチャを指定します。
GL_TEXTURE_2Dである必要があります。

pname
:テクスチャパラメータのシンボリック名を指定します。
GL_TEXTURE_MIN_FILTER、GL_TEXTURE_MAG_FILTER、GL_TEXTURE_WRAP_S、GL_TEXTURE_WRAP_T、またはGL_GENERATE_MIPMAPのいずれかを指定することができます。

params
:格納されているpnameの値、または値が格納されている配列へのポインタを指定します。

テクスチャパラメータを設定します。

テクスチャマッピングは、オブジェクトの表面に画像をデカールまたはセロハン包装のように、オブジェクトの表面に画像を適用するテクニックです。

画像は(s, t)座標系のテクスチャ空間に生成されます。

テクスチャは一次元または二次元の画像と、どのようにサンプルを画像から得るかを決定するパラメータとのセットです。

glTexParameterはpnameとして指定されたテクスチャパラメータに、paramまたはparams内の値を割り当てます。

targetはターゲットテクスチャを定義し、GL_TEXTURE_2Dである必要があります。

以下に有効なpnameのシンボルを示します。

  • GL_TEXTURE_MIN_FILTER

    テクスチャ縮小関数は、一つのテクスチャ要素より大きい領域にテクスチャマッピングする度に使用されます。
    6つの縮小関数が定義されています。
    その内2つはテクスチャの値を計算するために、最も近い1つまたは4つのテクスチャ要素を使用します。
    残りの4つはミップマップを使用します。

    ミップマップは、同じ画像を徐々に低解像度で表した配列を順番に並べたセットです。
    テクスチャが2n × 2mの大きさの場合、max(n, m) + 1のミップマップを持ちます。
    最初のミップマップは元となるテクスチャで、2n × 2mの大きさです。
    以前のミップマップを2k × 2lとすると、k = 0またはl = 0のどちらかになるまで、以降の各ミップマップは2k-1 × 2l-1の大きさになります。
    その時点で、以降のミップマップは1 × 2l-1または2k-1 × 1の大きさになりますが、最終的にミップマップは1 × 1の大きさを持ちます。
    ミップマップを定義するには、ミップマップの順番を示すlevel引数でglTexImage2DまたはglCopyTexImage2Dを呼び出します。
    レベル0は元になるテクスチャです。
    レベルmax(n, m)は最終的に1 × 1のミップマップになります。

    paramは、以下のいずれかをテクスチャを縮小するための関数を提供します。

    • GL_NEAREST
      テクスチャが存在するピクセルの中央に(マンハッタン距離で)最も近いテクスチャ要素の値を返します。

    • GL_LINEAR
      テクスチャが存在するピクセルの中央に最も近い4つのテクスチャ要素の加重平均を返します。
      これらはGL_TEXTURE_WRAP_SとGL_TEXTURE_WRAP_Tの値に応じて正確なマッピングで、繰り返しまたはラッピングされた要素を含めることができます。

    • GL_NEAREST_MIPMAP_NEAREST
      テクスチャが存在するピクセルのサイズと一致する最も密接なミップマップを選択し、GL_NEARESTの基準(ピクセルの中央に最も近いテクスチャ要素)を使用して、テクスチャ値を生成します。

    • GL_LINEAR_MIPMAP_NEAREST
      テクスチャが存在するピクセルのサイズと一致する最も密接なミップマップを選択し、GL_LINEARの基準(ピクセルの中央に最も近い4つのテクスチャ要素の加重平均)を使用して、テクスチャ値を生成します。

    • GL_NEAREST_MIPMAP_LINEAR
      テクスチャが存在するピクセルのサイズと一致する最も密接な2つのミップマップを選択し、GL_NEARESTの基準(ピクセルの中央に最も近いテクスチャ要素)を使用して、各ミップマップからテクスチャ値を生成します。
      最終的なテクスチャ値は、これら2つの値の加重平均です。

    • GL_LINEAR_MIPMAP_LINEAR
      テクスチャが存在するピクセルのサイズ一致する最も密接な2つのミップマップを選択し、GL_LINEARの基準(ピクセルの中央に最も近い4つのテクスチャ要素の加重平均)を使用して、各ミップマップからテクスチャ値を生成します。
      最終的なテクスチャ値は、これら2つの値の加重平均です。

      縮小過程でより多くのテクスチャ要素がサンプリングされると、エイリアシングがより少なくなり結果がはっきり見えるようになります。
      縮小関数のGL_NEARESTとGL_LINEARは他の4つよりも高速ですが、レンダリングされるピクセルのテクスチャ値が1つまたは4つの要素のみのサンプリングで決定されるため、モアレパターンや不規則な遷移を生成することになります。

    GL_TEXTURE_MIN_FILTERの初期値はGL_NEAREST_MIPMAP_LINEARです。

  • GL_TEXTURE_MAG_FILTER

    テクスチャ拡大関数は、一つのテクスチャ要素と同じ、またはより小さい領域にテクスチャマッピングする時に使用されます。
    テクスチャ拡大関数は、後述するGL_NEARESTまたはGL_LINEARのどちらかに設定します。
    GL_NEARESTは一般的にGL_LINEARより高速ですが、テクスチャ要素間が滑らかではないので、急な境界を持つテクスチャ画像が生成されます。

    • GL_NEAREST
      テクスチャが存在するピクセルの中央に(マンハッタン距離で)最も近いテクスチャ要素の値を返します。

    • GL_LINEAR
      テクスチャが存在するピクセルの中央に最も近い4つのテクスチャ要素の加重平均を返します。
      これらはGL_TEXTURE_WRAP_SとGL_TEXTURE_WRAP_Tの値に応じて正確なマッピングで、繰り返しまたはラッピングされた要素を含めることができます。

    GL_TEXTURE_MAG_FILTERの初期値はGL_LINEARです。

  • GL_TEXTURE_WRAP_S

    テクスチャ座標sのラップパラメータを、GL_CLAMP_TO_EDGEまたはGL_REPEATのどちらかに設定します。

    • GL_CLAMP_TO_EDGE
      s座標範囲で[(1/2N), 1-(1/2N)]にクランプします。
      Nはクランプする方向にあるテクスチャのサイズです。

    • GL_REPEAT
      s座標の整数部分は無視され、GLは端数部分のみを使用して、繰り返しパターンを生成します。

    GL_TEXTURE_WRAP_Sの初期値はGL_REPEATです。

  • GL_TEXTURE_WRAP_T

    テクスチャ座標tのラップパラメータを、GL_CLAMP_TO_EDGEまたはGL_REPEATのどちらかに設定します。
    内容はGL_TEXTURE_WRAP_S以下の説明を参照してください。

    GL_TEXTURE_WRAP_Tの初期値はGL_REPEATです。

  • GL_GENERATE_MIPMAP

    ミップマップ生成のパラメータを自動的に設定します。
    GL_TRUEが設定されている場合、ミップマップのlevelbase配列の内部テクセルが変更されると、変更されたlevelbase配列から誘導されたミップ マップ配列の完全なセットを計算します。
    配列のレベルlevelbase + 1pは、以前のコンテンツに関係無く誘導された配列に置換されます。
    levelbase配列を含む他の全てのミップマップ配列は、この計算によって変更されません。

    GL_GENERATE_MIPMAPの初期値はGL_FALSEです。

プログラムは(引数GL_TEXTURE_2DでglEnableを呼び出すことによって)テクスチャを有効にしている場合、ミップマップを必要とする関数のいずれかにGL_TEXTURE_MIN_FILTERが設定されていると仮定します。

(事前のglTexImage2DまたはglCopyTexImage2Dの呼び出しで)現在定義されているテクスチャ画像の大きさが(前述の)ミップマップ用の適切な順序に従っていない、または必要数よりも定義されたテクスチャ画像が少ない、あるいはテクスチャ要素の番号がテクスチャ画像のセットと異なる場合、テクスチャマッピングは無効となります。

リニアフィルタリングは、4つの最も近いテクスチャ要素にアクセスします。

glTexParameterはアクティブなテクスチャユニット用のテクスチャパラメータを指定し、glActiveTextureを呼び出すことによって指定されます。

targetまたはpnameが定義された有効な値でない場合、GL_INVALID_ENUMが発生します。

pnameの値を基にして)定義された定数値である必要があるparamがそうでない場合、GL_INVALID_ENUMが発生します。

△ Back to INDEX

glTranslate

現在の行列に変換行列を乗じます。

void glTranslatef(GLfloat x, GLfloat y, GLfloat z);

void glTranslatex(GLfixed x, GLfixed y, GLfixed z);

glTranslateは、(x, y, z)によって変換を生成します。

現在の行列(glMatrixMode参照)はこの変換行列によって乗ぜられ、結果は現在の行列に置換されます。

glMultiMatrixを以下の行列を引数として呼び出すのと同様になります。

7747

行列モードがGL_MODELVIEWまたはGL_PROJECTIONのどちらかの場合、glTranslateを呼び出した後に描画される全てのオブジェクトが変換されます。

変換前の座標系の保存と復元には、glPushMatrixとglPopMatrixを使用してください。

x
yz:変換ベクトルのx、y、z座標を指定します。

△ Back to INDEX



●V

glVertexPointer

void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);

glVertexPointerは、レンダリング時に使用する頂点座標の配列の位置とデータを指定します。

sizeは頂点ごとの座標数を、typeは座標のデータ型を指定します。

strideはある頂点から次に与える頂点へのバイトストライドと、単一の配列または別々の配列内に格納する属性を指定します。
(単一の配列のストレージは、いくつかの実装上でより効率的な場合があります。)

頂点配列が指定されている場合、sizetypestridepointerはクライアント側の状態として保存されます。

頂点配列が有効な場合、glDrawArraysまたはglDrawElementsが呼び出された時に使用されます。

頂点配列を有効または無効にするには、引数GL_VERTEX_ARRAYでglEnableClientStateまたはglDisableClientStateを呼び出します。

頂点配列の初期状態は無効で、glDrawArraysまたはglDrawElementsが呼び出された時にアクセスできません。

予め指定された頂点と頂点属性配列から(全て同じ型の)プリミティブのシーケンスを構築するにはglDrawArraysを使用してください。

インデックス化された頂点と頂点属性によってプリミティブのシーケンスを構築するにはglDrawElementsを使用してください。

glVertexPointerは、通常クライアント側に実装されています。

sizeが2、3、または4でない場合、GL_INVALID_VALUEが発生します。

typeが有効な値でない場合、GL_INVALID_ENUMが発生します。

strideが負の場合、GL_INVALID_VALUEが発生します。

size
:頂点ごとの座標数を指定します。
2、3、または4である必要があります。
初期値は4です。

type
:配列内の各頂点座標のデータ型を指定します。
シンボリック定数GL_BYTE、GL_SHORT、そしてGL_FIXEDが有効です。
ただし初期値はGL_FLOATです。
一般的なプロファイルでは、シンボリック定数GL_FLOATも有効です。

stride
:連続する頂点間のバイトオフセットを指定します。
strideが0の場合、頂点は配列内に隙間無く格納されていると解釈されます。
初期値は0です。

pointer
:配列内の最初の頂点の最初の座標へのポインタを指定します。
初期値は0です。

△ Back to INDEX

glViewport


void glViewport(GLint x, GLint y, GLsizei width, GLsizei height);

ビューポートを設定します。

glViewportは、正規化デバイス座標系からウィンドウ座標系へと、xyのアフィン変換を指定します。

(xnd, ynd)を正規化デバイス座標系とすると、ウィンドウ座標系(xw, yw)は以下のように計算されます。

xw = (xnd + 1) * (width / 2) + x

yw = (ynd + 1) * (height / 2) + y

ビューポートの幅と高さは、実装に依存する範囲に暗黙的に固定されます。

この範囲の照会には、引数GL_MAX_VIEWPORT_DIMSでglGetを呼び出してください。

widthまたはheightが負の場合、GL_INVALID_VALUEが発生します。

xy:ビューポート矩形の左下角をピクセル単位で指定します。
初期値は(0, 0)です。

widthheight:ビューポートの幅と高さを指定します。
GLコンテキストが最初にサーフェス(例えばウィンドウ)にアタッチされている場合、widthheightはそのサーフェスの寸法に設定されます。

△ Back to INDEX



参考文献

OpenGL ES 1.1 Reference Pages

Wikipedia/マンハッタン距離

X Window System リファレンス/jman/GLGET

NSExceptionクラス

2011. 10. 21
●概要

NSExceptionは例外についての情報を含む、例外処理を実装するために使用します。

例外は通常のプログラムの実行フローに割り込む特別な状態です。

各アプリケーションは様々な理由でプログラムに割り込むことができます。

例えば、あるアプリケーションでは書き込み保護されているディレクトリ内にファイルを保存することを、例外と解釈することがあります。

そういう意味では、例外はエラーと同じです。

別のアプリケーションでは、実行時間の長いプロセスを中断させる必要があることを示す(Control + Cなどの)ユーザのキー入力を例外として解釈する場合があります。

:例外処理のメカニズムは、実行フローの制御にlongjmpを使用します。
したがって例外処理を使用するアプリケーション向けに書かれたコードは、この機能に関連付けられる制限があります。
longjmp関数についての詳細は、コンパイラのドキュメントを参照してください。



●採用しているプロトコル

NSCoding

– encodeWithCoder:

– initWithCoder:


NSCopying

– copyWithZone:



●タスク

NSExceptionオブジェクトの生成と発生

+ exceptionWithName:reason:userInfo:
+ raise:format:
+ raise:format:arguments:
– initWithName:reason:userInfo:
– raise

NSExceptionオブジェクトの照会

– name
– reason
– userInfo

例外スタックフレームの取得

– callStackReturnAddresses
– callStackSymbols



●クラスメソッド

raise:format:

+ (void)raise:(NSString *)name format:(NSString *)format, ...

例外を生成し発生させる簡易メソッドです。

ユーザ定義の情報は、生成される例外オブジェクトはnilになります。

name:例外の名前を指定します。

format,:以降に続く変数の引数のため、人が読めるメッセージの文字列(つまり例外の理由)の変換仕様を指定します。

...:(printfの書式に沿って)書式を揃えた例外の理由に挿入する変数情報を指定します。



●インスタンスメソッド



参考文献

NSException Class Reference

OpenGL ESのデータ型

2011. 10. 19
OpenGLはクロスプラットフォームのAPIなためデータ型をtypedefで置き換えており、対応する型は実装する環境によって変わります。

Khronosで公開されているOpenGL ES 1.1/2.0のgl.hと、Xcode 3.2.6のOpenGLES.frameworkのES1/ES2のgl.hで定義されているデータ型の一覧を下表に示します。

ES1ES2Khronos 1.1Khronos 2.0
GLvoidvoidvoidvoidvoid
GLcharcharcharchar
GLenumunsigned intunsigned intunsigned intunsigned int
GLbooleanunsigned charunsigned charunsigned charunsigned char
GLbitfieldunsigned intunsigned intunsigned intunsigned int
GLbytesigned charsigned charkhronos_int8_tkhronos_int8_t
GLshortshortshortshortshort
GLintintintintint
GLsizeiintintintint
GLubyteunsigned charunsigned charkhronos_uint8_tkhronos_uint8_t
GLushortunsigned sfortunsigned sfortunsigned shortunsigned short
GLuintunsigned intunsigned intunsigned intunsigned int
GLfloatfloatfloatkhronos_float_tkhronos_float_t
GLclampffloatfloatkhronos_float_tkhronos_float_t
GLfixedintintkhronos_int32_tkhronos_int32_t
GLclampxintintkhronos_int32_t
GLintptrintintkhronos_intptr_tkhronos_intptr_t
GLsizeiptrintintkhronos_ssize_tkhronos_ssize_t



参考文献

Khronos OpenGL ES API Registry/OpenGL ES 1.1 Header File

Khronos OpenGL ES API Registry/OpenGL ES 2.0 Header File

CGColor

2011. 10. 18
●概要

CGColorRef不透過型は、一意の色を定義する(赤、緑、そして青などの)成分のセットと、それらの成分をどのように解釈するかを指定する色空間を含みます。

Quartzカラーオブジェクトは特に繰り返し使用される色の設定と管理に高速かつ便利な方法提供します。

Quartzの描画操作では塗りつぶしや輪郭色の設定、アルファの管理、パターン色の設定に使用されます。

関連する『CGContext Reference』、『CGColorSpace Reference』、そして『CGPattern Reference』を参照してください。



●タスク別の関数

●カラーオブジェクトの保持と解放


CGColorRelease
CGColorRetain

●Quartzカラーの生成


CGColorCreate
CGColorCreateCopy
CGColorCreateCopyWithAlpha
CGColorCreateWithPattern

●Quartzカラーについての情報の取得


CGColorEqualToColor
CGColorGetAlpha
CGColorGetColorSpace
CGColorGetComponents
CGColorGetNumberOfComponents
CGColorGetPattern
CGColorGetTypeID



●関数

CGColorGetComponents


const CGFloat * CGColorGetComponents (
    CGColorRef color
);

Quartzの色に関連付けられた(アルファを含む)色成分の値を返します。

戻り値は、指定された色に関連付けられた(アルファを含む)色成分の輝度値の配列です。

配列のサイズは、色用の色空間の成分数よりも1つ多くなります。

color:Quartzの色を指定します。



●データ型

CGColorRef

typedef struct CGColor *CGColorRef;

Quartz 2D描画で使用される、色を表す不透過型です。

CGColorRefは、色を表すためにQuartzによって内部で使用される基本的なデータ型です。

CGColorオブジェクトとそれらを操作する関数は、(テキスト用の黒色など)特に再利用される色の設定と管理の、高速かつ便利な方法を直接提供します。

Mac OS Xのバージョン10.3以降では、CGColorRefはCFTypeRefから派生し、全てのCore Foundationの型に共通するプロパティを継承します。

詳細は『CFType Reference』を参照してください。



参考文献

CGColor Reference

猫にはわからないプログラミング/不透過型(opaque data type)






Bose SoundLink around-ear wireless headphones II
Calendar
09 | 2011/10 | 11
Sun Mon Tue Wed Thu Fri Sat
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

Bose SoundLink around-ear wireless headphones II
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR