こんにちは。
そーす人です。
クラウドソーシングとマーケットプレイスが合わさったサービスを展開しています。
ゲームやそれ以外、画像素材などもソースジンで販売や募集ができます。ご利用いただければと思います。
連載でマッチ3ゲームを作っていきます。
---------------------------------------------------------
今回は前回作成した描画処理用のクラスを編集していきたいと思います。
SceneRenderer
を開きます。
以下のように追加します。
public class SceneRenderer implements GLSurfaceView.Renderer { @Override public void onDrawFrame(GL10 gl) { } @Override public void onSurfaceChanged(GL10 gl, int width, int height) { } @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { } }
上記のonDrawFrameに処理を書くことで画面に描画されます。
名称からなんとなく予測がつきますが、onSurfaceChangedで画面の大きさなどが変わった時に呼び出され、onSurfaceCreatedで初期化処理が呼び出されます。
ではonSurfaceCreatedにOpenGLの初期状態を定義してみましょう。
@Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { //ティザの無効化 gl.glDisable(GL10.GL_DITHER); //アンチエイリアスの設定 gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,GL10.GL_FASTEST); //塗りつぶし gl.glClearColor(0,0,0,0); //陰影処理を設定 gl.glShadeModel(GL10.GL_SMOOTH); //有効な描画方法を設定 gl.glEnable(GL10.GL_DEPTH_TEST); gl.glEnable(GL10.GL_BLEND); gl.glEnable(GL10.GL_ALPHA_TEST); //アルファブレンド gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); //アルファ値の比較 gl.glAlphaFunc(GL10.GL_GREATER,0.1f); }
以プログラムに直接コメントを振ってみました。
基本的にグラフィックの描画精度をどのようにするかを設定します。
当然、アンチエイリアスや陰影処理をスムース設定すると処理能力が必要になりますので、古い機種など貧弱な環境では厳しくなりますが、今回は3Dを使ってガンガン描画しましょうみたいなことはないので、まあ、大丈夫かな…と思います。
設定を変更するとどのように変わるかは、今後画面ができ始めたときに上記の値を変えて遊んでみてください。
今回、gl.glHintにGL_PERSPECTIVE_CORRECTION_HINTにGL10.GL_FASTESTを設定していますが、それ以外だと以下のようなものを設定できます。
項目は、
GL_FOG_HINT フォグの精度
GL_LINE_SMOOTH_HINT アンチエイリアス処理された線のサンプリング
GL_PERSPECTIVE_CORRECTION_HINT カラーとテクスチャ座標の補間精度
GL_POINT_SMOOTH_HINT アンチエイリアス処理された点のサンプリング
GL_POLYGON_SMOOTH_HINT アンチエイリアス処理されたポリゴンのサンプリング
値は、
GL_FASTEST 効率的
GL_NICEST 最高品質
GL_DONT_CARE 選択しない
のような感じです。
描画関係を最高にしたい場合は、全部の項目を最高品質にすれば良いわけですね。
OpenGLの部分は、ちょっと細かく説明しておりますが、もうちょっとペースを上げたいですね…。
まあ、のんびり分かりやすくいきますか。
次回は、テスト的に何か描画する説明をしたいと思います。
---------------------------------------------------------
製品、サンプルソース、デザイン、素材などIT開発関連マーケットプレイス+ワーキング
Sourcegene ソースジン