Antara 16 dan 24

PERBEDAANNYA hanya delapan angka saja. Tapi hasilnya cukup jauh. Banget. Mengakibatkan selama dua bulan kebingungan mencari penyebab masalah.

Setelah tanya sana sini, ternyata solusinya sederhana: mengganti angka 16 dengan 24. Setelah itu: beres. pyuhh. Ceritanya sedang kembali belajar openGL untuk menyelesaikan siset yang entah kapan selesainya. setelah berhasil menggambar di form MFC, ternyata ada masalah, gambar yang dihasilkan tidak mulus, seperti patah-patah ketika di-zoom out. Hasilnya seperti gambar di bawah:

Jika gambar itu diperbesar, hasilnya bagus lagi, patah-patahnya berkurang jauh. Padahal, kalau gambar kubus ini dibuat selain di MFC semuanya lancar saja. Artinya, masalahnya bukan pada laptop, tapi pada program yang saya buat. Tapi masalahnya: di mana?

Akhirnya, setelah nanya di dua forum, kaskus dan opengl forum, ketemu juga jawabannya. Meski sebenarnya belum paham maksudnya apa, yang pasti katanya ada masalah di z-buffer. Di sini masalahnya:

void COpenGLControl::oglInitialize(void)
{
	// Initial Setup:
	//
	static PIXELFORMATDESCRIPTOR pfd =
	{
		sizeof(PIXELFORMATDESCRIPTOR),
		1,
		PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER,
		PFD_TYPE_RGBA,
		32, // bit depth
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		16, // z-buffer depth
		0, 0, 0, 0, 0, 0, 0,
	};
....
}

Seperti yang disarankan, masalahnya terjadi di bagian z-buffer (baris ke-13). Baris inilah yang katanya harus diubah. Tapi diubah jadi angka berapa? saya coba angka 0, 1, 100 tetap tidak ada perubahan. Terpaksa harus googling lagi. Untunglah, dalam sebuah blog (lupa linknya), dijelaskanlah mengenai z-buffer ini.

Katanya, untuk video grafis lama, yang dipakai untuk z-buffer adalah 16. Nah untuk versi baru, angka z-buffer itu harus 24. Maka dicobalah diganti dengan 24, dan hasilnya? Alhamdulillah menjadi lebih baik 🙂

0 Thoughts.

  1. Punten ngiring blogwalking ..,wuih hebat, teu ngarti han urng mah,bade ngadamel game PES nyax??. jd iraha atuh lulus teh..meh tereh nikah 😀

Ada komentar?

%d bloggers like this: