GLFun(17)~Texture2Dクラス(6)

2012. 01. 05
(『GLFun(16)~Texture2Dクラス(5)』からの続きです)

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:値または指定されたパラメータの値を返します。

テクスチャの生成・バインド・パラメータ設定)

glGenTexturesでテクスチャオブジェクトを生成します。

第一引数は生成するオブジェクトの個数なので1、第二引数は識別番号を格納するテクスチャ名で_nameを指定します。

生成したテクスチャオブジェクトはglBindTextureでバインドします。

第一引数はテクスチャがバインドされているターゲットでGL_TEXTURE_2D固定、第二引数には生成したテクスチャ名を指定します。

続いてglTexParameterでテクスチャのパラメータを設定します。

ここではテクスチャに対して貼り付けるプリミティブが小さい場合に、テクスチャをどのように縮小するかを指定しています。

第一引数はターゲットのテクスチャで、GL_TEXTURE_2Dである必要があります。

第二引数はテクスチャのシンボリック名で、GL_TEXTURE_MIN_FILTERはテクスチャを縮小する際の画像の補間方法を指定します。
(『床井研究室/第2回 テクスチャの割り当て』)

第三引数はpname(第二引数)の値を指定するもので、GL_LINEARは隣接する4つのテクスチャ要素の加重平均を返します。

glGenTextures

void glGenTextures(GLsizei n, GLuint * textures);

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

glGenTextureは、textures内のn個のテクスチャ名を返します。

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

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

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

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

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

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

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

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:テクスチャの名前を指定します。

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が発生します。



参考文献

iOS OpenGL ESプログラミングガイド

OpenGL ES 1.1 Reference Pages

床井研究室/第2回 テクスチャの割り当て

はじめてのiPhone3プログラミングはじめてのiPhone3プログラミング
(2009/12/17)
Dave Mark、Jeff LaMarche 他

商品詳細を見る

Beginning Ios 6 Development: Exploring the Ios SdkBeginning Ios 6 Development: Exploring the Ios Sdk
(2012/12/26)
David Mark、Jack Nutting 他

商品詳細を見る






QuietControl 30 wireless headphones
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
04 | 2017/05 | 06
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

QuietControl 30 wireless headphones
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