É possível escrever um jogo que não requer uma GPU?

8

Eu já sei que muitos computadores hoje têm uma GPU compatível com DirectX e OpenGL. Mas e os computadores que não? Posso escrever um jogo 2D simples que não dependa da GPU, para que funcione mesmo em máquinas mais antigas?

Existe uma biblioteca de jogos C ou C ++ multiplataforma que me permita fazer isso? Idealmente, essa biblioteca me permitiria alternar a aceleração de hardware com muito poucas linhas de código.

user999687
fonte
Você pode até fazê-lo em 3D, o primeiro torneio irreal executado na CPU.
achou
Quantos anos você está pensando? praticamente qualquer coisa que ainda esteja em execução suporta alguma variante do OpenGL ou DirectX.
3Dave
@ DavidLively Eu sei que posso parecer um pouco "antigo", mas ainda há usuários com harware antigo, incluindo o uso da memória de vídeo da placa-mãe (eles não suportam DirectX ou OpenGL, pelo menos para os antigos). Além disso, a partir das respostas que recebi, não é difícil alternar a aceleração de hardware, por isso é um grande negócio de qualquer maneira.
user999687
As GPUs aceleradas por hardware de um tipo ou de outro são padrão há muito tempo. Você também planeja direcionar o Windows 98, máquinas com CPUs abaixo de 200 MHz ou 64 MB de RAM?
11
GPUs completamente desnecessárias: igf.com/php-bin/entry2012.php?id=56
michael.bartnett

Respostas:

6

Certamente, você pode usar SDL e acredito que ele faz tudo na CPU por padrão. Você pode realmente obter um desempenho muito bom se gerenciar bem seu código.

ultifinito
fonte
Obrigado! SDL é uma das bibliotecas de jogos que eu vou escolher (junto com Allegro).
user999687
2

Você acha que Pong usou uma GPU?

Os jogos em Flash que você joga na Web o tempo todo, você acha que eles usam uma GPU?

(São apenas nessas últimas semanas que os jogos em Flash podem finalmente ser desenvolvidos para usar o suporte a GPU. E o Flash existe há consideravelmente mais de uma década.)

Claro que é possível. Eu jogava games há uma década antes de existir uma placa gráfica acelerada para o mercado consumidor, sem falar em processadores Turing completos dedicados a gráficos (e mais especificamente, a gráficos de jogos).

Engenheiro
fonte
Obrigado pela resposta. Fiquei confuso, já que agora as únicas coisas que posso ver são o DirectX e o OpenGL, ou outras bibliotecas de jogos que suportam esses dois (pelo menos, em relação ao C / C ++).
user999687
Esta resposta é falsa - Pong não tinha uma GPU, mas também não tinha uma CPU. Jogos muito antigos usavam chips TTL e nada que reconheceríamos hoje como um computador programável.
@JoeWreschnig (a) CPU! = Microprocessador. Reserve um tempo para ler algumas das literaturas mais antigas e você determinará rapidamente que o uso de TTL em uma CPU não impediu magicamente que ela fosse uma CPU. Uma CPU é um papel na arquitetura de computadores na qual o TTL era a tecnologia fundamental na época. (b) Você precisa reler a definição de falso , porque é claro que você não sabe como usá-lo.
Engenheiro
@ Nick: Exceto que não era uma CPU implementada em TTL, o jogo foi implementado em TTL. Não era um computador programável e, portanto, não havia CPU.
@JoeWreschnig Isso era uma CPU. "A unidade central de processamento (CPU) é a parte de um sistema de computador que executa as instruções de um programa de computador para executar as operações aritméticas, lógicas e de entrada / saída básicas do sistema". Essa é a definição. Eles existem desde os anos 40. Suas opiniões sobre o que constitui uma CPU são imprecisas. Em nenhum lugar você encontrará uma definição que exija programabilidade (isto é, instruções codificadas por software).
Engenheiro
2

