¿Es posible escribir un juego que no requiera una GPU?

8

Ya sé que muchas computadoras tienen una GPU que admite DirectX y OpenGL. ¿Pero qué pasa con las computadoras que no lo hacen? ¿Puedo escribir un juego 2D simple que no dependa de la GPU, para que funcione incluso en máquinas más antiguas?

¿Existe una biblioteca de juegos multiplataforma C o C ++ que me permita hacer esto? Idealmente, una biblioteca de este tipo me permitiría alternar la aceleración de hardware con muy pocas líneas de código.

user999687
fuente
Incluso puedes hacerlo en 3D, el primer Torneo Unreal se ejecutó en la CPU.
Peter Ølsted
¿Cuántos años estás pensando? casi todo lo que todavía se está ejecutando es compatible con alguna variante de OpenGL o DirectX.
3Dave
@DavidLively Sé que puedo sonar un poco "viejo", pero todavía hay usuarios que tienen hardware antiguo, incluido el uso de la memoria de video de la placa base (no son compatibles con DirectX ni OpenGL, al menos para los viejos). Además, según las respuestas que obtuve, no es difícil alternar la aceleración de hardware, por lo que es un gran problema de todos modos.
user999687
Las GPU aceleradas por hardware de un tipo u otro han sido estándar durante mucho tiempo. ¿También planea apuntar a Windows 98, máquinas con CPU de menos de 200MHz o 64MB de RAM?
1
GPU completamente innecesarias: igf.com/php-bin/entry2012.php?id=56
michael.bartnett

Respuestas:

6

Ciertamente, puede usar SDL y creo que hace todo en la CPU de forma predeterminada. En realidad, puede obtener un rendimiento bastante bueno si administra bien su código.

ultifinitus
fuente
¡Gracias! SDL es una de las bibliotecas de juegos que voy a elegir (junto con Allegro).
user999687
2

¿Crees que Pong usó una GPU?

Los juegos Flash que juegas en la web todo el tiempo, ¿crees que usan una GPU?

(Solo en estas últimas semanas se pueden desarrollar juegos Flash para utilizar la GPU. Y Flash ha existido por más de una década).

Por supuesto que es posible. Había estado jugando juegos durante una década antes de que existiera incluso una tarjeta gráfica acelerada para el mercado de consumo, y mucho menos procesadores completos de Turing dedicados a los gráficos (y más específicamente, a los gráficos de juegos).

Ingeniero
fuente
Gracias por la respuesta. Estaba confundido, ya que ahora lo único que puedo ver es DirectX y OpenGL, u otras bibliotecas de juegos que admiten esos dos (al menos, con respecto a C / C ++).
user999687
Esta respuesta es falsa: Pong no tenía una GPU, pero tampoco tenía una CPU. Los primeros juegos usaban chips TTL y nada que reconozcamos hoy como una computadora programable.
@JoeWreschnig (a) CPU! = Microprocesador. Tómese el tiempo para leer parte de la literatura anterior y determinará rápidamente que el uso de TTL en una CPU no impidió mágicamente que sea una CPU. Una CPU es un papel en la arquitectura de la computadora en la que TTL era la tecnología fundamental en ese momento. (b) Debe ir y volver a leer la definición de falsa , porque está claro que no sabe cómo usarla.
Ingeniero
@Nick: Excepto que no se implementó una CPU en TTL, el juego se implementó en TTL. No era una computadora programable, por lo que no había CPU.
@JoeWreschnig Eso fue una CPU. "La unidad central de procesamiento (CPU) es la parte de un sistema informático que lleva a cabo las instrucciones de un programa informático para realizar las operaciones aritméticas, lógicas y de entrada / salida básicas del sistema". Esa es la definición. Han existido desde los años 40. Sus puntos de vista sobre lo que constituye una CPU son inexactos. En ninguna parte encontrará una definición que requiera programabilidad (es decir, instrucciones codificadas por software).
Ingeniero
2

