Est-il possible d'écrire un jeu qui ne nécessite pas de GPU?

8

Je sais déjà que de nombreux ordinateurs ont aujourd'hui un GPU qui prend en charge DirectX et OpenGL. Mais qu'en est-il des ordinateurs qui n'en ont pas? Puis-je écrire un jeu 2D simple qui ne dépend pas du GPU, de sorte qu'il fonctionne même sur des machines plus anciennes?

Existe-t-il une bibliothèque de jeux multiplateforme C ou C ++ qui me permettra de faire cela? Idéalement, une telle bibliothèque me permettrait de basculer l'accélération matérielle avec très peu de lignes de code.

user999687
la source
Vous pouvez même le faire en 3D, le premier tournoi Unreal s'est déroulé sur le CPU.
Peter Ølsted
Quel âge pensez-vous? à peu près tout ce qui est toujours en cours d'exécution prend en charge une variante d'OpenGL ou DirectX.
3Dave
@DavidLively Je sais que je peux sembler un peu "vieux" mais il y a toujours des utilisateurs qui ont du vieux matériel, y compris en utilisant la mémoire vidéo de la carte mère (ils ne supportent pas DirectX ou OpenGL, au moins pour les anciens). De plus, d'après les réponses que j'ai reçues, il n'est pas difficile de basculer entre l'accélération matérielle, c'est donc un gros problème de toute façon.
user999687
Les GPU à accélération matérielle d'un type ou d'un autre sont standard depuis longtemps. Envisagez-vous également de cibler Windows 98, des machines avec des processeurs inférieurs à 200 MHz ou 64 Mo de RAM?
1
GPUs complètement inutile: igf.com/php-bin/entry2012.php?id=56
michael.bartnett

Réponses:

6

Certes, vous pouvez utiliser SDL et je crois qu'il fait tout sur le CPU par défaut. Vous pouvez réellement obtenir de très bonnes performances si vous gérez bien votre code.

ultifinitus
la source
Merci! SDL est l'une des bibliothèques de jeux que je vais choisir (ensemble avec Allegro).
user999687
2

Pensez-vous que Pong a utilisé un GPU?

Les jeux Flash auxquels vous jouez tout le temps sur le web, pensez-vous qu'ils utilisent un GPU?

(Ce n'est que ces dernières semaines que les jeux Flash peuvent enfin être développés pour utiliser le support GPU. Et Flash existe depuis bien plus d'une décennie.)

Bien sûr, c'est possible. Je jouais à des jeux depuis une décennie avant qu'il n'y ait même une telle carte graphique accélérée pour le marché grand public, sans parler de processeurs Turing complets complets dédiés aux graphiques (et plus spécifiquement, aux graphiques de jeux).

Ingénieur
la source
Merci pour la réponse. J'étais juste confus, car maintenant les seules choses que je peux voir sont DirectX et OpenGL, ou d'autres bibliothèques de jeux qui prennent en charge ces deux (au moins, en ce qui concerne C / C ++).
user999687
Cette réponse est fallacieuse - Pong n'avait pas de GPU, mais il n'avait pas non plus de CPU. Les tout premiers jeux utilisaient des puces TTL et rien que nous reconnaissions aujourd'hui comme un ordinateur programmable.
@JoeWreschnig (a) CPU! = Microprocesseur. Prenez le temps de lire une partie de la littérature plus ancienne et vous constaterez rapidement que l'utilisation de TTL dans un CPU ne l'a pas empêché par magie de devenir un CPU. Un CPU est un rôle dans l'architecture informatique dans lequel TTL était la technologie fondamentale à l'époque. (b) Vous devez aller relire la définition de faux , car il est clair que vous ne savez pas comment l'utiliser.
Ingénieur
@ Nick: Sauf que ce n'était pas un CPU implémenté en TTL, le jeu a été implémenté en TTL. Ce n'était pas un ordinateur programmable, et donc il n'y avait pas de CPU.
@JoeWreschnig C'était une unité centrale de traitement. "L'unité centrale de traitement (CPU) est la partie d'un système informatique qui exécute les instructions d'un programme informatique pour exécuter les opérations arithmétiques, logiques et d'entrée / sortie de base du système." Voilà la définition. Ils existent depuis les années 40. Vos opinions sur ce qui constitue un processeur sont inexactes. Vous ne trouverez nulle part une définition qui nécessite une programmabilité (c'est-à-dire des instructions codées par logiciel).
Ingénieur
2

