{"id":1331,"date":"2021-06-16T07:55:54","date_gmt":"2021-06-16T07:55:54","guid":{"rendered":"http:\/\/www.goncalo.pt\/por\/?p=1331"},"modified":"2023-12-05T06:11:05","modified_gmt":"2023-12-05T06:11:05","slug":"2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c","status":"publish","type":"post","link":"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/","title":{"rendered":"2021-06-16 &#8211; Game Engine j\u00e1 a renderizar em 3D, \u00e0 pata (sem GPU ou OpenGL), em C\/C++&#8230;"},"content":{"rendered":"\n<p>O meu Game Engine a tornar-se 3D tamb\u00e9m, e n\u00e3o apenas 2D.<\/p>\n\n\n\n<p>Comecei a preparar o meu Game Engine em C\/C++ para funcionar em 3D tamb\u00e9m, e j\u00e1 explico abaixo o que cada imagem \u00e9.<\/p>\n\n\n\n<p>E aten\u00e7\u00e3o que o que v\u00eaem, \u00e9 renderiza\u00e7\u00e3o 3D feita &#8220;\u00e0 m\u00e3o&#8221;, e n\u00e3o atrav\u00e9s de facilitismos como OpenGL ou outros, que explico abaixo e por raz\u00f5es que explico abaixo.<\/p>\n\n\n\n<p>A ideia come\u00e7ou quando estava a criar as simula\u00e7\u00f5es de colis\u00f5es de gal\u00e1xias, e me apercebi de que as da NASA\/Hubble, etc, eram muito superiores por serem em 3D. E como estava a usar o meu Game Engine para as minhas, em 2D, percebi que tinha de o adaptar para 3D.<\/p>\n\n\n\n<p>E assim, apesar de o meu foco no Futuro serem jogos em 2D e n\u00e3o em 3D, o meu Game Engine ser\u00e1 totalmente adapt\u00e1vel tanto a 2D como a 3D, n\u00e3o s\u00f3 para jogos, como para simula\u00e7\u00f5es de F\u00edsica, colis\u00f5es de gal\u00e1xias, etc!<\/p>\n\n\n\n<p>Como sempre, gosto de fazer tudo do zero, e considero isso bom, para saber como funciona tudo o que estou a usar, evitando ao m\u00e1ximo c\u00f3digo feito por terceiros.<\/p>\n\n\n\n<p>E isso n\u00e3o significa apenas que crie um Game Engine do zero em C\/C++ ao inv\u00e9s de usar algo com tudo pr\u00e9-feito onde algu\u00e9m que mal saiba programar consegue criar jogos, como o Unity, mas tamb\u00e9m que eu evitei usar OpenGL, e isso tem as suas vantagens e desvantagens\u2026<\/p>\n\n\n\n<p>Desvantagens de n\u00e3o usar OpenGL:<\/p>\n\n\n\n<p>1 &#8211; Estou a fazer a renderiza\u00e7\u00e3o com o pr\u00f3prio CPU e n\u00e3o com os da Placa Gr\u00e1fica (GPU), e sendo assim, terei muito menos FPS, ser\u00e1 mais lento;<br>2 &#8211; \u00c9 mais complicado, porque ao inv\u00e9s de usar fun\u00e7\u00f5es OpenGL que fazem tudo facilmente, tenho de fazer todos os c\u00e1lculos matem\u00e1ticos \u00e0 pata;<\/p>\n\n\n\n<p>Vantagens de n\u00e3o usar OpenGL e fazer \u00e0 pata:<\/p>\n\n\n\n<p>1 &#8211; N\u00e3o ficando dependente do OpenGL, poderei usar em mais plataformas que n\u00e3o tenham OpenGL, como m\u00e1quinas super antigas, como Amiga, etc, o que \u00e9 ideal para retro-gaming;<br>2 &#8211; D\u00e1 mais desafio e \u00e9 mais giro;<br>3 &#8211; Ao ter de fazer tudo \u00e0 pata, refor\u00e7o os meus conhecimentos na \u00e1rea;<\/p>\n\n\n\n<p>Mas a primeira vantagem \u00e9 a principal.<\/p>\n\n\n\n<p>Al\u00e9m disso, n\u00e3o tenciono criar jogos super pesados em 3D, pelo que n\u00e3o vou assim tanto necessitar de usar o GPU das m\u00e1quinas, mas tenho o c\u00f3digo muito abstra\u00eddo do hardware, pelo que se preciso, um dia criar algo que requira mais poder de processamento, poderei usar o OpenGL na mesma. \ud83d\ude42<\/p>\n\n\n\n<p>Vou explicar o que podem ver na imagem, que foi o que criei nas semanas anteriores\u2026<\/p>\n\n\n\n<p>Come\u00e7amos pelo canto inferior direito, onde podem ver o in\u00edcio do processo, que foi a gera\u00e7\u00e3o inicial de cubos em 3D mas numa projec\u00e7\u00e3o ortogr\u00e1fica e n\u00e3o perspectiva.<\/p>\n\n\n\n<p>\u00c0 esquerda dessa imagem, v\u00eaem a cria\u00e7\u00e3o de uma rede\/grid a ir at\u00e9 ao horizonte, com alguma convexidade, e acima, o cruzamento dos cubos com a rede, para testar rota\u00e7\u00f5es independentes de diferentes objectos 3D num plano maior.<\/p>\n\n\n\n<p>Depois conseguem ver duas imagens de fractais, porque para variar um pouco e n\u00e3o me cansar da mesma coisa, brinquei com fractais, criando novos fractais como gosto de fazer. No canto superior direito, contudo, podem ver o normal de MandelBrot\u2026<\/p>\n\n\n\n<p>Voltando ao 3D\u2026 Abaixo, no centro-direita, podem ver as primeiras tentativas falhadas de usar fios de arame para desenhar objectos, naquela imagem em que h\u00e1 fios a ir para todos os lados menos os que eu queria. \ud83d\ude00<\/p>\n\n\n\n<p>Mas no meio abaixo, j\u00e1 podem ver dois exemplos funcionais, mas tenho de vos dizer que tanto esses dois exemplos (o diamante, e a \u00e1rvore), como o de cima (uma nave retirada do jogo Wipeout), n\u00e3o foram desenhados por mim, obviamente, mas por criadores cujos nomes colocarei neste post no meu website depois.<\/p>\n\n\n\n<p>Mas podem ver que j\u00e1 fazia os wire-frames desses objectos, e tamb\u00e9m j\u00e1 conseguia pintar os tri\u00e2ngulos\/pol\u00edgonos que os comunham, com cores aleat\u00f3rias e tons difusos, que fica bonito e que j\u00e1 vi fazerem no Passado.<\/p>\n\n\n\n<p>H\u00e1 um problema, eu pare\u00e7o n\u00e3o poder juntar todos os v\u00e9rtices de todos os pol\u00edgonos porque por vezes v\u00eam mal criados pelas aplica\u00e7\u00f5es, pelo que penso (ainda tenho de investigar se \u00e9 problema meu ou deles). Da\u00ed as \u00e1rvores n\u00e3o estarem bem nas imagens.<\/p>\n\n\n\n<p>E por fim, acima, t\u00eam exemplos da minha tentativa de projectar texturas na nave do Wipeout, mas n\u00e3o conseguia ainda projectar as imagens que vinham com a nave gerada pelo artista, porque ainda s\u00f3 consigo (porque n\u00e3o tive tempo de criar o resto dos algoritmos), adaptar uma textura no geral a todas as superf\u00edcies, e n\u00e3o texturas espec\u00edficas a cada pol\u00edgono.<\/p>\n\n\n\n<p>Ali\u00e1s, consigo mais ou menos, mas n\u00e3o consigo \u00e9 ler o ficheiro obj que eles d\u00e3o, e sacar de l\u00e1 a informa\u00e7\u00e3o, e sendo assim aplico uma textura que procurei na net, de pedra, \u00e0 nave, que lhe deu um tom brutal. \ud83d\ude42<\/p>\n\n\n\n<p>Ahh, e a do meio, era supostamente uma textura de metal, e ficou altamente.<\/p>\n\n\n\n<p>Eu consigo a aplica\u00e7\u00e3o de texturas espec\u00edficas, com interpola\u00e7\u00e3o dos p\u00edxeis e tudo, mas tenho aplicado a mesma a tudo, \u00e9 mais f\u00e1cil.<\/p>\n\n\n\n<p>Esqueci de referir que tamb\u00e9m j\u00e1 tenho pontos de luz aplicados na imagem, s\u00f3 faltam as sombras. E quem sabe um dia reflexos, etc\u2026<\/p>\n\n\n\n<p>E penso que n\u00e3o me vou dar ao trabalho de ler 100% bem os ficheiros wavefront de extens\u00e3o .obj, at\u00e9 porque para jogos que crie, serei eu a desenhar os objectos e n\u00e3o outros. Mas talvez adapte um dia anyway\u2026<\/p>\n\n\n\n<p>Nos pr\u00f3ximos meses deixarei de lado o motor 3D em princ\u00edpio, e focar-me-ei na exposi\u00e7\u00e3o em 3D de pontos, apenas para a gera\u00e7\u00e3o de gal\u00e1xias.<\/p>\n\n\n\n<p>Mas ao menos um dia se quiser criar jogos em 3D, j\u00e1 tenho isto mais avan\u00e7ado.<\/p>\n\n\n\n<p>Pronto, j\u00e1 expliquei muita coisa aqui.<\/p>\n\n\n\n<p>De qualquer das formas lembrem-se, que assim puxa mais o CPU, fica mais lento porque n\u00e3o usa a GPU, n\u00e3o uso OpenGL, mas com isso poderei usar em todo o lado, at\u00e9 em m\u00e1quinas antigas.<\/p>\n\n\n\n<p>Adicionei umas dezenas de ficheiros ao meu Game Engine com isto tudo. Recordem que estou a criar do zero o Game Engine, isto \u00e9 bem mais trabalhoso do que simplesmente pegar num j\u00e1 criado na net e criar jogos com ele. \ud83d\ude00<\/p>\n\n\n\n<p>E \u00e9 mais divertido. Divertido, se acharem piada a Trigonometria, Matrices, Vectores, senos, cosenos, tangentes, pol\u00edgonos, 1001 contas, e 1001 coisas mais. \ud83d\ude1b<\/p>\n\n\n\n<p>Mais tarde trago mais novidades.<\/p>\n\n\n\n<p>Hasta! \ud83d\ude1b<\/p>\n\n\n\n<p>2021-06-16.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"http:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/06\/2021-06-15-FIM-DO-DIA-3D-Screenshot_20210615_235954-1024x576.png\" alt=\"2021-06-16 - Game Engine j\u00e1 a renderizar em 3D, \u00e0 pata (sem GPU ou OpenGL), em C\/C++...\" class=\"wp-image-1332\" srcset=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/06\/2021-06-15-FIM-DO-DIA-3D-Screenshot_20210615_235954-1024x576.png?v=1631287710 1024w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/06\/2021-06-15-FIM-DO-DIA-3D-Screenshot_20210615_235954-300x169.png?v=1631287710 300w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/06\/2021-06-15-FIM-DO-DIA-3D-Screenshot_20210615_235954-768x432.png?v=1631287710 768w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/06\/2021-06-15-FIM-DO-DIA-3D-Screenshot_20210615_235954-1536x864.png?v=1631287710 1536w, https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/06\/2021-06-15-FIM-DO-DIA-3D-Screenshot_20210615_235954.png?v=1631287710 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>2021-06-16 &#8211; Game Engine j\u00e1 a renderizar em 3D, \u00e0 pata (sem GPU ou OpenGL), em C\/C++&#8230;<\/figcaption><\/figure>\n\n\n\n<p>Pequeno post partlhiado no LinkedIn com esta imagem em 2021-06-16:<\/p>\n\n\n\n<p>\u00abIsto \u00e9 o que tenho feito nas \u00faltimas semanas: a adapta\u00e7\u00e3o do meu Game Engine em C\/C++, de 2D para 3D tamb\u00e9m.<\/p>\n\n\n\n<p>N\u00e3o \u00e9 que eu queira criar jogos em 3D, mas precisava de ter o 3D funcional para as minhas simula\u00e7\u00f5es de gal\u00e1xias, etc, e assim tenho um 2 em 1, fa\u00e7o o que preciso, e ao mesmo tempo, o meu Game Engine fica mais preparado para jogos 3D.<\/p>\n\n\n\n<p>Claro que seria fac\u00edlimo ter um Unity onde qualquer pessoa que mal saiba programar, pode criar jogos.<\/p>\n\n\n\n<p>Mas isto \u00e9 feito do zero em C\/C++, para ter algo mais leve e poderoso, e mais ao meu gosto.<\/p>\n\n\n\n<p>E como tal, n\u00e3o usei OpenGL nisto, toda a Matem\u00e1tica do 3D \u00e9 feita \u00e0 pata. Com isto, estou a usar mais CPU e menos GPU, o que torna mais lento, mas repito, tamb\u1ebdm n\u00e3o vou criar jogos super pesados em 3D por isso no problem. E assim poderei usar em m\u00e1quinas antigas sem Open GL. \ud83d\ude42<\/p>\n\n\n\n<p>E o ser feito \u00e0 pata \u00e9 mais giro.<\/p>\n\n\n\n<p>Usei objectos 3D gr\u00e1tis da Internet para as imagens com que fiz os testes.<\/p>\n\n\n\n<p>E pelo meio brinquei com fractais.<\/p>\n\n\n\n<p>Seria muito longo um texto a descrever tudo o que fiz, se quiserem saber mais, leiam o que cada imagem aqui significa, e o que fiz, no meu site pessoal.<\/p>\n\n\n\n<p>E mais tarde partilho mais coisas, mas penso que antes de voltar aos trading systems, talvez d\u00ea uns toques nas gal\u00e1xias primeiro. \ud83d\ude42<\/p>\n\n\n\n<p>Hasta.<\/p>\n\n\n\n<p>2021-06-16.\u00bb<\/p>\n\n\n\n<p>In: <a href=\"https:\/\/www.linkedin.com\/feed\/update\/urn:li:activity:6810842868069015552\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.linkedin.com\/feed\/update\/urn:li:activity:6810842868069015552\/<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O meu Game Engine a tornar-se 3D tamb\u00e9m, e n\u00e3o apenas 2D. Comecei a preparar o meu Game Engine em<\/p>\n","protected":false},"author":1,"featured_media":1332,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[72,6,177,21,5,3,4,164,346,266,162,291],"tags":[176,69,67,7,207,178,24,179,120,345,344],"class_list":["post-1331","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arte-digital","category-game-development","category-fractais","category-matematica","category-programacao","category-projectos","category-softwares","category-top","category-top-10-game-engine","category-top-20","category-top-game-engine","category-um-dia-3d","tag-3d","tag-arte","tag-arte-digital","tag-c","tag-dev","tag-fractais","tag-game-dev","tag-mandelbrot","tag-programacao","tag-top-10-game-engine","tag-top-20"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>2021-06-16 - Game Engine j\u00e1 a renderizar em 3D, \u00e0 pata (sem GPU ou OpenGL), em C\/C++... - Gon\u00e7alo Ferreira<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"2021-06-16 - Game Engine j\u00e1 a renderizar em 3D, \u00e0 pata (sem GPU ou OpenGL), em C\/C++... - Gon\u00e7alo Ferreira\" \/>\n<meta property=\"og:description\" content=\"O meu Game Engine a tornar-se 3D tamb\u00e9m, e n\u00e3o apenas 2D. Comecei a preparar o meu Game Engine em\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/\" \/>\n<meta property=\"og:site_name\" content=\"Gon\u00e7alo Ferreira\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-16T07:55:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-05T06:11:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/06\/2021-06-15-FIM-DO-DIA-3D-Screenshot_20210615_235954.png?v=1631287710\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"gnmf\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"gnmf\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/\"},\"author\":{\"name\":\"gnmf\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/#\/schema\/person\/28a9f845c4de91a7c067707279b1d8dd\"},\"headline\":\"2021-06-16 &#8211; Game Engine j\u00e1 a renderizar em 3D, \u00e0 pata (sem GPU ou OpenGL), em C\/C++&#8230;\",\"datePublished\":\"2021-06-16T07:55:54+00:00\",\"dateModified\":\"2023-12-05T06:11:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/\"},\"wordCount\":1460,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/06\/2021-06-15-FIM-DO-DIA-3D-Screenshot_20210615_235954.png?v=1631287710\",\"keywords\":[\"3D\",\"Arte\",\"Arte Digital\",\"C++\",\"Dev\",\"Fractais\",\"Game Dev\",\"MandelBrot\",\"Programa\u00e7\u00e3o\",\"Top 10 Game Engine\",\"Top 20\"],\"articleSection\":[\"Arte Digital\",\"Desenvolvimento de Jogos\",\"Fractais\",\"Matem\u00e1tica\",\"Programa\u00e7\u00e3o\",\"Projectos\",\"Softwares\",\"Top\",\"Top 10 Game Engine\",\"Top 20\",\"Top Game Engine\",\"Um Dia - 3D\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/\",\"url\":\"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/\",\"name\":\"2021-06-16 - Game Engine j\u00e1 a renderizar em 3D, \u00e0 pata (sem GPU ou OpenGL), em C\/C++... - Gon\u00e7alo Ferreira\",\"isPartOf\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/06\/2021-06-15-FIM-DO-DIA-3D-Screenshot_20210615_235954.png?v=1631287710\",\"datePublished\":\"2021-06-16T07:55:54+00:00\",\"dateModified\":\"2023-12-05T06:11:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/#primaryimage\",\"url\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/06\/2021-06-15-FIM-DO-DIA-3D-Screenshot_20210615_235954.png?v=1631287710\",\"contentUrl\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/06\/2021-06-15-FIM-DO-DIA-3D-Screenshot_20210615_235954.png?v=1631287710\",\"width\":1920,\"height\":1080,\"caption\":\"2021-06-16 - Game Engine j\u00e1 a renderizar em 3D, \u00e0 pata (sem GPU ou OpenGL), em C\/C++...\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.goncalo.pt\/por\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"2021-06-16 &#8211; Game Engine j\u00e1 a renderizar em 3D, \u00e0 pata (sem GPU ou OpenGL), em C\/C++&#8230;\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/#website\",\"url\":\"https:\/\/www.goncalo.pt\/por\/\",\"name\":\"Gon\u00e7alo Ferreira\",\"description\":\"[Game Engine\/Software\/Simulation\/Trading Systems\/Full Stack] Developer, Musician, Composer, Painter, Writer, IT Trainer, Sys Admin, Ex-Trader, Skater, Strongman, Vegan, Self-Taught Neuro-Divergent Polymath, and 1001 things more. Welcome to my world!\",\"publisher\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.goncalo.pt\/por\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/#organization\",\"name\":\"Gon\u00e7alo Ferreira\",\"url\":\"https:\/\/www.goncalo.pt\/por\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2023\/08\/cropped-Goncalo-Ferreira-Logo-With-Face.png\",\"contentUrl\":\"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2023\/08\/cropped-Goncalo-Ferreira-Logo-With-Face.png\",\"width\":389,\"height\":90,\"caption\":\"Gon\u00e7alo Ferreira\"},\"image\":{\"@id\":\"https:\/\/www.goncalo.pt\/por\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"http:\/\/www.linkedin.com\/in\/GoncaloPT\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/#\/schema\/person\/28a9f845c4de91a7c067707279b1d8dd\",\"name\":\"gnmf\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.goncalo.pt\/por\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/78a295ef7300b60da1d67d4ce84359da?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/78a295ef7300b60da1d67d4ce84359da?s=96&d=mm&r=g\",\"caption\":\"gnmf\"},\"sameAs\":[\"http:\/\/www.goncalo.pt\/por\"],\"url\":\"https:\/\/www.goncalo.pt\/por\/author\/gnmf\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"2021-06-16 - Game Engine j\u00e1 a renderizar em 3D, \u00e0 pata (sem GPU ou OpenGL), em C\/C++... - Gon\u00e7alo Ferreira","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/","og_locale":"en_US","og_type":"article","og_title":"2021-06-16 - Game Engine j\u00e1 a renderizar em 3D, \u00e0 pata (sem GPU ou OpenGL), em C\/C++... - Gon\u00e7alo Ferreira","og_description":"O meu Game Engine a tornar-se 3D tamb\u00e9m, e n\u00e3o apenas 2D. Comecei a preparar o meu Game Engine em","og_url":"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/","og_site_name":"Gon\u00e7alo Ferreira","article_published_time":"2021-06-16T07:55:54+00:00","article_modified_time":"2023-12-05T06:11:05+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/06\/2021-06-15-FIM-DO-DIA-3D-Screenshot_20210615_235954.png?v=1631287710","type":"image\/png"}],"author":"gnmf","twitter_card":"summary_large_image","twitter_misc":{"Written by":"gnmf","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/#article","isPartOf":{"@id":"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/"},"author":{"name":"gnmf","@id":"https:\/\/www.goncalo.pt\/por\/#\/schema\/person\/28a9f845c4de91a7c067707279b1d8dd"},"headline":"2021-06-16 &#8211; Game Engine j\u00e1 a renderizar em 3D, \u00e0 pata (sem GPU ou OpenGL), em C\/C++&#8230;","datePublished":"2021-06-16T07:55:54+00:00","dateModified":"2023-12-05T06:11:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/"},"wordCount":1460,"commentCount":0,"publisher":{"@id":"https:\/\/www.goncalo.pt\/por\/#organization"},"image":{"@id":"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/#primaryimage"},"thumbnailUrl":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/06\/2021-06-15-FIM-DO-DIA-3D-Screenshot_20210615_235954.png?v=1631287710","keywords":["3D","Arte","Arte Digital","C++","Dev","Fractais","Game Dev","MandelBrot","Programa\u00e7\u00e3o","Top 10 Game Engine","Top 20"],"articleSection":["Arte Digital","Desenvolvimento de Jogos","Fractais","Matem\u00e1tica","Programa\u00e7\u00e3o","Projectos","Softwares","Top","Top 10 Game Engine","Top 20","Top Game Engine","Um Dia - 3D"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/","url":"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/","name":"2021-06-16 - Game Engine j\u00e1 a renderizar em 3D, \u00e0 pata (sem GPU ou OpenGL), em C\/C++... - Gon\u00e7alo Ferreira","isPartOf":{"@id":"https:\/\/www.goncalo.pt\/por\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/#primaryimage"},"image":{"@id":"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/#primaryimage"},"thumbnailUrl":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/06\/2021-06-15-FIM-DO-DIA-3D-Screenshot_20210615_235954.png?v=1631287710","datePublished":"2021-06-16T07:55:54+00:00","dateModified":"2023-12-05T06:11:05+00:00","breadcrumb":{"@id":"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/#primaryimage","url":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/06\/2021-06-15-FIM-DO-DIA-3D-Screenshot_20210615_235954.png?v=1631287710","contentUrl":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2021\/06\/2021-06-15-FIM-DO-DIA-3D-Screenshot_20210615_235954.png?v=1631287710","width":1920,"height":1080,"caption":"2021-06-16 - Game Engine j\u00e1 a renderizar em 3D, \u00e0 pata (sem GPU ou OpenGL), em C\/C++..."},{"@type":"BreadcrumbList","@id":"https:\/\/www.goncalo.pt\/por\/2021\/06\/16\/2021-06-16-game-engine-ja-a-renderizar-em-3d-a-pata-sem-gpu-ou-opengl-em-c-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.goncalo.pt\/por\/"},{"@type":"ListItem","position":2,"name":"2021-06-16 &#8211; Game Engine j\u00e1 a renderizar em 3D, \u00e0 pata (sem GPU ou OpenGL), em C\/C++&#8230;"}]},{"@type":"WebSite","@id":"https:\/\/www.goncalo.pt\/por\/#website","url":"https:\/\/www.goncalo.pt\/por\/","name":"Gon\u00e7alo Ferreira","description":"[Game Engine\/Software\/Simulation\/Trading Systems\/Full Stack] Developer, Musician, Composer, Painter, Writer, IT Trainer, Sys Admin, Ex-Trader, Skater, Strongman, Vegan, Self-Taught Neuro-Divergent Polymath, and 1001 things more. Welcome to my world!","publisher":{"@id":"https:\/\/www.goncalo.pt\/por\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.goncalo.pt\/por\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.goncalo.pt\/por\/#organization","name":"Gon\u00e7alo Ferreira","url":"https:\/\/www.goncalo.pt\/por\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.goncalo.pt\/por\/#\/schema\/logo\/image\/","url":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2023\/08\/cropped-Goncalo-Ferreira-Logo-With-Face.png","contentUrl":"https:\/\/www.goncalo.pt\/por\/wp-content\/uploads\/2023\/08\/cropped-Goncalo-Ferreira-Logo-With-Face.png","width":389,"height":90,"caption":"Gon\u00e7alo Ferreira"},"image":{"@id":"https:\/\/www.goncalo.pt\/por\/#\/schema\/logo\/image\/"},"sameAs":["http:\/\/www.linkedin.com\/in\/GoncaloPT\/"]},{"@type":"Person","@id":"https:\/\/www.goncalo.pt\/por\/#\/schema\/person\/28a9f845c4de91a7c067707279b1d8dd","name":"gnmf","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.goncalo.pt\/por\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/78a295ef7300b60da1d67d4ce84359da?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/78a295ef7300b60da1d67d4ce84359da?s=96&d=mm&r=g","caption":"gnmf"},"sameAs":["http:\/\/www.goncalo.pt\/por"],"url":"https:\/\/www.goncalo.pt\/por\/author\/gnmf\/"}]}},"_links":{"self":[{"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/posts\/1331"}],"collection":[{"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/comments?post=1331"}],"version-history":[{"count":2,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/posts\/1331\/revisions"}],"predecessor-version":[{"id":1335,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/posts\/1331\/revisions\/1335"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/media\/1332"}],"wp:attachment":[{"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/media?parent=1331"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/categories?post=1331"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.goncalo.pt\/por\/wp-json\/wp\/v2\/tags?post=1331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}