È possibile scrivere un gioco che non richiede una GPU?


8

So già che molti computer oggi hanno una GPU che supporta DirectX e OpenGL. E i computer che non lo fanno? Posso scrivere un semplice gioco 2D che non si basa sulla GPU, in modo che funzioni anche su macchine più vecchie?

Esiste una libreria di giochi C o C ++ multipiattaforma che mi permetterà di farlo? Idealmente, una libreria del genere mi permetterebbe di attivare l'accelerazione hardware con pochissime righe di codice.


Puoi persino farlo in 3D, il primo Unreal Tournament ha funzionato sulla CPU.
Peter Ølsted,

Quanti anni stai pensando? praticamente tutto ciò che è ancora in esecuzione supporterà alcune varianti di OpenGL o DirectX.
3Daveva il

@DavidLively So che potrei sembrare un po '"vecchio" ma ci sono ancora utenti che hanno un vecchio harware, incluso l'uso della memoria video della scheda madre (non supportano né DirectX né OpenGL, almeno per quelli vecchi). Inoltre, come dalle risposte che ho ricevuto, non è difficile attivare l'accelerazione hardware, quindi è comunque un grosso problema.
user999687,

Le GPU con accelerazione hardware di un tipo o di un altro sono state standard per molto tempo. Stai anche pensando di scegliere come target Windows 98, macchine con CPU inferiori a 200 MHz o 64 MB di RAM?

Risposte:


6

Certamente, puoi usare SDL e credo che faccia tutto sulla CPU di default. Puoi effettivamente ottenere delle prestazioni piuttosto buone se gestisci bene il tuo codice.


Grazie! SDL è una delle librerie di giochi che vado a scegliere (insieme ad Allegro).
user999687,

2

Pensi che Pong abbia usato una GPU?

I giochi Flash che giochi sempre sul Web, pensi che utilizzino una GPU?

(Sono solo queste ultime settimane che i giochi Flash possono finalmente essere sviluppati per utilizzare il supporto GPU. E Flash è in circolazione da molto più di un decennio.)

Certo che è possibile. Ho giocato ai giochi per un decennio prima che esistesse persino una scheda grafica accelerata per il mercato consumer, per non parlare di interi processori completi di Turing dedicati alla grafica (e più specificamente, alla grafica dei giochi).


Grazie per la risposta. Ero solo confuso, poiché ora le uniche cose che posso vedere in giro sono DirectX e OpenGL, o altre librerie di giochi che supportano quei due (almeno per quanto riguarda C / C ++).
user999687,

Questa risposta è disingenua: Pong non aveva una GPU, ma non aveva nemmeno una CPU. I giochi molto antichi utilizzavano chip TTL e nulla che oggi riconosciamo come un computer programmabile.

@JoeWreschnig (a) CPU! = Microprocessore. Prenditi il ​​tempo per leggere alcune delle pubblicazioni precedenti e determinerai rapidamente che l'uso del TTL in una CPU non ha in qualche modo magicamente impedito che sia una CPU. Una CPU è un ruolo nell'architettura del computer in cui TTL era la tecnologia fondamentale al momento. (b) Devi andare a rileggere la definizione di disingenuo , perché è chiaro che non sai come usarlo.
Ingegnere,

@Nick: Tranne il fatto che non era una CPU implementata in TTL, il gioco è stato implementato in TTL. Non era un computer programmabile e quindi non c'era CPU.

@JoeWreschnig Quella era una CPU. "L'unità centrale di elaborazione (CPU) è la parte di un sistema informatico che esegue le istruzioni di un programma per eseguire le operazioni aritmetiche, logiche e di input / output di base del sistema." Questa è la definizione. Sono in giro dagli anni '40. Le tue opinioni su ciò che costituisce una CPU sono imprecise. Da nessuna parte troverete una definizione che richiede programmabilità (ovvero istruzioni codificate dal software).
Ingegnere,

2

Non dimenticare, i videogiochi di prima generazione sono stati scritti per un oscilloscopio! E per videogiochi di prima generazione intendo il pong. Una GPU ricorda, è un processore matematico, che è anche ciò che è una CPU. È solo più specializzato.