¡No olvides que los videojuegos de primera generación se escribieron para un osciloscopio! Y por videojuegos de primera generación quiero decir pong. Recuerde que una GPU es un procesador matemático, que también es una CPU. Es solo que más especializado.

MGZero
fuente
1

Es absolutamente posible: los primeros juegos de computadora existieron antes de las GPU, que como usted señala, son hardware diseñado para acelerar las matemáticas 3D. Todo lo que se está haciendo en la GPU también se puede hacer en la CPU, aunque generalmente a una velocidad general más lenta. (La versión inicial de Quake, por ejemplo, solo utilizaba la representación de software [1] )

Mesa3D es una implementación de OpenGL que afirma ser compatible con la representación de software completo. (Sin embargo, no lo he usado más que como implementación de referencia).

Clayton Hughes
fuente
"Por lo general, a una velocidad más lenta" es muy subjetivo y, como declaración general, es bastante pobre en la comprensión de las diferencias. Un esquema simple es que las operaciones que se ajustan bien al paradigma SIMD y que minimizan la lógica condicional son buenas opciones para la GPU. Esto incluye tareas de tipo de procesamiento de números masivos, como el empuje de píxeles sin procesar o el procesamiento de vértices, mientras que las CPU son el caballo de batalla y el delegador de propósito general. En la investigación de vanguardia sobre la emisión de rayos en tiempo real y la iluminación global, las subpartes de los algoritmos utilizados se delegan con mucho cuidado para extraer un rendimiento óptimo de la CPU y la GPU.
Ingeniero
2
Prefiero no debatir la semántica de "generalmente" y "general". Esperaba que fuera una afirmación lo suficientemente vaga: en general, teniendo en cuenta los costos generales de enviar trabajos a la GPU, obtener toneladas de operaciones paralelas es una victoria, aunque puede haber algunos casos en los que esto no sea cierto.
Clayton Hughes
Es justo decir que hay tantos casos en los que su declaración original no es verdadera, como donde lo es. Y a menos que tenga una solución específicamente adecuada para esas operaciones paralelas, no, no será más rápida, de hecho puede ser mucho más lenta. Quizás sea mejor representar los hechos con mayor precisión que tratar de evitar un "debate". Intentemos no engañar a nadie.
Ingeniero
1

si es sólo unos 2d juegos, le sugiero que utilice cualquiera flash 10o SDL, pero si usted piensa que su juego puede contener activos 3d y renderizado también se puede utilizar Irrlicht . Básicamente es un motor 3D multiplataforma de código abierto con soporte para renderizado de hardware y software:

de wiki:

Irrlicht admite la representación 3D a través de OpenGL, DirectX 8 y 9, OpenGL ES y rasterizadores de software internos.

Ali1S232
fuente
-1

Si bien lo que pides es posible, vale la pena señalar que generalmente no hay prácticamente ninguna ventaja en descartar la aceleración 3D. Todas las PC modernas han incorporado aceleración 3D. Las pocas máquinas antiguas sin esta característica constituyen un mercado de juegos extremadamente pequeño, y probablemente también tenga otros problemas de compatibilidad con ellos.

Me temo que está haciendo esta pregunta por la razón equivocada.

aaaaaaaaaaaa
fuente
Estaba buscando una manera de construir un juego bastante disponible para todos, incluso para los usuarios que tienen hardware más antiguo. Además, como dije, solicité una biblioteca de juegos multiplataforma, por lo que obviamente esperaba cierta pérdida de compatibilidad (para plataformas de hardware específicas), pero al menos tuve que programar menos y todavía tener un producto dirigido a una gran parte de los usuarios . Buen punto, sin embargo, me gustaría tener un juego disponible para (casi) todos. Pero como todavía soy un novato y no codificaré para múltiples plataformas, creo que este es el camino a seguir, al menos por ahora.
user999687
Como novato, primero debe obtener una biblioteca que sea fácil de usar, no estoy diciendo que no pueda ser una no acelerada, pero el criterio no facilitará la búsqueda.
aaaaaaaaaaaa