Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Andoridでのグラフィック処理の章をレビューしました #35

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions articles/graphics-01.re
Original file line number Diff line number Diff line change
Expand Up @@ -878,13 +878,13 @@ OpenGL ESによって生成されたテクスチャオブジェクトはシェ

Android SDKに組み込まれたOpenGL ESのコマンドは、多くの場合この「配列のどのindexから使用するか」を指定することになります。これはJava言語がポインタ(メモリ)を直接扱えないための救済措置ともいえますが、本書では特別なことをしないため、すべて"0"になります。

サンプルでは1枚のテクスチャをtextureId配列のindex0移行に格納するため、glGenTextures内部では"textureId[0] = テクスチャオブジェクトのID"のような処理が行われます。
サンプルでは1枚のテクスチャをtextureId配列のindex0以降に格納するため、glGenTextures内部では"textureId[0] = テクスチャオブジェクトのID"のような処理が行われます。

textureIdは一時変数であるため、this.textureに対して返却値を保存してテクスチャオブジェクトの生成処理は完了です。

テクスチャオブジェクトは生成しただけでは使用することが出来ません。OpenGL ESに対して「これから使用を開始するよ」ということを宣言しなければならないのです。テクスチャオブジェクトの使用を開始するコマンドが"glBindTexture"です。

glBindTextureの第1引数には"GL_TEXTURE_2D"を指定します。第2引数には、使用を開始するテクスチャオブジェクトを指定します。また、第2引数に"0"を指定することで「使用を終了するよ」というのを明示できます。
glBindTextureの第1引数には"GL_TEXTURE_2D"を指定します。第2引数には、使用を開始するテクスチャオブジェクトを指定します。また、第2引数に"0"を指定することで「使用を終了するよ」というのを明示できます。

テクスチャの使用開始を"バインド"、使用終了を"アンバインド"とそれぞれ呼びます@<fn>{バインドの詳細}。

Expand Down Expand Up @@ -922,7 +922,7 @@ glTexParameteriコマンドはテクスチャがGPUによってどのように

OpenGL ESで「ポリゴンにテクスチャを貼り付ける」というのは、「一つ一つの頂点に対して、どの頂点をどのUV座標に関連付けるか」を指定するということです。

頂点単位で渡されたUV座標は、varying変数を通してフラグメントシェーダーへと渡されます。フラグメントシェーダーはそのUV座標から、実際に「テクスチャの色」を取得しなければなりません。UV座標からテクスチャの色を取得する関数が"texture2D"です。第1引数にはアクセスするテクスチャを、第22引数にはUV座標をそれぞれ指定します(@<list>{vary_uvVertex}、@<list>{vary_uvFragment})。
頂点単位で渡されたUV座標は、varying変数を通してフラグメントシェーダーへと渡されます。フラグメントシェーダーはそのUV座標から、実際に「テクスチャの色」を取得しなければなりません。UV座標からテクスチャの色を取得する関数が"texture2D"です。第1引数にはアクセスするテクスチャを、第2引数にはUV座標をそれぞれ指定します(@<list>{vary_uvVertex}、@<list>{vary_uvFragment})。

//list[vary_uvVertex][頂点シェーダー]{
final String vertexShaderSource =
Expand Down