glDrawTexfOES
を使用して描画されたテクスチャがいくつかあります。私は、ズームインまたはズームアウトの印象を与えるためにカメラのビューを変更することができますが、それは私が問題を抱えている場所です。私は基本的な頂点配列を作ろうとしましたが、これは正しく機能し、ズームできました。しかし、私はglDrawTexfOES
を使ってテクスチャをズームしたいと思っています。関連するコードは以下の通りです:glDrawTexfOESを使用したAndroid OpenGL ESズームが可能ですか?
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glShadeModel(GL10.GL_SMOOTH);
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
gl.glClearDepthf(1.0f);
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
onSurfaceChanged
完全な実装(私は問題がここにある疑いがある)
public void onSurfaceChanged(GL10 gl, int width, int height) {
mWidth = width;
mHeight = height;
gl.glViewport(0, 0, mWidth, mHeight);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(0, mWidth, 0, mHeight, -1, 1);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
}
そして最後に、onDrawFrame実装:
onSurfaceCreated
がへの呼び出しを含んでいます
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
// Set crop area (UVarray are uv co-ords for a texture map, the texture renders fine.)
((GL11) gl).glTexParameterfv(GL10.GL_TEXTURE_2D, GL11Ext.GL_TEXTURE_CROP_RECT_OES,UVarray,0);
// Draw texture
((GL11Ext) gl).glDrawTexfOES(32.0f,32.0f,0.0f,64.0f,64.0f);
}
私は変更を試みました幅が* 2、高さが* 2のglViewport
とglOrthof
のパラメータですが、テクスチャはまだ縮尺されていません。まったく同じです。頂点配列を使用するようにスワップすると、これらの調整が機能します。
ご協力いただければ幸いです。
バー、私はそうではないと思っていました。とにかくありがとう。 – Dororo