Ho creato un Engine Grafico da 0 in Opengl/C++/ECS

  Рет қаралды 1,540

Giovanni's Diary

Giovanni's Diary

Күн бұрын

Come ho creato un engine grafico in 3D utilizzando Opengl e C++. Ho lavorato a questo progetto nel mese di luglio 2024, implementando un Entity Component System (ECS) ispirato a Bevy. L'engine comprende comode classi per gestire l'input dall'utente, audio, modelli 3d e textures, logging, testo, shaders, illuminazione, camera e altro. Inoltre è possibile eseguire simulazioni senza il rendering grafico in quanto il rendering è implementato nell'ECS dunque è opzionale.
Nota: il flickering che si vede è dato dalla registrazione, il gioco è perfettamente smooth. Peccato che a video si veda così :')
La repo del progetto: github.com/San...
Il mio profilo github: github.com/San7o
Learn opengl: learnopengl.com/
Bevy: github.com/bev...

Пікірлер: 13
@davideluci5091
@davideluci5091 Ай бұрын
saluti dal mare de torvaianica. bella
@CosSer
@CosSer Ай бұрын
Ciao ! Trovo i tuoi video davvero interessanti , volevo sapere che università hai frequentato e che corso di studi hai fatto per sapere tutte queste cose
@giovannis-diary
@giovannis-diary Ай бұрын
@@CosSer Ciao! Ho finito il secondo anno della triennale in informatica, ma devo dire che la maggior parte della pratica e dello studio li ho portati avanti nel tempo libero. Penso che una volta che impari a leggere la documentazione e i libri puoi creare davvero tutto (dedicandoci tempo ovviamente)
@carlomaggiolo2180
@carlomaggiolo2180 Ай бұрын
5:06 quel template con void() cosa è? Gli passi una funzione come parametro, quindi è un puntatore ad una funzione che non ha argomenti e che ritorna void?
@giovannis-diary
@giovannis-diary Ай бұрын
Esattamente, Uso std::function perchè i sistemi sono delle lambda expressions, sto cercando di aggiornarmi a modern C++
@antonioambrosio3250
@antonioambrosio3250 Ай бұрын
Hey, sono anche io un appasionato di GameDev e di Game Engine. Mi piacerebbe avere la possibilità di farti qualche domanda sul tuo lavoro(in realtà mi interessa anche l'OS che stai sviluppando), hai un canale discord per il canale youtube oppure una mail dove ti posso contattare?
@antonioambrosio3250
@antonioambrosio3250 Ай бұрын
Guardando il video ho anche notato un utilizzo delle stringhe in quelle che erano le funzioni che ti permettevano di recuperare i componenti quando facevi le query al world. Non ho visto il codice tanto da capire precisamente il perchè, ma se ti posso dare un consiglio eviterei di fare questo genere di lavori. In quel caso potresti direttamente utilizzare i tipi con un pò di template e ottenere un risultato simile. Quindi la query diverebbe: WorldEntityToComponent(entity). Perchè la maggior parte delle persone evitano di utilizzare le stringhe e si arrovellano a fare questo genere di giochetti? Perchè semplicemente in questo modo a comiplation time ti rendi conto se hai cannato una lettera nel nome del component e non perdi tempo. Oltre che esserci qualche piccola inefficienza nel confrontare la lunghezza di due stringhe. Immagino che se hai visto poco i template(e se lo hai fatto ti capisco perchè possono diventare facilmente un casino), è qualcosa che ti può suonare strano. Io avevo fatto qualcosa di simile ispirandomi al leggendario Entt, se vuoi un esempio, questa classe ti permette a partire da un determinato tipo di ottenere un identificativo univoco(particolarmente utile per riuscire a generare degli identificativi univoci per le tue componenti): github.com/Tonaion02/TrmvPrj/blob/main/src/ECS/TypeManager.h . Comunque complimenti per il tuo lavoro e per i tuoi lavori! Attendo con ansia di potermi mettere in contatto con te! Saluti.
@giovannis-diary
@giovannis-diary Ай бұрын
@@antonioambrosio3250 Ciao! Grazie per i preziosi consigli. Concorto totalmente sul fatto che utilizzare i tipi è di gran lunga superiore alle stringhe. La ragione per cui ho usato le stringhe è una semplice ignoranza di modern C++ (ho esperienza in c, ci ho messo un po' anche solo ad utilizzare std::string o std::vector), ma pian piano mi sto affacciando sempre di più a C++ e penso di essere sulla buona strada. Per scrivermi su discord, mi chiamo "santo_", se il canale cresce abbastanza farò anche un discord dedicato se ne velo la necessità. Grazie mille per le risorse che mi hai dato, ogni consiglio è prezioso agli inizi di qualsiasi progetto.
@antonioambrosio3250
@antonioambrosio3250 Ай бұрын
@@giovannis-diary Richiesta di amicizia inviata(se non erro non posso scriverti finchp non siamo amici su discord). Per tutto il resto figurati, sei il benvenuto.
@giuseppegambacorta9522
@giuseppegambacorta9522 Ай бұрын
Domanda, hai trovato del tempo ora che è estate ahah ? io non riesco mai a fare nulla, son sempre dietro a progetti universitari
@giovannis-diary
@giovannis-diary Ай бұрын
Penso che un grande freno alla produttività sia la procrastinazione, se impari ad essere diligente e costante ti stupirai nel riconoscere quante cose puoi fare. Ovviamente è una cosa estremamente difficile da imparare. Dipende anche dal periodo, dal tuo stato mentale e dall'ambiente intorno a te.
@giuseppegambacorta9522
@giuseppegambacorta9522 17 күн бұрын
Scusa se rispondo solo ora. Capisco cosa intendi, ma son sempre dietro ad esami universitari, quando mi libererò smanetterò anche io come un pazzo ahah
My game is 262,000 times faster than Minecraft. I'll show you how.
12:20
IGoByLotsOfNames
Рет қаралды 905 М.
AI can't cross this line and we don't know why.
24:07
Welch Labs
Рет қаралды 325 М.
The Joker wanted to stand at the front, but unexpectedly was beaten up by Officer Rabbit
00:12
Cute
00:16
Oyuncak Avı
Рет қаралды 9 МЛН
He bought this so I can drive too🥹😭 #tiktok #elsarca
00:22
Elsa Arca
Рет қаралды 53 МЛН
Epic's Unreal Optimization Disaster | Why Nanite Tanks Performance!
13:07
Threat Interactive
Рет қаралды 149 М.
OLD CRT MONITORS ARE BETTER THAN LCD MONITORS AND HERE'S WHY...
15:00
Макс Спот
Рет қаралды 97 М.
Electromagnetic Aircraft Launcher
15:09
Tom Stanton
Рет қаралды 1,4 МЛН
The Abstract Language - A New Era Of Software & Hardware Development
35:06
Abstract Engineering | الهندسة المجردة
Рет қаралды 2,4 М.
Fast Inverse Square Root - A Quake III Algorithm
20:08
Nemean
Рет қаралды 5 МЛН
How I installed the HARDEST operating system
34:40
Bog
Рет қаралды 358 М.
I Created My Own Custom 3D Graphics Engine
26:29
Inkbox
Рет қаралды 68 М.
3 Hours vs. 3 Years of Blender
17:44
Isto Inc.
Рет қаралды 4,8 МЛН
The Joker wanted to stand at the front, but unexpectedly was beaten up by Officer Rabbit
00:12