Name
glProgramUniform — 指定したプログラムオブジェクトへユニフォーム変数の値を指定します
C Specification
void glProgramUniform1f(
|
GLuint program, |
|
GLint location, |
|
GLfloat v0) ; |
void glProgramUniform2f(
|
GLuint program, |
|
GLint location, |
|
GLfloat v0, |
|
GLfloat v1) ; |
void glProgramUniform3f(
|
GLuint program, |
|
GLint location, |
|
GLfloat v0, |
|
GLfloat v1, |
|
GLfloat v2) ; |
void glProgramUniform4f(
|
GLuint program, |
|
GLint location, |
|
GLfloat v0, |
|
GLfloat v1, |
|
GLfloat v2, |
|
GLfloat v3) ; |
void glProgramUniform1i(
|
GLuint program, |
|
GLint location, |
|
GLint v0) ; |
void glProgramUniform2i(
|
GLuint program, |
|
GLint location, |
|
GLint v0, |
|
GLint v1) ; |
void glProgramUniform3i(
|
GLuint program, |
|
GLint location, |
|
GLint v0, |
|
GLint v1, |
|
GLint v2) ; |
void glProgramUniform4i(
|
GLuint program, |
|
GLint location, |
|
GLint v0, |
|
GLint v1, |
|
GLint v2, |
|
GLint v3) ; |
void glProgramUniform1ui(
|
GLuint program, |
|
GLint location, |
|
GLuint v0) ; |
void glProgramUniform2ui(
|
GLuint program, |
|
GLint location, |
|
GLint v0, |
|
GLuint v1) ; |
void glProgramUniform3ui(
|
GLuint program, |
|
GLint location, |
|
GLint v0, |
|
GLint v1, |
|
GLuint v2) ; |
void glProgramUniform4ui(
|
GLuint program, |
|
GLint location, |
|
GLint v0, |
|
GLint v1, |
|
GLint v2, |
|
GLuint v3) ; |
void glProgramUniform1fv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
const GLfloat *value) ; |
void glProgramUniform2fv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
const GLfloat *value) ; |
void glProgramUniform3fv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
const GLfloat *value) ; |
void glProgramUniform4fv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
const GLfloat *value) ; |
void glProgramUniform1iv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
const GLint *value) ; |
void glProgramUniform2iv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
const GLint *value) ; |
void glProgramUniform3iv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
const GLint *value) ; |
void glProgramUniform4iv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
const GLint *value) ; |
void glProgramUniform1uiv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
const GLuint *value) ; |
void glProgramUniform2uiv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
const GLuint *value) ; |
void glProgramUniform3uiv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
const GLuint *value) ; |
void glProgramUniform4uiv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
const GLuint *value) ; |
void glProgramUniformMatrix2fv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
GLboolean transpose, |
|
const GLfloat *value) ; |
void glProgramUniformMatrix3fv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
GLboolean transpose, |
|
const GLfloat *value) ; |
void glProgramUniformMatrix4fv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
GLboolean transpose, |
|
const GLfloat *value) ; |
void glProgramUniformMatrix2x3fv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
GLboolean transpose, |
|
const GLfloat *value) ; |
void glProgramUniformMatrix3x2fv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
GLboolean transpose, |
|
const GLfloat *value) ; |
void glProgramUniformMatrix2x4fv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
GLboolean transpose, |
|
const GLfloat *value) ; |
void glProgramUniformMatrix4x2fv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
GLboolean transpose, |
|
const GLfloat *value) ; |
void glProgramUniformMatrix3x4fv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
GLboolean transpose, |
|
const GLfloat *value) ; |
void glProgramUniformMatrix4x3fv(
|
GLuint program, |
|
GLint location, |
|
GLsizei count, |
|
GLboolean transpose, |
|
const GLfloat *value) ; |
Parameters
-
program
-
変更したいユニフォーム変数が含まれるプログラムのハンドルを指定します。
-
location
-
変更したいユニフォーム変数の位置を指定します。
-
count
-
ベクトル命令(glProgramUniform*v
)に於いては、変更したい要素の数を指定します。
対象のユニフォーム変数が配列ではない場合は1であり、配列の場合は1以上でなければなりません。
行列命令(glProgramUniformMatrix*
)に於いては、変更する行列の数を指定します。
対象のユニフォーム変数が行列の配列ではない場合は1であり、行列の配列の場合は1以上でなければなりません。
-
transpose
-
行列命令に於いて、ユニフォーム変数へロードする際に転置するかどうかを指定します。
-
v0
,
v1
,
v2
,
v3
-
スカラー命令に於いて、指定されたユニフォーム変数に使用される新しい値を指定します。
-
value
-
ベクトル命令及び行列命令に於いて、指定されたユニフォーム変数を更新するために使用される値が格納された配列のポインターをcount
に指定します。
Description
glProgramUniform
は、ユニフォーム変数またはユニフォーム変数配列の値を変更します。
変更するユニフォーム変数の場所は location
によって指定され、
glGetUniformLocation によって返される値である必要があります。.
glProgramUniform
は、program
で指定されたプログラムオブジェクトで動作します。
コマンド glProgramUniform{1|2|3|4}{f|i|ui}
は、 location
で指定されたユニフォーム変数の値を引数で渡された値に変更するために使用されます。
コマンドで指定された数は、指定されたユニフォーム変数のデータ型のコンポーネントの数と一致する必要があります
(例えば、float
、int
、unsigned int
、bool
の場合は1
、
vec2
、ivec2
、uvec2
、bvec2
などの場合は2
)。
サフィックスf
は、浮動小数が渡されることを示します。
サフィックスi
は、整数が渡されることを示します。
サフィックスui
は、符号なし整数が渡されることを示します。
どの型も指定されたユニフォーム変数のデータ型と一致させる必要があります。
サフィックスi
の関数は、int
、ivec2
、ivec3
、ivec4
、またはこれらの配列として定義されたユニフォーム変数に値を設定する為に利用できます。
サフィックスui
の関数は、unsigned int
、uvec2
、uvec3
、uvec4
、またはこれらの配列として定義されたユニフォーム変数に値を設定する為に利用できます。
サフィックスf
の関数は、float
、vec2
、vec3
、vec4
、またはこれらの配列として定義されたユニフォーム変数に値を設定する為に利用できます。
サフィックスi
、ui
、f
のいずれの関数も、bool
、bvec2
、bvec3
、bvec4
型のユニフォーム変数またはこれらの配列に値を設定できます。
入力値が 0 または 0.0f の場合、ユニフォーム変数はfalse
に設定され、それ以外ではtrue
に設定されます。
プログラムオブジェクトが正常にリンクされると、プログラムオブジェクトで定義されている全てのアクティブなユニフォーム変数は 0 に初期化されます。
プログラムオブジェクトのリンク操作が次に成功するまで、ユニフォーム変数はglProgramUniform
の呼び出しによって割り当てられた値を保持し、その後再び 0 に初期化されます。
コマンド glProgramUniform{1|2|3|4}{f|i|ui}v
を使用して、一つのユニフォーム変数またはユニフォーム変数配列を変更できます。
これらのコマンドは、カウントおよびユニフォーム変数またはユニフォーム変数配列にロードされる値へのポインターを渡します。
一つのユニフォーム変数の値を変更する場合はカウントに 1 を使用する必要があり、カウントに 1 以上を使用して配列全体または配列の一部を変更できます。
ユニフォーム変数配列の任意の位置 m から始まる n 個の要素をロードすると、配列内の要素 m + n - 1 は新しい値に置き換えられます。
m
+ n
- 1 がユニフォーム変数配列のサイズより大きい場合、配列の末尾を超えるすべての配列要素の値は無視されます。
コマンド名で指定された数値は、value
の各要素のコンポーネント数を示し、指定されたユニフォーム変数のデータ型のコンポーネント数と一致する必要があります
(例えば、float
、int
、bool
の場合は1
、vec2
、ivec2
、bvec2
の場合は2
、など)。
コマンドの名前で指定されたデータ型は、glProgramUniform{1|2|3|4}{f|i|ui}
について前述したように、指定されたユニフォーム変数のデータ型と一致する必要があります。
ユニフォーム変数配列の場合、配列の各要素は、コマンドの名前で示されている型であると見做されます
(例えば、glProgramUniform3f
または glProgramUniform3fv
を使用して、vec3型のユニフォーム変数配列をロードできます)。
変更するユニフォーム変数配列の要素数は、count
で指定します。
コマンド glProgramUniformMatrix{2|3|4|2x3|3x2|2x4|4x2|3x4|4x3}fv
は、行列または行列の配列を変更するために使用されます。
コマンド名の数字は、マトリックスの次元として解釈されます。
数値2
は 2 × 2 の行列(すなわち4つの値)を示し、
数値3
は 3 × 3 の行列(すなわち9つの値)を示し、
数値4
は 4 × 4 の行列(すなわち16の値)を示します。
非正方行列の次元は明示的に示します。最初の数は列の要素数を表し、2番目の数は行の要素数を表します。
たとえば、2x4
は 2 × 4の行列(すなわち8つの値)を示します。
transpose
がGL_FALSE
の場合、列優先で行列の各要素が提供されると想定されます。
transpose
がGL_TRUE
の場合、行優先で行列の各要が素提供されると想定されます。
count
引数は、渡される行列の数を示します。
一つの行列の値を変更する場合はcountに1を指定する必要があり、行列の配列を変更する場合はcountに1より大きい値を指定します。
Notes
glProgramUniform1i
と glProgramUniform1iv
は、
サンプラータイプとして定義されたユニフォーム変数をロードするために使用できる関数です。
他の関数でサンプラーをロードすると、GL_INVALID_OPERATION
エラーが発生します。
count
が1より大きく、対象のユニフォーム変数が配列でない場合、
GL_INVALID_OPERATION
エラーが生成され、指定されたユニフォーム変数は変更されません。
上記の例外を除き、シェーダーで定義されたユニフォーム変数と、その値をロードするためのコマンドの名前で、型とサイズが一致しない場合、
GL_INVALID_OPERATION
エラーが生成され、指定されたユニフォーム変数は変更されません。
location
が-1以外の値であり、program
内の有効なユニフォーム変数の場所を表していない場合は、
エラーが生成され、プログラムのユニフォーム変数ストレージは変更されません。
location
が-1の場合、渡されたデータを渡しても通知なく無視され、指定されたユニフォーム変数は変更されません。
Errors
GL_INVALID_OPERATION
is generated if
program
does not refer to a program object owned
by the GL.
GL_INVALID_OPERATION
is generated if the
size of the uniform variable declared in the shader does not
match the size indicated by the glProgramUniform
command.
GL_INVALID_OPERATION
is generated if one of
the signed or unsigned integer variants of this function is used to load a uniform
variable of type float
, vec2
, vec3
, vec4
, or an array of these,
or if one of the floating-point variants of this function is
used to load a uniform variable of type int
, ivec2
, ivec3
,
ivec4
, unsigned int
, uvec2
, uvec3
,
uvec4
, or an array of these.
GL_INVALID_OPERATION
is generated if one of
the signed integer variants of this function is used to load a uniform
variable of type unsigned int
, uvec2
, uvec3
,
uvec4
, or an array of these.
GL_INVALID_OPERATION
is generated if one of
the unsigned integer variants of this function is used to load a uniform
variable of type int
, ivec2
, ivec3
,
ivec4
, or an array of these.
GL_INVALID_OPERATION
is generated if
location
is an invalid uniform location
for program
and
location
is not equal to -1.
GL_INVALID_VALUE
is generated if
count
is less than 0.
GL_INVALID_OPERATION
is generated if
count
is greater than 1 and the indicated
uniform variable is not an array variable.
GL_INVALID_OPERATION
is generated if a
sampler is loaded using a command other than
glProgramUniform1i
and
glProgramUniform1iv
.
Associated Gets
glGetActiveUniform
with the handle of a program object and the index of an active uniform variable
glGetUniform
with the handle of a program object and the location of a
uniform variable
glGetUniformLocation
with the handle of a program object and the name of a uniform
variable
Copyright
Copyright © 2003-2005 3Dlabs Inc. Ltd.
Copyright © 2010-2014 Khronos Group.
This material may be distributed subject to the terms and conditions set forth in
the Open Publication License, v 1.0, 8 June 1999.
http://opencontent.org/openpub/.