IMHO ada tiga alasan untuk menggunakan OpenGL ES dalam game:
- Hindari perbedaan antara platform seluler dengan menggunakan standar terbuka;
- Untuk memiliki kontrol lebih besar terhadap proses render;
- Untuk mendapatkan manfaat dari pemrosesan paralel GPU;
Menggambar teks selalu menjadi masalah dalam desain game, karena Anda menggambar sesuatu, jadi Anda tidak dapat memiliki tampilan dan nuansa aktivitas yang umum, dengan widget dan sebagainya.
Anda dapat menggunakan kerangka kerja untuk menghasilkan font Bitmap dari font TrueType dan merendernya. Semua kerangka kerja yang saya lihat beroperasi dengan cara yang sama: menghasilkan koordinat titik dan tekstur untuk teks dalam waktu menggambar. Ini bukan penggunaan OpenGL yang paling efisien.
Cara terbaik adalah dengan mengalokasikan buffer jarak jauh (objek buffer vertex - VBO) untuk simpul dan tekstur di awal kode, menghindari operasi pemindahan memori yang malas dalam waktu penarikan.
Ingatlah bahwa pemain game tidak suka membaca teks, jadi Anda tidak akan menulis teks yang dibuat secara dinamis lama. Untuk label, Anda dapat menggunakan tekstur statis, meninggalkan teks dinamis untuk waktu dan skor, dan keduanya numerik dengan panjang beberapa karakter.
Jadi, solusi saya sederhana:
- Buat tekstur untuk label dan peringatan umum;
- Buat tekstur untuk angka 0-9, ":", "+", dan "-". Satu tekstur untuk setiap karakter;
- Hasilkan VBO jarak jauh untuk semua posisi di layar. Saya dapat membuat teks statis atau dinamis di posisi itu, tetapi VBO statis;
- Hasilkan hanya satu Tekstur VBO, karena teks selalu diterjemahkan satu arah;
- Dalam waktu menggambar, saya membuat teks statis;
- Untuk teks dinamis, saya bisa mengintip posisi VBO, mendapatkan tekstur karakter dan menggambarnya, karakter sekaligus.
Operasi draw cepat, jika Anda menggunakan buffer statis jarak jauh.
Saya membuat file XML dengan posisi layar (berdasarkan persentase diagonal layar) dan tekstur (statis dan karakter), dan kemudian saya memuat XML ini sebelum rendering.
Untuk mendapatkan tingkat FPS yang tinggi, Anda harus menghindari menghasilkan VBO pada waktu undian.