N'oubliez pas, les jeux vidéo de première génération ont été écrits pour un oscilloscope! Et par jeux vidéo de première génération, je veux dire pong. Un GPU rappelez-vous, est un processeur mathématique, qui est aussi ce qu'est un CPU. C'est juste plus spécialisé.

MGZero
la source
1

C'est tout à fait possible: les premiers jeux informatiques existaient avant les GPU - qui, comme vous le faites remarquer, sont des matériels conçus pour accélérer les mathématiques 3D. Tout ce qui est fait sur le GPU peut également être fait sur le CPU, bien que généralement à une vitesse globale plus lente. (La version initiale de Quake, par exemple, utilisait uniquement le rendu logiciel [1] )

Mesa3D est une implémentation OpenGL qui prétend prendre en charge le rendu logiciel complet. (Je ne l'ai pas utilisé autrement que comme implémentation de référence, cependant).

Clayton Hughes
la source
"Habituellement à une vitesse plus lente" est très subjectif et, en général, assez mal compris des différences. Un aperçu simple est que les opérations qui correspondent bien au paradigme SIMD et qui minimisent la logique conditionnelle sont de bons choix pour le GPU. Cela inclut des tâches de type crunching de masse telles que la poussée de pixels bruts ou le traitement de vertex, tandis que les processeurs sont le cheval de bataille et le délégant à usage général. Dans la recherche de pointe sur la diffusion de rayons en temps réel et l'éclairage global, les sous-parties des algorithmes utilisés sont déléguées très soigneusement pour extraire les performances optimales du CPU et du GPU.
Ingénieur
2
Je préfère ne pas débattre de la sémantique du «habituellement» et du «global». J'avais espéré que c'était une affirmation assez vague: en général, compte tenu des frais généraux liés à l'expédition des travaux au GPU, faire des tonnes d'opérations parallèles, il y a une victoire, bien qu'il puisse y avoir des cas où ce n'est pas vrai.
Clayton Hughes
Il est juste de dire qu'il y a autant de cas où votre déclaration originale n'est pas vraie, que où elle l'est. Et à moins que vous n'ayez une solution spécifiquement adaptée à ces opérations parallèles, non, ce ne sera pas plus rapide, cela peut en fait être beaucoup plus lent. Peut-être vaut-il mieux représenter les faits avec plus de précision que d'essayer d'éviter un "débat". Essayons de ne tromper personne.
Ingénieur
1

s'il ne s'agit que de jeux 2D, je vous suggère d'utiliser soit flash 10ou SDL, mais si vous pensez que votre jeu peut contenir des ressources 3D et un rendu, vous pouvez également utiliser Irrlicht . il s'agit essentiellement d'un moteur 3D multiplateforme open source avec prise en charge du rendu matériel et logiciel:

du wiki:

Irrlicht prend en charge le rendu 3D via OpenGL, DirectX 8 et 9, OpenGL ES et les rastériseurs logiciels internes.

Ali1S232
la source
-1

Bien que ce que vous demandez soit possible, il convient de noter qu'il n'y a généralement pratiquement aucun avantage à ignorer l'accélération 3D. Tous les PC modernes ont une accélération 3D intégrée. Les quelques vieilles machines sans cette fonctionnalité constituent un marché des jeux extrêmement petit, et vous auriez probablement d'autres problèmes de compatibilité avec ceux-ci également.

Je crains que vous posiez cette question pour la mauvaise raison.

aaaaaaaaaaaa
la source
Je cherchais simplement un moyen de créer un jeu assez accessible à tous, même pour les utilisateurs ayant un matériel plus ancien. De plus, comme je l'ai dit, j'ai demandé une bibliothèque de jeux multiplateforme, donc je m'attendais évidemment à une perte de compatibilité (pour des plates-formes matérielles spécifiques), mais au moins je devais programmer moins et avoir toujours un produit ciblé pour une grande partie des utilisateurs . Bon point cependant, j'aimerais avoir un jeu disponible pour (presque) tout le monde. Mais comme je suis toujours novice et que je ne vais pas coder pour plusieurs plates-formes, je pense que c'est la voie à suivre --- du moins pour l'instant.
user999687
En tant que débutant, vous devez d'abord obtenir une bibliothèque facile à utiliser, je ne dis pas qu'elle ne pourrait pas être non accélérée, mais le critère ne va pas faciliter la recherche.
aaaaaaaaaaaa