1

È assolutamente possibile: i primi giochi per computer esistevano prima delle GPU - che come fai notare, sono hardware progettati per accelerare la matematica 3D. Tutto ciò che viene fatto sulla GPU può anche essere fatto sulla CPU, sebbene di solito a una velocità complessiva più lenta. (La versione iniziale di Quake, ad esempio, utilizzava solo il rendering del software [1] )

Mesa3D è un'implementazione OpenGL che afferma di supportare il rendering completo del software. (Non l'ho usato altro che come implementazione di riferimento, però).


"Di solito a una velocità più lenta" è altamente soggettivo e, come affermazione generale, abbastanza scarsa nella comprensione delle differenze. Un semplice schema è che le operazioni che si adattano bene al paradigma SIMD e che minimizzano la logica condizionale, sono buone scelte per la GPU. Ciò include attività di tipo scricchiolio di massa come push di pixel non elaborati o elaborazione di vertici, mentre le CPU sono il cavallo di lavoro e il delegatore per scopi generici. Nella ricerca all'avanguardia nel raycasting in tempo reale e nell'illuminazione globale, le sottoparti degli algoritmi utilizzati sono delegate con molta attenzione per estrarre prestazioni ottimali da CPU e GPU entrambe.
Ingegnere,

2
Preferirei non discutere la semantica del "solito" e del "complessivo". Avevo sperato che fosse un'affermazione abbastanza vaga: in generale, considerando i costi generali dei lavori di spedizione alla GPU, arrivare a fare tonnellate di operazioni parallele c'è una vittoria, anche se ci possono essere alcuni casi in cui ciò non è vero.
Clayton Hughes,

È giusto dire che ci sono tanti casi in cui la tua affermazione originale non è vera, come dove si trova. E a meno che tu non abbia una soluzione specificamente adatta a quelle operazioni parallele, no, non sarà più veloce, in realtà potrebbe essere molto più lento. Forse meglio rappresentare i fatti in modo più accurato, piuttosto che cercare di evitare un "dibattito". Proviamo a non indurre in errore nessuno.
Ingegnere,

1

se si tratta solo di giochi 2D, ti suggerisco di utilizzare uno flash 10o SDL, ma se ritieni che il tuo gioco possa contenere risorse 3d e rendering puoi anche usare Irrlicht . è fondamentalmente un motore 3d multipiattaforma open source con supporto per il rendering sia hardware che software:

dalla wiki:

Irrlicht supporta il rendering 3D tramite OpenGL, DirectX 8 e 9, OpenGL ES e rasterizzatori software interni.


-1

Mentre ciò che chiedi è possibile, vale la pena notare che di solito non c'è praticamente alcun vantaggio nello scartare l'accelerazione 3D. Tutti i PC moderni hanno un'accelerazione 3D integrata. Le poche vecchie macchine senza questa funzionalità costituiscono un mercato di giochi estremamente piccolo e probabilmente avresti anche altri problemi di compatibilità con quelli.

Temo che tu stia facendo questa domanda per la ragione sbagliata.


Stavo solo cercando un modo per creare un gioco abbastanza disponibile per tutti, anche per gli utenti con hardware meno recente. Inoltre, come ho detto, ho richiesto una libreria di giochi multipiattaforma, quindi ovviamente mi aspettavo una certa perdita di compatibilità (per piattaforme hardware specifiche), ma almeno dovevo programmare di meno e avere ancora un prodotto mirato per gran parte degli utenti . Bel punto però, vorrei avere un gioco disponibile per (quasi) tutti. Ma dal momento che sono ancora un principiante e non codificherò per più piattaforme, penso che questa sia la strada da percorrere --- almeno per ora.
user999687,

Come principiante dovresti prima di tutto ottenere una libreria che sia facile da usare, non sto dicendo che non potrebbe essere una non accelerata, ma il criterio non faciliterà la ricerca.
aaaaaaaaaaaa,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.