読者です 読者をやめる 読者になる 読者になる

OpenGL ESの機能設定

http://d.hatena.ne.jp/kambayashi/20090711/1247591143のサンプルを使用。
http://d.hatena.ne.jp/kambayashi/20090713/1247594990の修正を加えたバージョン。

各種スイッチの切り替え

OpenGL ESにはいろいろなスイッチの機能があり、オン・オフをglEnable(),glDisable()で切り替える。
今回はGLRenderer.glInitialize()というメソッドを用意して、onSurfaceCreated()で実行する。
まずはサンプル。

/**
 * OpenGL ES機能初期化
 * @param gl	GLハンドル
 */
private void glInitialize(GL10 gl){
	//アルファチャンネル機能(色設定時の透明度)ON
	gl.glEnable(GL10.GL_ALPHA_TEST);
	//下の色と上に書いた物の色の合成機能ON
	gl.glEnable(GL10.GL_BLEND);
	//上記の色合成ルール設定
	gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
	//テクスチャ機能ON
	//gl.glEnable(GL10.GL_TEXTURE_2D);
	//テクスチャを貼った時の土台のポリゴン色との色合成ルール設定
	gl.glTexEnvf( GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_MODULATE );
	//テクスチャ座標が1.0fを超えたときの、テクスチャの使い方設定
	gl.glTexParameterx( GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_REPEAT );
	gl.glTexParameterx( GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_REPEAT );
	//gl.glTexParameterx( GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP );
	//gl.glTexParameterx( GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP );
	//テクスチャをオリジナルサイズから拡大、縮小して使用したときの色の使い方設定
	gl.glTexParameterx( GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR );
	gl.glTexParameterx( GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR );
	//gl.glTexParameterx( GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_NEAREST );
	//gl.glTexParameterx( GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST );
}

@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
	// TODO 自動生成されたメソッド・スタブ
	
	//GLヘルパー作成
	mGLHelper = new GLHelper();
	//OpenGL ES機能設定
	glInitialize(gl);
}

この設定でポリゴンを重ねて描画すると、アルファが1.0fになっていないと下のポリゴンの上にセロファンを貼ったような色になる。
テクスチャに関する設定も書いてあるが、これは次回使う。