Memahami cara membuat / menggunakan tekstur untuk game saat dibatasi oleh kekuatan dua ukuran


8

Saya punya beberapa pertanyaan tentang membuat grafik untuk sebuah game.

Sebagai contoh. Saya ingin membuat sepeda motor. (1pixel = 1 centimeter) Jadi sepeda motor saya akan memiliki lebar 200 dan tinggi 150. (200x150) Tapi libgdx hanya memungkinkan memuat ukuran dengan kekuatan 2 ?! (2,4,8,16, ...)

Pertama saya memikirkan hal itu. Saya akan membuat sepeda saya dengan ukuran (200x150) dan menyimpannya sebagai png. Daripada saya akan membukanya lagi (misalnya dengan gimp) mengubah ukuran gambar ke ukuran yang menggunakan nilai dengan kekuatan 2 (128x128). Saya akan memuatnya sebagai tekstur dalam program dan mengatur lebar sebagai 200 dan tinggi sebagai 150.

Tapi bukankah itu menjadi masalah? Karena saya akan kehilangan beberapa informasi piksel ketika saya melakukan percakapan pertama.?! Bukan?


1
Libgdx memiliki pengemas tekstur yang akan menggabungkan gambar Anda ke beberapa gambar yang lebih besar (atlas) dan membantu Anda hanya menggambar bagian yang Anda inginkan.
Matsemann

Jawaban:


11

Alasan Anda terbatas pada kekuatan dua ukuran adalah karena cara kerja ram video. Perhatikan bahwa apa yang harus Anda lakukan biasanya membuat gambar kekuatan tertinggi berikutnya dua (.e. 512x256), dan kemudian hanya menggunakan sebagian dari gambar itu untuk grafik Anda. Anda akan mengatur koordinat UV Anda untuk hanya menggunakan subbagian gambar ke segitiga apa pun yang Anda render.

Jika Anda khawatir tentang penggunaan memori, Anda juga bisa menggunakan sebagian dari ruang yang tersisa pada objek yang berbeda dan UV memetakan objek-objek ke bagian tekstur. Membuat tekstur seperti ini juga dikenal sebagai "atlas".


4
Patut disebutkan bahwa atlas juga mengoptimalkan kinerja, karena semakin sedikit Anda berganti tekstur, semakin sedikit batch, semakin cepat menggambar.
Gustavo Maciel

3

Anda harus menggunakan koordinat tekstur alih-alih mengubah ukuran, seperti menggambar hanya sebagian dari seluruh tekstur. Saya tidak tahu cara kerjanya di libgdx tapi itu umum untuk menggunakan pendekatan ini. Pendekatan lain adalah dengan menggunakan atlas tekstur, yang ada dalam memori misalnya 1024x1024 dan kemudian ketika Anda memuat gambar Anda memuatnya ke atlas rectangle.


0

Anda dapat mengonversi ukuran gambar Anda sedikit lebih besar atau lebih kecil sesuai dengan ukuran yang sesuai. Saya telah menggunakan tautan ini - http://www.garyshood.com/imageconvert/ Anda dapat menggunakan ukuran yang benar-benar dapat habis dibagi 2. Sebagai contoh, jika ukuran gambar Anda adalah 200, maka 200/2 = 100; 100 / 2 = 50; 50/2 = 25, jadi di sini 25 tidak dapat dibagi dengan 2. Oleh karena itu, 200 bukan ukuran yang sesuai. Anda dapat menggunakan 1024, 512, 256, 128 dan seterusnya .. Dan kemudian Anda dapat menggunakan bagian dari gambar itu dalam grafik Anda. Alternatif lain adalah menggabungkan semua tekstur Anda ke dalam atlas tekstur dengan mudah menggunakan GUI Texture Packer libgdx dan kemudian menggunakan tekstur dari atlas itu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.