JavaとJavaEEプログラマのブログ

JavaEEを中心にしたをソフトウェア開発についてのブログ

OpenGL

OpenGL ES2.0をゆっくり勉強。

Androidでの高速描画には必須らしい。 図書館でOpen GL ES 2.0 プログラミングガイドを借りて読んでみたけど、概念はわかっても、それをどうコードで書けばいいのかさっぱり解らない。 もう少し優しそうな図解 OpenGLによる3次元CGアニメーションを借りてき…

ゲームを作るときは…

入門Google Androidプログラミングのシューティングゲームのサンプルを参考にするといい。 2D、3Dに関わらず参考になるはず。

ハエ取りゲームを高速化。

入門Google Androidプログラミングのシューティングゲームのサンプルを動かしてみると、変なGCも発生せずに高速で動く。テクスチャの表示にjavax.microedition.khronos.opengles.GL10ではなく、javax.microedition.khronos.opengles.GL11を使っているせいら…

ハエ取りゲーム完成

全ソースEsGameActivityクラス。 RedrawHandlerを使って、一定時間ごとに再描画するように修正。 iPhone版ではゲームオーバー時にリスタートボタンを表示するようになっていましたが、EsGameRenderの内部変化でViewのレイアウトを変化させる方法が見つからな…

標的の処理を別クラスに分離し、ハエを複数表示するところまで。

新たにTargetクラスを作成し、標的の処理をTargetクラスのメソッドにする。 package sample.game; import static sample.game.utils.GraphicUtils.*; import javax.microedition.khronos.opengles.GL10; import android.content.Context; import android.uti…

タッチイベントの処理と当たり判定の処理を追加。

タッチイベントの受け取りはActivityのonTouchEventをオーバーライド。EsGameRenderクラスにはタッチイベントの内容を受け取るメソッドを追加。 EsGameActivityクラスの修正部分。 //OpenGLESビュー private GLSurfaceView gLSurfaceView; private EsGameRen…

ハエの表示と移動まで

EsGameRenderクラスにハエの表示と移動の処理を追加。 GCが走ると一瞬、移動が止まる…。LogCatを見るとGCに100msほどかかっている。 package sample.game; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL…

OpenGLで作るiPhone SDKゲームプログラミング 第2章ハエたたきゲームの移植に挑戦。

第1章のサンプルは、ほぼそのままAndroidでも動かすことができました。 引き続き、ハエたたきゲームも移植してみます。 EsGameプロジェクトを作成し、EsGameActivityクラスとEsGameRenderクラスを作成。 GraphicUtilsクラスとTextureLoaderクラスを適当なパ…

複数桁の数字の描画

GraphicUtilsクラスに数字を描画するメソッドを追加。 /** * 指定した数字を、指定した桁数で表示する。 * @param x 表示位置のX座標 * @param y 表示位置のy座標 * @param width 数字の表示サイズ(幅) * @param height 数字の表示サイズ(高さ) * @param num…

テクスチャマッピングで数字を表示。

512x512の数字画像をWindows7のペイントで作成。 GraphicUtilsクラスにテクスチャマッピングを行うメソッドをリファクタリングして新たなメソッドを追加。 /** * テクスチャマッピングでテクスチャの一部分だけを四角形で描画 */ public static void drawTex…

アルファブレンディング

GLRendererクラスでアルファブレンディングを有効化して、アルファ値を設定する。 gl.glEnable(GL10.GL_BLEND); gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);//アルファブレンディング drawTextureRectangle(gl,context,0.5f,0.7f,1.0f…

2Dテクスチャの表示を別メソッドに切り出す。

GraphicUtilsクラスにdrawTextureRectangleメソッドを追加。 /** * テクスチャを四角形で描画 */ public static void drawTextureRectangle(GL10 gl, Context context, final float x, final float y, final float width, final float height,int textureId,…

2Dテクスチャを表示する。

表示する画像はAPIデモの中にあるrobot.png。 入門Google Androidプログラミングのサンプルほぼそのまま。 public class GLRenderer implements GLSurfaceView.Renderer { private Context context; private int textureId; public GLRenderer(Context conte…

5x5のチェッカーボードを描画

package jp.mprog; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; import android.opengl.GLSurfaceView; import static jp.mprog.GraphicUtils.drawSquare; import static jp.mprog.GraphicUtils.dr…

長方形を描画するメソッドを追加。

GraphicUtilsクラスに次のメソッドを追加。 /** * 長方形を描写 */ public static void drawRectangle(GL10 gl,float x, float y, float width, float height, int red, int green, int blue, int alpha ){ final float [] squares = new float[]{ -0.5f * w…

描画している部分をユーティリティクラスに移動する。

ユーティリティクラス。 レンダークラスに作成していたメソッドをこのクラスに移動。 package jp.mprog; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; import javax.microedition.khronos.opengles.GL10; public f…

さらにリファクタリング。指定した座標に正方形を描写。色指定を16進で行うように修正。

色指定は16進でやらないとダメ。 AndroidのSDKのサンプルにあるcom.example.android.apis.graphics.kube.Kubeクラスを参考。 package jp.mprog; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; import javax.microed…

四角形を描くレンダークラスをリファクタリング

初期処理はmakeWorldメソッドに。四角形描写部分はdrawSquareメソッドに。 package jp.mprog; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; import javax.microedition.khronos.egl.EGLConfig; import javax.micro…

正方形を描く

eclipseでAndroidプロジェクトを作ってActivityを作成。 Activityの中でレンダーを行うGLRendererクラスを使用して描画する。 import android.app.Activity; import android.opengl.GLSurfaceView; import android.os.Bundle; public class GLSurfaceViewTes…