• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

LittleJoe

Win32 API e rapidez de desempenho

22 mensagens neste tópico

Olá!... Aqui estou eu outra vez.  :D

Gostaria de saber se o WFC, o wxWidgets ou o WTL também são utilizados nos jogos 3D comerciais e para fazer outro software de rápido desempenho para Windows, ou se essa tarefa é do domínio absoluto do Win32 API, que embora não seja orientado para o objecto tem uma maior rapidez de desempenho do que os restantes. Será que o alto desempenho do Win32 API compensa nestes casos?

Agradeço resposta.  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qualquer toolkit que utilizes vai adicionar algum overhead ao código que escreves. Dentro dos que apresentaste, wxWidgets não conheço; MFC (suponho que era o que querias dizer com WFC) é pesado; WTL, sendo mais leve que MFC, também tem os seus custos. Normalmente quando se programa em 3D é desejado o menor overhead possível, e nesse caso o melhor é mesmo utilizar directamente Win32 para criar a janela e tratar do input.

No entanto, dependendo do nível de exigência pretendido, utilizar um desses toolkits pode simplificar muito o processo. É tudo uma questão de pesar os prós e os contras e tomar uma decisão. Pessoalmente, prefiro utilizar directamente Win32.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qualquer toolkit que utilizes vai adicionar algum overhead ao código que escreves. Dentro dos que apresentaste, wxWidgets não conheço; MFC (suponho que era o que querias dizer com WFC) é pesado; WTL, sendo mais leve que MFC, também tem os seus custos. Normalmente quando se programa em 3D é desejado o menor overhead possível, e nesse caso o melhor é mesmo utilizar directamente Win32 para criar a janela e tratar do input.

No entanto, dependendo do nível de exigência pretendido, utilizar um desses toolkits pode simplificar muito o processo. É tudo uma questão de pesar os prós e os contras e tomar uma decisão. Pessoalmente, prefiro utilizar directamente Win32.

Muito obrigado pela resposta TheDark.  :D

Em relação ao WFC, era de facto MFC que queria dizer. É que quando escrevi isto, estava com vontade de ir ao WC, por isso é que pus WFC.  :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Neste caso para criar a janela, não interessa o toolkit que usas. Depois de estar a janela criada, o overhead vai ser praticamente o mesmo. Tens um buffer qualquer, que vai ser actualizado com o OpenGL ou DirectX. O único overhead pode ser no código de inicialização do toolkit.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O único overhead pode ser no código de inicialização do toolkit.

Não te esqueças do tratamento do input.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não te esqueças do tratamento do input.

Sim, tens razão. Mas o overhead disso não costuma ser muito significante.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, lá está. Depende da máquina utilizada e da exigência da aplicação :cheesygrin:

Se for para girar um cubo num Core 2 Quad com uma GeForce 9800 é uma gota num oceano. Se for para jogar UT3 num Pentium 3 com uma Voodoo 3... não corre ::D nem anda... acho que nem se arrasta!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, lá está. Depende da máquina utilizada e da exigência da aplicação :cheesygrin:

Se for para girar um cubo num Core 2 Quad com uma GeForce 9800 é uma gota num oceano. Se for para jogar UT3 num Pentium 3 com uma Voodoo 3... não corre ::D nem anda... acho que nem se arrasta!

Não tinha noção que fosse assim tão grande o overhead adicionado por um toolkit. Isso também se aplica a bibliotecas como SDL?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tinha noção que fosse assim tão grande o overhead adicionado por um toolkit. Isso também se aplica a bibliotecas como SDL?

Oi Tritton.  :D Já que falaste no SDL, penso que o open source (Opensource, opensource, open-source???) "Battle for Wesnoth" http://www.wesnoth.org/ está a ser feito recorrendo ao SDL. No entanto é um jogo 2D de estratégia, penso que aqui a velocidade não é essencial. Mas é só a minha opinião de principiante.  :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tinha noção que fosse assim tão grande o overhead adicionado por um toolkit. Isso também se aplica a bibliotecas como SDL?

Não é que o overhead seja gigante, é mais no sentido que em código pesado todos os ciclos contam.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Oi Tritton.  :D Já que falaste no SDL, penso que o open source (Opensource, opensource, open-source???) "Battle for Wesnoth" http://www.wesnoth.org/ está a ser feito recorrendo ao SDL. No entanto é um jogo 2D de estratégia, penso que aqui a velocidade não é essencial. Mas é só a minha opinião de principiante.  :cheesygrin:

Existem muitos jogos comerciais em Linux (em Windows conheço), tais como o Quake 4 e Civilization, que usam o SDL em Linux como backend de input e para criação de janelas. Por isso é que estava curioso se esse overhead era só em toolkits GUI como wxWidgets ou também em bibliotecas multimédia como SDL.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Existem muitos jogos comerciais em Linux (em Windows conheço), tais como o Quake 4 e Civilization, que usam o SDL em Linux como backend de input e para criação de janelas. Por isso é que estava curioso se esse overhead era só em toolkits GUI como wxWidgets ou também em bibliotecas multimédia como SDL.

