私は OpenGL ES を初めて使用し、テクスチャ付きのクワッドを描画しようとしています。2D のままにしたいので、正投影を使用することにしました。私が本当に望んでいるのは、画面の解像度に関係なく、すべてのデバイスで同じ相対的な画面スペースを占める平面を描くことです。
私が遭遇する問題は、正投影の設定です。アスペクト比が正しくありません。正方形は高さの長方形として描画されます。これまでの私のコードは次のとおりです。
レンダラー:
// automatically looped by android
public void onDrawFrame(GL10 gl) {
// clear screen and buffer
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
// Draw elements
for (GameObject object : level.getGameObjects()) {
gl.glScalef(0.2f, 0.2f, 0.0f);
object.draw(gl);
gl.glLoadIdentity();
}
}
public void onSurfaceChanged(GL10 gl, int width, int height) {
gl.glViewport(0, 0, width, height);
gl.glOrthof(0f, 480f, 0f, 800f, -1f, 1f);
}
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
// Load all textures
for (GameObject object : level.getGameObjects()) {
object.bindTexture(gl);
}
// Initialize game canvas
gl.glEnable(GL10.GL_TEXTURE_2D); // Enable Texture Mapping
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black background
// enable texture transparency
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
}
描画方法は、このチュートリアルとまったく同じです: http://obviam.net/index.php/texture-mapping-opengl-android-displaying-images-using-opengl-and-squares/
よろしく、ダーン