O SharpDX já está maduro o suficiente para adotar ou devo começar a usar o SlimDX agora?

10

Estou prestes a interromper meu projeto de jogo no XNA porque, pelo que posso concluir, o desenvolvimento está chegando ao fim (e já está por trás da tecnologia atual). Portanto, preciso adotar uma nova estrutura ou API.

Passei apenas dois dias olhando C ++ e decidi que realmente não é para mim - no entanto, acho o acesso bruto ao DirectX atraente. O SharpDX parece um bom lugar para começar, mas não possui documentação nem comentários de código. Sinto que não está totalmente pronto para uso.

Estou interessado nas opiniões de pessoas que usaram uma ou ambas as estruturas, para me ajudar a decidir com certeza qual delas devo aprender? Obrigado por qualquer conselho.

Gavin Williams
fonte
1
Pergunta muito conversacional :). O SharpDX provavelmente é tão maduro quanto o SlimDX, porque é gerado diretamente a partir dos cabeçalhos - como tal, ele envolveu 100% do DirectX imediatamente. Ambas as bibliotecas são essencialmente as mesmas; então você pode simplesmente usar as amostras SlimDX para SharpDX.
Jonathan Dickinson
1
É possível que sua reticência em pegar C / C ++ seja o problema real em termos de emoção. Enquanto você permanecer no nível gerenciado, nunca conseguirá a carne de verdade, IMO. Isso é de alguém que por um longo tempo jurou por idiomas gerenciados, apesar de ser formalmente treinado em C ++. Apenas uma observação. Não evite muito o C ++ . Certamente limitará suas opções nesse setor, se você o fizer, enquanto o inverso definitivamente não for verdadeiro, na verdade, ele fornece um sólido ponto de entrada para outros setores (médico, financeiro, defesa). O salário médio é muito melhor por lá, FYI.
Engenheiro de
Estou realmente interessado em DX, e mesmo que eu acabe portando meu projeto para Slim ou Sharp, certamente estou ouvindo o que você está dizendo. E provavelmente me serviria bem para continuar aprendendo C ++ para que eu possa superar esse desconforto. Gostaria de pensar que daqui a 12 meses, se estivesse em uma posição em que precisava usar o C ++ / Direct X, poderia optar por fazer isso, se for a ferramenta certa para o trabalho.
Gavin Williams

Respostas:

16

Sou o autor do SharpDX, então meu conselho será tendencioso, mas gostaria de pelo menos responder sobre algumas de suas preocupações.

Sobre a documentação do SharpDX, o estado atual é muito limitado, pois tenho trabalhado até agora para disponibilizar toda a API do DirectX a partir do .NET e do novo sistema operacional Win8. Como estou fechado para concluir deste lado, estou trabalhando para fornecer um site completo e alguns artigos para explicar os principais conceitos do SharpDX e como você pode obter o melhor dele. Além disso, lembre-se de que este projeto visa principalmente trazer o DirectX para o .NET. Portanto, ainda é uma API de baixo nível. Portanto, é necessário aprofundar um pouco o comportamento da API C ++ para entender como ela está funcionando. Felizmente, quase todos os métodos no SharpDX são mapeados para um único método na API do DirectX, portanto, é fácil verificar como usar um método verificando a API do DirectX. O sistema de documentação que estará disponível com o SharpDX 2.

O SharpDX está pronto para ser usado no desenvolvimento de um jogo? Em resumo, sim.

Primeiro, fui contratado por uma empresa japonesa para participar do desenvolvimento de um novo mecanismo 3D em C # e estamos usando o SharpDX para o backend de renderização no Windows.

Em segundo lugar, recebi muitos e-mails particulares de desenvolvedores de empresas que estão usando o SharpDX para desenvolver aplicativos multimídia (variando de jogos, editor de níveis, publicação de fotos on-line ... etc). Alguns desses clientes são muito grandes (infelizmente, não posso citá-los).

Por fim, alguns projetos públicos de código aberto estão usando (ou vão usar) o SharpDX para a renderização principal de back-end. Por exemplo, o Delta Engine já está usando o SharpDX para a renderização Direct3D11 (que também estará disponível para o Win8). O projeto ANX (um sucessor XNA de código aberto) também está usando o SharpDX para renderização, gamepads e gerenciamento de áudio.

Mas o SharpDX é apenas um passo na estrada para criar um mecanismo de jogo e depois um jogo. Como a API é de baixo nível, você não pode esperar ter o mesmo tipo de recursos de alto nível com os quais estava acostumado com uma estrutura como XNA. Mas com uma estrutura mínima, você pode fazer muitas coisas.

Além disso, você pode considerar usar um produto bem estabelecido como o Unity para desenvolver jogos portáteis em C #.

xoofx
fonte
1
+1 para o ANX. Realmente emocionante, porque eu realmente amo a simplicidade do XNA (eu rapidamente desisti do #DX devido à quantidade de código boostrap necessária).
11136 Jonathan Dickinson
Uau, obrigado por adicionar Alexandre, eu estava lendo algumas das suas postagens hoje à noite quando você saiu da equipe slimDX e o que você tem em mente para o SharpDX. É ótimo ver um trabalho tão focado e é ótimo ter outra estrutura gerenciada, os mecanismos de gráficos gerenciados estão ficando cada vez maiores e acho que ainda não vimos toda a possibilidade. Eu só espero que os problemas de desempenho com o código gerenciado, sejam eles de tempos de chamada ou de comportamento do coletor de lixo, possam ser resolvidos ou minimizados para serem irrelevantes. Seu trabalho certamente está contribuindo para essa solução.
Gavin Williams
Realmente há muitas opções. Eu baixei o Unity. Eu nunca vi um motor de jogo ou algo parecido antes, então deve ser interessante ver o que ele pode fazer e como ele faz. Eu tenho os fundamentos do meu projeto já escritos em xna e está em algum lugar nas proximidades de 5000 a 10.000 linhas de código, então eu gostaria de usar esse código, se pudesse. Mas ainda está muito longe de terminar, então suponho que se eu passar uma semana ou duas olhando estruturas e mecanismos diferentes, não é um investimento ruim.
Gavin Williams
Nunca tinha ouvido falar do ANX antes deste post. Muito interessado para onde isso está indo. E pelo jeito, você pode querer atualizar o link no seu correio para: anxframework.codeplex.com
David Gouveia