Em relação ao Linux não posso dar a minha opinião, porque não o utilizo. Mas em relação ao SDL no Windows, já vi em vários blogs que para aplicações 3D só se pode utilizar OpenGL, que é muito limitado, não se pode associar o DirectX e o SDL. E o DirectX facilita as coisas, e de que maneira, sobretudo associado a um software de desenho a 3D, como por exemplo o Blender. Mas isto é o que eu tenho visto nos blogs, o que muitas vezes pode não corresponder à realidade. Se achas que o DirectX não é incompatível com o SDL, então agradecia muito que me desses uma apitadela.  :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em relação ao Linux não posso dar a minha opinião, porque não o utilizo. Mas em relação ao SDL no Windows, já vi em vários blogs que para aplicações 3D só se pode utilizar OpenGL, que é muito limitado, não se pode associar o DirectX e o SDL. E o DirectX facilita as coisas, e de que maneira, sobretudo associado a um software de desenho a 3D, como por exemplo o Blender. Mas isto é o que eu tenho visto nos blogs, o que muitas vezes pode não corresponder à realidade. Se achas que o DirectX não é incompatível com o SDL, então agradecia muito que me desses uma apitadela.  :cheesygrin:

Não sei porque dizes que OpenGL é muito limitado, está pelo menos ao nível de DirectX 9. E porque dizes que DirectX facilita as coisas? E porquê sobretudo associado a um modelador 3D? Agora estou curioso. :D

Quanto ao SDL com DirectX, tenho aqui um exemplo guardado nos favoritos que passo a partilhar: http://www.gamedev.net/reference/programming/features/dx9sdl/

Não me perguntes se funciona bem, o meu mini motor 3D ainda só trabalho com SDL e OpenGL, o que para dizer a verdade tem funcionado sem grandes problemas. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qualquer toolkit que utilizes vai adicionar algum overhead ao código que escreves. Dentro dos que apresentaste, wxWidgets não conheço; MFC (suponho que era o que querias dizer com WFC) é pesado; WTL, sendo mais leve que MFC, também tem os seus custos. Normalmente quando se programa em 3D é desejado o menor overhead possível, e nesse caso o melhor é mesmo utilizar directamente Win32 para criar a janela e tratar do input.

No entanto, dependendo do nível de exigência pretendido, utilizar um desses toolkits pode simplificar muito o processo. É tudo uma questão de pesar os prós e os contras e tomar uma decisão. Pessoalmente, prefiro utilizar directamente Win32.

TheDark, já me esquecia, disseste que não conhecias o wxWidgets, pois aqui tens o link: http://www.wxwidgets.org/downloads/  :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei porque dizes que OpenGL é muito limitado, está pelo menos ao nível de DirectX 9. E porque dizes que DirectX facilita as coisas? E porquê sobretudo associado a um modelador 3D? Agora estou curioso. :D

Quanto ao SDL com DirectX, tenho aqui um exemplo guardado nos favoritos que passo a partilhar: http://www.gamedev.net/reference/programming/features/dx9sdl/

Não me perguntes se funciona bem, o meu mini motor 3D ainda só trabalho com SDL e OpenGL, o que para dizer a verdade tem funcionado sem grandes problemas. :P

Em primeiro lugar, afinal provaste-me que o SDL e o DirectX não são incompatíveis.  :notworthy:

O que mostra que muitos blogs na net não passam de treta.

Em relação ao modelador 3D, pode-se moldar um objecto em 3D por exemplo no Blender, aplicar-se-lhe uma textura, e depois exportá-lo num ficheiro .x. Depois é utilizar o DirectX par o carregar no código fonte. Um bom exemplo são os ficheiros .x dos tutoriais e demos do DirectX SDK de Agosto de 2007 (é o que eu tenho).  :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em primeiro lugar, afinal provaste-me que o SDL e o DirectX não são incompatíveis.  :notworthy:

O que mostra que muitos blogs na net não passam de treta.

Em relação ao modelador 3D, pode-se moldar um objecto em 3D por exemplo no Blender, aplicar-se-lhe uma textura, e depois exportá-lo num ficheiro .x. Depois é utilizar o DirectX par o carregar no código fonte. Um bom exemplo são os ficheiros .x dos tutoriais e demos do DirectX SDK de Agosto de 2007 (é o que eu tenho).  :cheesygrin:

Então a única "limitação" que vês no OpenGL é não poder fazer loading directo de formatos 3D? :P

Sim, para pequenos protótipos o formato .X é porreiro, e talvez seja mais fácil utilizar o loading directo no DirectX.

Mas isso não significa que OpenGL seja limitado. :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então a única "limitação" que vês no OpenGL é não poder fazer loading directo de formatos 3D? :P

Sim, para pequenos protótipos o formato .X é porreiro, e talvez seja mais fácil utilizar o loading directo no DirectX.

Mas isso não significa que OpenGL seja limitado. :thumbsup:

Oi desde ontem.

