シンプルな 2D openGL ゲームを開始しようとしています。ただ、回転には困ります。回転と平行移動の両方が機能していないようです。まったく結果が出ません。以下の例では、画面の中央にある小さな 50x50 の正方形を回転させようとしています。
public void onSurfaceCreated(GL10 gl10, EGLConfig eglConfig) {
gl10.glEnable(GL10.GL_TEXTURE_2D);
gl10.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
textures = new int[1];
// LOAD TEXTURE
Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.grass);
gl10.glGenTextures(1, textures, 0);
gl10.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
gl10.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
gl10.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
mCrop = new int[4];
mCrop[0] = 0;
mCrop[1] = bitmap.getHeight();
mCrop[2] = bitmap.getWidth();
mCrop[3] = -bitmap.getHeight();
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
bitmap.recycle();
}
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glShadeModel(GL10.GL_FLAT);
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glColor4x(0x10000, 0x10000, 0x10000, 0x10000);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(0.0f, sWidth, 0.0f, sHeight, 0.0f, 1.0f);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
((GL11)gl).glTexParameteriv(GL10.GL_TEXTURE_2D, GL11Ext.GL_TEXTURE_CROP_RECT_OES, mCrop, 0);
gl.glPushMatrix();
gl.glRotatef(anglefromcenter, 0, 1, 0);
((GL11Ext)gl).glDrawTexfOES(sWidth/2, sHeight/2, 0, 50, 50);
gl.glPopMatrix();
...
どんな助けでも大歓迎です。ありがとう!