Não se esqueça, os videogames de primeira geração foram criados para um osciloscópio! E por videogames de primeira geração, quero dizer pong. Lembre-se de uma GPU, é um processador matemático, que também é o que é uma CPU. É apenas mais especializado.

MGZero
fonte
1

É absolutamente possível: os primeiros jogos de computador existiram antes das GPUs - que, como você aponta, são hardware projetado para acelerar a matemática 3D. Tudo o que está sendo feito na GPU também pode ser feito na CPU, embora geralmente em uma velocidade geral mais lenta. (A versão inicial do Quake, por exemplo, usava apenas renderização de software [1] )

Mesa3D é uma implementação OpenGL que alega suporte à renderização de software completo. (Eu não o usei a não ser como uma implementação de referência).

Clayton Hughes
fonte
"Geralmente a uma velocidade mais lenta" é altamente subjetivo e, como uma afirmação geral, é muito pobre na compreensão das diferenças. Um resumo simples é que as operações que se encaixam bem no paradigma SIMD e que minimizam a lógica condicional são boas escolhas para a GPU. Isso inclui tarefas do tipo de processamento de números em massa, como envio de pixel bruto ou processamento de vértice, enquanto as CPUs são o cavalo de batalha e o delegador de uso geral. Em pesquisas de ponta sobre radiodifusão em tempo real e iluminação global, as subpartes dos algoritmos usados ​​são delegadas com muito cuidado para extrair o desempenho ideal da CPU e da GPU.
Engenheiro de
2
Prefiro não debater a semântica de "geralmente" e "geral". Eu esperava que fosse uma afirmação vaga o suficiente: em geral, considerando os custos indiretos dos trabalhos de remessa para a GPU, conseguir fazer toneladas de operações paralelas há uma vitória, embora possa haver alguns casos em que isso não seja verdade.
Clayton Hughes
É justo dizer que existem tantos casos em que sua afirmação original não é verdadeira, quanto onde está. E, a menos que você tenha uma solução especificamente adequada para essas operações paralelas, não, não será mais rápido, pode ser muito mais lento. Talvez seja melhor apenas representar os fatos com mais precisão do que tentar evitar um "debate". Vamos tentar não enganar ninguém.
Engenheiro de
1

se for apenas para jogos em 2D, sugiro que você use um flash 10ou SDL, mas se você acha que seu jogo pode conter recursos 3D e renderização, também pode usar o Irrlicht . é basicamente um mecanismo 3D multiplataforma de código aberto com suporte para renderização de hardware e software:

do wiki:

O Irrlicht suporta renderização em 3D via OpenGL, DirectX 8 e 9, OpenGL ES e rasterizadores de software interno.

Ali1S232
fonte
-1

Enquanto o que você pede é possível, é importante notar que geralmente não há praticamente nenhuma vantagem em descartar a aceleração 3D. Todos os PCs modernos possuem aceleração 3D. As poucas máquinas antigas sem esse recurso constituem um mercado de jogos extremamente pequeno, e você provavelmente teria outros problemas de compatibilidade com elas também.

Receio que você esteja fazendo esta pergunta pelo motivo errado.

aaaaaaaaaaaa
fonte
Eu estava apenas procurando uma maneira de criar um jogo bastante disponível para todos, mesmo para usuários com hardware mais antigo. Além disso, como eu disse, solicitei uma biblioteca de jogos de plataforma cruzada, então obviamente esperava alguma perda de compatibilidade (para plataformas de hardware específicas), mas pelo menos tive que programar menos e ainda ter um produto direcionado para uma grande parte dos usuários . Bom ponto, porém, eu gostaria de ter um jogo disponível para (quase) todos. Mas como ainda sou novato e não codifico para várias plataformas, acho que esse é o caminho a seguir - pelo menos por enquanto.
user999687
Como novato, você deve, em primeiro lugar, obter uma biblioteca fácil de usar, não estou dizendo que não poderia ser não acelerada, mas o critério não facilitará a pesquisa.
Aaaaaaaaaaaa