Kích hoạt tính năng đa mẫu trong Irrlicht?


7

Tôi đang làm việc trên một trò chơi nhỏ sử dụng Irrlicht. Tôi khá mới mẻ với Irrlicht và tôi đã tự hỏi làm thế nào tôi có thể kích hoạt tính năng đa mẫu. Trình điều khiển thiết bị được EDT_OPENGLbắt đầu như vậy:

IrrlichtDevice *device = createDevice(video::EDT_OPENGL,
                                        core::dimension2d<u32>(800, 700),
                                        16,
                                        NO);

Làm cách nào để bật multisampling?

Câu trả lời:


4

Đây là một giải pháp, nhưng bạn sẽ cần gọi createdDeviceEx thay vì chức năng hiện tại.

Bạn sẽ phải chuyển cấu trúc SIrrlichtCreationParameter cho hàm trên, với thành viên AntiAlias ​​được đặt thành true (hoặc giá trị khác? Có vẻ như biến đó là một số nguyên không dấu và không phải là bool, không bao giờ nhận thấy điều đó). Tất nhiên, bạn sẽ phải xác định một số thành viên cấu trúc khác để có cùng IrrlichtDevice như câu hỏi của bạn. ;)

Đây là một đoạn mã nếu bạn thích: (cảnh báo: Tôi đã không sử dụng Irrlicht từ 1 năm nay)

SIrrlichtCreationParameters params = SIrrlichtCreationParameters();
params.AntiAlias = true;
params.DriverType = video::EDT_OPENGL;
params.WindowSize = core::dimension2d<u32>(800, 700);
IrrlichtDevice *device = createDeviceEx(params);

Xem ở đây để biết (không may là không nhiều) thông tin. (Thật không may, tài liệu Irrlicht thực sự không hữu ích lắm)

Hy vọng điều này sẽ giúp, chúc ngủ ngon! :-)


Tôi nghĩ rằng sự kết hợp giữa câu trả lời của bạn và user1201210 là chính xác. Nó phải là "params.AntiAlias ​​= 8;" Càng cao, dường như tốt hơn.
James Zaghini

Giá trị AntiAlias ​​có nghĩa là một u8 không phải là boolean. Giá trị hợp lệ là lũy thừa của hai, vì vậy 2, 4, 8, 16. Thiết bị thường rơi trở lại số cao nhất tiếp theo nếu bạn chỉ định một yếu tố quá cao. 1 thường giống với 0, nhưng nó phụ thuộc vào việc phần cứng có ý nghĩa đặc biệt với 1 là giá trị AntiAlias ​​hay không.
Bạch tuộc

2

Phụ lục nhanh cho câu trả lời của Minishlink: AntiAliaslà số lượng mẫu được sử dụng trong khử răng cưa. Đoạn mã sau đến từ COpenGLDriver.cpp của Irrlicht.

// This value determines the number of samples used for antialiasing
// My experience is that 8 does not show a big
// improvement over 4, but 4 shows a big improvement
// over 2.
if(AntiAlias > 32)
    AntiAlias = 32;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.