Habilitando multisampling no Irrlicht?

7

Estou trabalhando em um joguinho que usa o Irrlicht. Eu sou muito novo no Irrlicht e estava pensando em como habilitar a multisampling. O driver do dispositivo é EDT_OPENGLiniciado como tal:

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

Como habilito a amostragem múltipla?

destro
fonte

Respostas:

4

Aqui está uma solução, mas você precisará chamar createDeviceEx em vez da função atual.

Você precisará passar uma estrutura SIrrlichtCreationParameters para a função acima, com o membro AntiAlias ​​definido como true (ou outro valor? Parece que a variável é um número inteiro sem sinal e não um bool, nunca percebeu isso). É claro que você terá que definir alguns outros membros da estrutura para ter o mesmo IrrlichtDevice que o da sua pergunta. ;)

Aqui está um código, se você preferir: (aviso: eu não uso o Irrlicht há 1 ano)

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

Veja aqui (infelizmente não muito) informações. (o documento Irrlicht não é realmente muito útil, infelizmente)

Espero que isso ajude, boa noite! :-)

Minishlink
fonte
Eu acho que uma combinação de sua resposta e user1201210 está correta. Deve ser "params.AntiAlias ​​= 8;" Quanto maior, melhor parece.
James Zaghini
O valor AntiAlias ​​deve ser um u8 e não um booleano. Os valores válidos são potências de dois, então 2, 4, 8, 16. O dispositivo geralmente volta para o próximo número mais alto se você especificar um fator muito alto. 1 geralmente é igual a 0, mas depende se o hardware tiver um significado especial para 1 como um valor do AntiAlias.
Octopus
2

Adendo rápido à resposta do Minishlink: AntiAliasé o número de amostras a serem usadas no anti-aliasing. O trecho a seguir vem do COpenGLDriver.cpp da 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;
user1201210
fonte