domingo, janeiro 13, 2008

Portando o Allegro para o C#

Antes de mais nada, eu quero dizer que eu adoro reinventar a roda quando se trata de programação. Apesar de existir muita coisa pronta e muito bem-feita por aí, ás vezes eu gosto de fazer minha própria versão. Isso me dá um controle maior sobre o que a biblioteca está fazendo e serve como uma boa base pra estudos.

Mas pra que eu estou falando sobre isso? Como eu disse anteriormente, eu estou desenvolvendo meu projeto de TCC e andei tendo problemas com algunas bibliotecas testadas. Agora eu resolvi usar o Allegro, uma boa biblioteca com a qual eu já trabalhei e testes mostraram que ele tem um bom desempenho.

Acontece que não há uma versão oficial do Allegro para .Net, então a saída normal seria buscar um wrapper que alguém já fez e pronto. Ao invés de fazer isso, eu resolvi criar meu próprio wrapper do Allegro (chamado AllegroNet). Você deve estar pensando "etâ cara doido, procurando mais trabalho!". Sim, é mais trabalho. Mas eu gosto :P

Fazer um wrapper no .Net para uma DLL nativa é bem mais simples do que eu pensava. Você só precisa mapear cada função da DLL no .Net usando o DllImport. Além disso, basta re-declarar as structs no seu código, já que elas não podem ser importadas diretamente.

Eu começei a mexer com isso no sábado de tarde e agora (uma e pouco da manhã de domingo) já é possível carregar e desenhar uma imagem com meu wrapper. É pouca coisa, mas o tempo que demorou pra fazer isso também não foi muito grande.

Eu pretendo portar apenas as principais funções do Allegro pro .Net, ou melhor, pretendo portar apenas as funções que eu vou usar no meu framework. Mas se alguém por aí tiver interesse em usar o Allegro com .Net e quiser que eu porte mais coisas, é só me avisar que eu posso aumentar a tradução.

Como sempre, ao invés de dar o link pro download, eu vou prometer que em breve eu libero a DLL pra vocês testarem e também o código, pra quem tiver interesse. Eu sei que isso é chato, mas realmente não dá pra liberar o projeto no pé que ele está agora.

Aguardem novidades.

Nenhum comentário: