Pergunta

O modelo padrão tem sido que OpenGL é para aplicações profissionais (CAD) e Direct3D é para jogos.

Com a derrocada do OpenGL 3.0, é OpenGL ainda a escolha natural para aplicativos 3D técnicos (CAD / GIS)?
Existem bibliotecas scenegraph para Direct3D?

(Claro Direct3D é somente para Windows).

Foi útil?

Solução

D3D faz você pagar a Microsoft "imposto estratégia." Ou seja, D3D serve a dois senhores. Um deles é o que lhe dá características e desempenho. O outro é o de assegurar lock-in para outros produtos de MS e a plataforma Windows em geral. Isto tem algumas consequências para você:

  1. A D3D aplicativo não será executado em qualquer coisa, mas o Windows (incluindo Xbox). Talvez você não acha que é importante agora. Mas se, no caminho, você quer rodar em Mac, Linux, PS3, consoles futuros, etc., você pode ser feliz que você escolheu a escolha independente de plataforma.

  2. MS pode tomar algumas decisões arbitrárias. Será que a próxima versão do D3D única executado em um sistema operacional que requer novo hardware, é caro, e muitas pessoas não querem atualizar para? Será que eles vão fazer alguma outra decisão futura você não concorda?

  3. D3D Historicamente, OpenGL levou em exposição rápida de novos recursos de HW. Isso ocorre porque há um mecanismo no padrão para os vendedores para adicionar suas próprias extensões, e para aquelas extensões para eventualmente ser dobrado para a especificação principal. D3D é tudo o MS quer que seja, com a entrada de fornecedores para ter certeza, mas MS recebe poder de veto. Você poderia facilmente estar em uma situação como com o Vista, onde MS decidiu não expor novos recursos de HW para o velho DX, e só fazer o novo DX disponível no Vista. Esta foi uma dor de cabeça para os desenvolvedores de jogos.

Agora, então, este é o sabor de razões pelas quais um "app profissional" (CAD, animação, visualização científica, GIS, etc.) favoreceria OGL - aplicativos como esta necessidade para ser estável por muitos anos, precisa de manutenção contínua e melhoria, e quer rodar em várias plataformas. Isso está em contraste com jogos, o que é bastante frequente são apenas em uma única plataforma, será lançado, mas geralmente não é "mantida" (que provavelmente não será um 2.0, uma atualização para outro sistema operacional de três anos, portanto, não precisa de apoio HW mais velhos, etc.). Jogos deseja o máximo desempenho e só precisa de trabalho para uma janela de tempo curto e em um número fixo de plataformas. Se eles precisam de destino do Windows de qualquer maneira e D3D é um pouco mais rápido, que pode ser a escolha certa desde o negativo conseqüências D3D não vai prejudicá-los como se fosse para um aplicativo CAD, dizem.

Outras dicas

Como sempre, isso depende de sua situação.

Na minha experiência, atualmente (2008) OpenGL qualidade driver no Windows é muito pior do que a qualidade do driver Direct3D. Se a sua situação é tal que você não pode razoavelmente exigir que seus clientes sempre têm drivers up-to-date, ou dizer-lhes para mudar suas placas gráficas para os que têm melhor Drivers OpenGL, então OpenGL é uma má escolha bonita. Neste caso, eu iria para renderizador D3D no Windows e OpenGL renderizador no OS X / Linux (se você tem de apoiar essas plataformas, que é).

Ter dois representantes não é que difícil; na minha experiência de trabalho em torno de erros motorista leva muito mais tempo do que escrever e apoiar os caminhos de código de renderização.

É claro, existem algumas situações (específicas) onde D3D simplesmente não têm os recursos necessários, por exemplo, quad-tamponada saída bloqueado for; ou suporte geometria shader no Windows XP.

Assim, em breve: se você quer melhores condutores no Windows, utilize D3D. Se você não se preocupam com a qualidade do driver muito, ou precisa de recursos que estão em OpenGL, mas não em D3D, em seguida, usar OpenGL.

Talvez você deve tentar uma camada de abstração, como OGRE , que permite alternar entre DirectX e OpenGL sem ter para reescrever alguma coisa? Ele também adiciona um monte de funcionalidade, e não é orientada para o jogo, mas bastante genérico.

Esta não responder diretamente sua pergunta (sorry), mas eu era um dos caras originais trabalhando em Direct3D e hehe:

Existem bibliotecas scenegraph para Direct3D?

Direct3D (nee Reality Lab) usado para ser apenas uma biblioteca scenegraph: -)

A vergonha que Direct3D Retained Mode não é enviado mais ...

Direct3D está disponível apenas no Windows e XBox. Se você está pensando em alvo Unix ou Mac, além de Windows, OpenGL é uma boa escolha.

Para mim, falando como um programador de gráficos em uma grande empresa de CAD, existem atualmente três coisas que retêm OpenGL de sendo abandonada em favor de Direct3D (10/11) para aplicações CAD / DCC existente:

  1. Legado . A maioria dos softwares CAD são mais ou menos mal apertado para conceitos OpenGL. reescrevendo tudo em torno de D3D filosofia nem sempre é gerenciável (Tecnicamente falando e, dependendo da capacidade / vontade do empresa a lançar recursos para isso).

    Em segundo lugar, poderia ter negativo impactos se algo der errado (Funcionalidades de falar e / ou desempenho sábio) e companhia seria apenas não correr o risco de atrasar um grande lançamento por causa de um interruptor de API e arquitetura.

  2. Povos . Povos nessas indústrias old-boy são bastante conservador. Eles preferem gastar dinheiro / hora sobre como lidar com IHVs sobre tudo driver OpenGL questões que poderiam ter ou simplesmente não irá recomendar o uso de gráficos a partir de um determinado IHV (por exemplo Intel ou ATI).

    Além disso, acredito que os clientes da indústria automotiva / aeroespaciais como Boeing, Airbus, TMC, BMW, etc Não me importo que muito de ter Quadros única estação de trabalho. ferragens ainda é mais barato em relação ao software preços de licença.

  3. tendências Future . com futuro geração de processadores como Llano, Larrabee, Fermi e os produtos que vai seguir, é definitivamente vale a pena investir orçamentos de P & D sobre a forma de programa e desenvolver novos línguas / apis / frameworks para os futuros hardwares (em termo de gráficos, bem como as tarefas não-gráficos).

    indústria CAD tem um enorme ciclos e não se moverá se não para uma tecnologia verdadeiramente disruptiva. Então D3D poder acabado de chegar um pouco tarde para grandes jogadores CAD (exceto Autodesk é claro que é um caso particular).

Não é uma resposta como tal, mas é interessante notar as últimas versões do AutoCAD dar-lhe uma escolha entre o uso de drivers OpenGL ou Direct3D na opção de configuração "config3d". Fundamentalmente, o AutoCAD é um Windows-aplicativo só por isso fazia sentido para eles (finalmente) o apoio Direct3D. Ver página 15 do Este white paper da AutoDesk para mais informações .

A resposta todo mundo quer acreditar que é sim, mas a verdadeira resposta é: depende.

Cerca de 50% de todo o hardware lá fora não será executado OpenGL a qualquer nível razoável. Para ver um exemplo disso, leia o FAQ para o Google Sketchup que usa OpenGL

desempenho do SketchUp depende fortemente o driver da placa gráfica e sua capacidade de suporte a OpenGL 1.5 ou superior. Historicamente, as pessoas têm visto problemas com ATI Radeon e cartões baseados em Intel com SketchUp. Nós não recomendamos o uso destas placas gráficas com SketchUp neste momento. ( Hardware ans de software requisitos para Google Sketchup

Então, se você estiver escrevendo um aplicativo CAD e você não se importa de dizer a seus clientes "você deve ter uma placa de vídeo complient OpenGL", então a resposta é sim.

Se em vez você está criando um aplicativo do usuário final (Google Earth, por exemplo), então a resposta triste é que você terá que escrever tanto uma versão D3D e GL do seu aplicativo se você quiser chegar a todo o mercado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top