2011-08-07 30 views

Trả lời

5

Đây là một vấn đề bạn thường gặp khá thường xuyên, thậm chí trong không gian 3D.

Tôi không quá quen thuộc với Cocos2D, nhưng một cách để giải quyết điều này trong OpenGL chung là điền vào bộ đệm khung với kênh alpha mong muốn, chuyển chế độ hòa trộn thành glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA) và vẽ hình chữ nhật. Ý tưởng đằng sau điều này là bạn vẽ một hình chữ nhật với độ trong suốt mong muốn được lấy từ bộ đệm khung, nhưng trong tiến trình che khu vực bạn đã vẽ để hình chữ nhật tiếp theo của bạn sẽ được đeo ở đó.

Cách tiếp cận khác là hiển thị toàn bộ nội dung cho một kết cấu hoặc lắp ráp hình dạng bằng các đa giác không chồng lên nhau.

Tôi không chắc liệu Cocos2D hỗ trợ bất kỳ trong số này ...

+0

Yea chính xác điều đó. Fyi bạn có thể thay đổi hàm pha trộn trên sprite bằng thuộc tính blendfunc. tức là 'mysprite.blendFunc = (ccBlendFunc) {GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA};' –

2

Tôi không biết những gì khả năng Cocos2d đặc biệt cung cấp, nhưng tôi có thể thấy hai lựa chọn,

One, không chồng chéo lên nhau như vậy, nhưng thay vì xây dựng hình học phức tạp hơn sao cho mỗi pixel chỉ được bao phủ một lần,

Hai, sử dụng bộ đệm stencil để tạo mặt nạ khi bạn vẽ và để từ chối bất kỳ pixel nào đã được đeo mặt nạ.

Các vấn đề liên quan