Hẹ hẹ, hôm nay tôi viết thêm một modul fake shadow cho chương trình của mình, đơn giản chỉ là áp một cái texture bóng tròn lên terrain thui :> kô có gì ghê gớm cả. Ban đầu là tui đổ vector crossing lên để lấy mesh cần vẽ, sau đó là cứ thế mà vẽ thui >> hix, chít cha, seo thằng này bị xé hình kì cục zị T_T, rõ ràng mình để depth test là LEQUAL rùi mờ ???? Hic, tui đoán là do depth buffer kô đủ chỗ chứa nên là thèng này kô vẽ chính xác được, mà bỏ depth mask thì cũng kô xong. Cáu wé.. lúc đầu định lục xem OpenGL có hỗ trợ cái hint nào để khắc phục chất lượng ảnh trong những trường hợp này kô (ủa wên, cái này tôi test trên một card GF4 MX440 thì mới bị, các card GF4 dòng Ti kô có card nào bị thế này hết, hè hè...) hoặc định tăng kích thước depth buffer lên (stupid ideal +_+) nhưng mờ kô có thời gian+chả có quyển sách reference nào, hic >> ra đi thanh thản.
Nhăn mẹt suy nghĩ 5 phút, làm ly cafe cho tỉnh táo, cuối cùng tui quyết định áp dùng một cách con nhà lừa, hẹ hẹ. Tui đẩy độ cao của mesh đó lên một mức nhỏ vừa đủ để lỗi kô xảy ra đồng thời hiệu quả hình ảnh kô bị biến dạng quá mức....hic hic.... may mà gõ phát ăn ngay.... xong ... chỉ có điều cách giải quyết này kô trọn vẹn lắm. Do trong game tôi viết góc quay hầu như luôn cao hơn những mesh này nên cũng khó nhận ra, nhưng trong những trường hợp khác ?
Trường hợp này đa số các game chạy OpenGL viết khoảng 1 năm về trước đều bị. Giống như haftlife khi nhìn ở xa thì thường bị mất correct chẳng hạn. Nhưng hiện tại HL2 và DoomIII đều đã khử được những lỗi này (hic, tại zề nó kô chơi với con card GF MX chứ nếu chạy thì chắc vẫn chết). Vì thế tôi muốn thảo luận thêm một chút, các huynh đệ chắc là có người làm cái này rùi, vì thế có cách nào tốt hơn thì show ra (hẹ hẹ, đỡ phải tìm :>).
Tôi nghĩ là còn một cách nữa (làm rùi) là dùng TEXTURE_LAYER, nhưng hic, cái chính là mình viết mà kô chạy được trên những card thông thường thì... tiêu. Chứ viết mà cứ yêu cầu vống lên thì chuối quá.
Ảnh lởm:
Ảnh sau khi "phẫu thuật":
To be continue....
Bookmarks