Atenção... Não sou eu que digo que o OpenGL é mais limitado do que o DirectX, apenas me limito a referir o que encontro em vários fóruns (que talvez estejam a serviço da Microsoft, não sei...). Já estou farto de dizer que sou principiante nisto. Longe de mim estar a tentar a ensinar a missa ao vigário. Quem tem que aprender aqui sou eu. Se ficaste chateado com o que eu disse a respeito do OpenGL, não é a mim que tens de dizer isso, mas sim à Microsoft. Aliás, até acho que tens razão quando dizes que o loading directo dos formatos 3D é a única vantagem do DirectX, de resto... é só ver aqui neste link http://www.winmatrix.com/forums/index.php?showtopic=13647  :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Atenção... Não sou eu que digo que o OpenGL é mais limitado do que o DirectX, apenas me limito a referir o que encontro em vários fóruns (que talvez estejam a serviço da Microsoft, não sei...).

Existe muita informação na internet. Mas ainda existe mais desinformação. É preciso ter muito cuidado quando se lê seja o que for na internet.

Já estou farto de dizer que sou principiante nisto. Longe de mim estar a tentar a ensinar a missa ao vigário. Quem tem que aprender aqui sou eu. Se ficaste chateado com o que eu disse a respeito do OpenGL, não é a mim que tens de dizer isso, mas sim à Microsoft.

Quem tem que aprender aqui és tu e eu. Não penses que eu sei grande coisa disto. :thumbsup:

Aliás, até acho que tens razão quando dizes que o loading directo dos formatos 3D é a única vantagem do DirectX, de resto... é só ver aqui neste link http://www.winmatrix.com/forums/index.php?showtopic=13647  :(

Onde é que falam nesse link das vantagens/desvantagens/limitações do DirectX em relação ao OpenGL? Ainda por cima um fórum de gamers, não me parece o melhor local para obter informação técnica. :P

Repara que eu não falei em vantagens. Falei em limitações. O DirectX tem várias vantagens, como uma API mais moderna e várias bibliotecas de ajuda, como biblioteca de matemática 3D, rotinas para tratamento de input, rotinas para tocar músicas e coisas do género. Agora em relação ao 3D, penso que o OpenGL não tem qualquer limitação. Aliás, o OpenGL expõe mais funcionalidades da placa gráfica (através de extensões) do que o DirectX, que tem um conjunto de funcionalidades fixas. Por exemplo, podes usar Geometry Shaders em OpenGL 2 mas tal não é possível em DirectX 9.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Existe muita informação na internet. Mas ainda existe mais desinformação. É preciso ter muito cuidado quando se lê seja o que for na internet.

Quem tem que aprender aqui és tu e eu. Não penses que eu sei grande coisa disto. :thumbsup:

Onde é que falam nesse link das vantagens/desvantagens/limitações do DirectX em relação ao OpenGL? Ainda por cima um fórum de gamers, não me parece o melhor local para obter informação técnica. :P

Repara que eu não falei em vantagens. Falei em limitações. O DirectX tem várias vantagens, como uma API mais moderna e várias bibliotecas de ajuda, como biblioteca de matemática 3D, rotinas para tratamento de input, rotinas para tocar músicas e coisas do género. Agora em relação ao 3D, penso que o OpenGL não tem qualquer limitação. Aliás, o OpenGL expõe mais funcionalidades da placa gráfica (através de extensões) do que o DirectX, que tem um conjunto de funcionalidades fixas. Por exemplo, podes usar Geometry Sahders em OpenGL 2 mas tal não é possível em DirectX 9.

Mas estás a dar-me razão... Mesmo sendo um fórum de gamers, no link que te dei, os comentários não são necessários pra nada. As imagens falam por si. Até fiquei de boca aberta.  ??? Nem os melhores exemplos do DirectX 10 chegam aos calcanhares do realismo do OpenGL 2.1. Impressionante... Isto, claro, partindo do princípio da alegada autenticidade destas fontes.  :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas estás a dar-me razão... Mesmo sendo um fórum de gamers, no link que te dei, os comentários não são necessários pra nada. As imagens falam por si. Até fiquei de boca aberta.  ??? Nem os melhores exemplos do DirectX 10 chegam aos calcanhares do realismo do OpenGL 2.1. Impressionante... Isto, claro, partindo do princípio da alegada autenticidade destas fontes.  :(

Um conjunto de imagens arranjadas por um gajo qualquer na internet não dizem nada acerca das capacidades de uma API gráfica. Nem mesmo usando os jogos e aplicações existentes é possível dizer tal coisa. Repara, tanto o DirectX como o OpenGL são apenas um motor para a placa gráfica. O aspecto gráfico não depende apenas das capacidades da placa gráfica, mas também dos artistas. Hoje em dia tanto OpenGL como DirectX têm praticamente as mesmas capacidades.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Um conjunto de imagens arranjadas por um gajo qualquer na internet não dizem nada acerca das capacidades de uma API gráfica. Nem mesmo usando os jogos e aplicações existentes é possível dizer tal coisa. Repara, tanto o DirectX como o OpenGL são apenas um motor para a placa gráfica. O aspecto gráfico não depende apenas das capacidades da placa gráfica, mas também dos artistas. Hoje em dia tanto OpenGL como DirectX têm praticamente as mesmas capacidades.

Right!  Tenho que te dar razão. :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora