From 18c39130db87933bacb25bde788af2b8a00800f6 Mon Sep 17 00:00:00 2001 From: Adog64 Date: Sat, 20 Jan 2024 09:48:15 -0500 Subject: [PATCH] Continued to simplify main function and build up game engine api --- PlanetMiner | Bin 29128 -> 29200 bytes bin/main.o | Bin 6480 -> 6952 bytes bin/worldgen.o | Bin 4704 -> 2368 bytes src/main.c | 37 +++++++++++++++++++++++++------------ src/meshing.h | 11 +++++++++++ src/worldgen.c | 28 +++++++++------------------- src/worldgen.h | 13 +++---------- 7 files changed, 48 insertions(+), 41 deletions(-) create mode 100644 src/meshing.h diff --git a/PlanetMiner b/PlanetMiner index 9c460c56779d4e68df3b5ac5085df2be1d1116f2..7d9ca6a19284586fba15864120deddb340a19885 100755 GIT binary patch delta 6563 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 J^0zi*{Xc+t?iT<6 delta 7047 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 Hy!w3NU diff --git a/bin/worldgen.o b/bin/worldgen.o index afdb84ea48979a2179b0fa9e74149990caf8ff23..cfca1512ca7c74d726c7dbd9dc2257fbeb6f70a2 100644 GIT binary patch delta 774 zcmZ8eL2DC16rS1amh577b{FHOqVB4pgx0t{C~XhQR(eRi7%)Vz2$ptZ#ArfPYCT9G z9@;}->+{fq2mJwpUOafQH3jvc=pT^w=0WffkfMUV*`4jd2Q%-R@0<6{yqWF%h7}g- z9fjb7f0lW(1EqIJv@Slt8OgDu81ci z^^8!fz!zxfa|C+VgjUOU-s;k=&ebG@1*f)ok5uAUV6xyxpn? z?Esmj8hlX?!V&FQAfw3;jz53nD2gNSDG1jReoFA1$77psGZo0|_u;AT(g~P0YaM6*2WmQW8Fq9#yDsik`nEFDz*$tr9gt{vnR$!Vr F{{Zd-l!*WU literal 4704 zcmbuDZ*0>=7{`C@rW-JO9e<~&bY@~FtoGM|FhZm-U_X)pgMng*u+sj@CR^LI<*x<{ z#XpVA?1dVmMoD~UOkC9X&QRpfgn&Xw6n(?q0E>YD8Q=?0e7^U)qqoa2Bwlj&JkRHz z=k9*@x7!;_T9>+AE<+}l@q$sZBsGiOG1%Ii)r|5;Kg zuRAf!Rvl-7Q@h;Rxy*k$Uo5lo169Lp!x?h;gZWReW5)+6n0nlJhfP>{qiHDpxs^Xs zv;LLCY}!7Iz(CMI1vJDCwA_K(G{p91?%usCeB<$ebnjamX5ZhUfgX>u-ACJp*|R^> zw^@5Ge?(z4?uQW0zm54Hfo>Hp4YQd==I1r6zO^nWYFK@For1#x_fE{Q`o(o#QMIKw zzjw`eHv-$F$E?-x@D&;h&E?QiN;4g-eqUXVI*zl%Q9h7&XIO_WxUIrfZdrvtt-?jC z&|GO12AulW%B@3}++2^dBp)Z$ds#KL;h3yC>{WE1q6ZZ{tmtiu-l6EJlAd#hDZ9w^ z@loG14~#VXN1DZv=IN2AXW9Cqd?f5dAQ z&aJ0SV)Ra&)4RyUzWy;k=xX|lwfxh&(tUR5@QP%*C(_-ut1GeD_jJs+%}!^#qIPC1 zwVex7p`_fwAEy4YzyY}hiVn_C1;v019i9&!qqRr<@Ys9pqP209`LYTr&o3n3`a)v# zNRWs@hVG_}c-ZBX5eIt=WyHg-qzqr!4^u9qjC%M(heSKjA*Bx_V!BKknzNG@Sx3`i3lVYqg!He5TruBlZOm3`zKB>uRlI|8}T<9*A$#8Z~d>L<505%V27d}ULua>j18+bGC6Zs z!RJw}spUq65mq7T(*^fxe1_n1US&1b2Rp>aWvQ6W)e57dgt#_O@RY{Gg6A~8RPa8H zw+enhjlVB=hsHl9K3*9lKU2iMqU_}{Ba3gzguk30ex8UOr97JdiTm&~_u=P= zqy0WyI+XYsBzciCcv0|sXK#Bl-5uL(CjwC;(Ape&9%Um}QE+n(v{@+TqL_`M356Nt zrOC?>FL|iRolWj&@+M5)hRNei9vkAZAs!pzu_32h9vhl%B*fEYzbGCpBbDw-WaCCE zncCVN$=b`J$xN!#PTNGb#|?Vtx|30($L@)yb{h0WcAA`C!si)jJGM1y$J%%H^w`;S zSF|nCmB#Ei_p+3@+huxGD7a&vq_rCNWEA|mM z?sUl~D;)2IZzwjhqq;Tv#$yX`-F@<+1e5%5e3ddU|+xbLrtYfXh zzfk;9C;j^s|7i;Mk&c9F;lk}Tyex5fzvVP8@1+A8FUrOOnVmh^$R;C@$)+9IDYdlS z9SLOZ9a$p~i)154U{fYz1kyVn+P+S$oY)#jrIRVTZFW*5`m#GW#?z4=Ta5Mp2pC*kef3DTAwb9QYI+08)alnr4!LHg)$0jW;P4ZH6eTNyf|j zR@TY>r3_OAbev%|$?wM8s7cyVE~m=T;=|&DQnDk_h@5{Z*Nga|+6n3XqJ!r&E}N4w zCgL?WhaEh0_Z!WqmX+1+r-gTSkz0= zi48}ogO`Q@6Yq_Tm-}zDz7bNy<40+SSO>fTcxUu@ym|WGBV^1KfAHLfp(K6&@Ft8F O|C1R1he|9|J^o)^^3^Q> diff --git a/src/main.c b/src/main.c index a2c5c39..3c61506 100644 --- a/src/main.c +++ b/src/main.c @@ -22,7 +22,9 @@ GLFWwindow** window; static GLfloat vertexBufferData[1000]; -void setVertexBufferData(GLfloat*, unsigned int*, unsigned int); +void updateWindow(GLFWwindow** window, GLuint vertexBuffer); +void terminateProgram(GLuint* vertexBufferPtr, GLuint* vertexArrayIDPtr, GLuint programID); +bool shouldTerminate(GLFWwindow** window); int main() { @@ -50,8 +52,6 @@ int main() vec3s direction = {0.0f, 0.0f, -5.0f}; - printf("Entering main loop\n"); - do { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); @@ -69,8 +69,17 @@ int main() shaderSetMat4(programID, "view", &view); shaderSetMat4(programID, "model", &model); + + updateWindow(window, vertexBuffer); + } + while(!shouldTerminate(window)); + terminateProgram(&vertexBuffer, &vertexArrayID, programID); + return 0; +} +void updateWindow(GLFWwindow** window, GLuint vertexBuffer) +{ glEnableVertexAttribArray(0); glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer); @@ -85,20 +94,24 @@ int main() glDrawArrays(GL_TRIANGLES, 0, 20*3); glDisableVertexAttribArray(0); - glfwSwapBuffers(window); glfwPollEvents(); - } - while( (glfwGetKey(window, GLFW_KEY_Q) != GLFW_PRESS - && glfwGetKey(window, GLFW_KEY_ESCAPE) != GLFW_PRESS) - && !glfwWindowShouldClose(window)); +} - glDeleteBuffers(1, &vertexBuffer); +void terminateProgram(GLuint* vertexBufferPtr, GLuint* vertexArrayIDPtr, GLuint programID) +{ + glDeleteBuffers(1, vertexBufferPtr); glDeleteProgram(programID); - glDeleteVertexArrays(1, &vertexArrayID); + glDeleteVertexArrays(1, vertexArrayIDPtr); glfwTerminate(); - - return 0; +} + +bool shouldTerminate(GLFWwindow** window) +{ + // quit on , , or when otherwise told to + return glfwGetKey(window, GLFW_KEY_Q) == GLFW_PRESS + || glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS + || glfwWindowShouldClose(window); } diff --git a/src/meshing.h b/src/meshing.h new file mode 100644 index 0000000..3a68651 --- /dev/null +++ b/src/meshing.h @@ -0,0 +1,11 @@ +#include + +typedef struct +{ + unsigned int numVertices; + unsigned int numTexCoords; + unsigned int numNormals; + vec3s* vertices; + vec2s* texCoords; + vec3s* normals; +} mesh; diff --git a/src/worldgen.c b/src/worldgen.c index 80da081..5a75b9e 100644 --- a/src/worldgen.c +++ b/src/worldgen.c @@ -12,18 +12,18 @@ #define TWICE_RSQRT5 0.8944271909999159f #define GOLDEN 1.618033988749895f -worldMesh* generateWorld(vec3s position) +mesh* generateWorld(vec3s position) { // placeholder struct for world mesh - worldMesh* mesh = (worldMesh*) malloc(sizeof(worldMesh)); - populateIcosphere(mesh, ORDER, 1.0f); - return mesh; + mesh* worldMesh = (mesh*) malloc(sizeof(mesh)); + populateIcosphere(worldMesh, ORDER, 1.0f); + return worldMesh; } -void populateIcosphere(worldMesh* mesh, unsigned char order, GLfloat radius) +void populateIcosphere(mesh* worldMesh, unsigned char order, GLfloat radius) { int T = powf(4, order); - mesh->vertexArrayCount = (10*T + 2) * 3; // Final heap array size for vertices + worldMesh->numVertices = (10*T + 2) * 3; // Final heap array size for vertices // Initial vertex array. Not used other than to initialize heap array in mesh GLfloat vertices[] = { @@ -39,23 +39,13 @@ void populateIcosphere(worldMesh* mesh, unsigned char order, GLfloat radius) 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, 9, 8, 1, 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7 }; - - mesh->triangleArrayCount = 20*T*3; - normalizeVertices(vertices, mesh->vertexArrayCount, radius); - - // Move vetex and triangle data into mesh struct - mesh->vertices = (GLfloat*) malloc(sizeof(GLfloat) * mesh->vertexArrayCount); - memcpy(mesh->vertices, vertices, sizeof(GLfloat) * mesh->vertexArrayCount); - - mesh->triangles = (unsigned int*) malloc(sizeof(unsigned int) * mesh->triangleArrayCount); - memcpy(mesh->triangles, triangles, sizeof(unsigned int) * 60); } -void normalizeVertices(GLfloat* vertices, unsigned int vertexArrayCount, GLfloat radius) +void normalizeVertices(GLfloat* vertices, unsigned int numVertices, GLfloat radius) { - printf("Normalizing %d vertices\n", vertexArrayCount); + printf("Normalizing %d vertices\n", numVertices); vec3s vertex; - for( int i = 0; i < vertexArrayCount; i += 3) + for( int i = 0; i < numVertices; i += 3) { vertex.x = vertices[i]; vertex.y = vertices[i + 1]; diff --git a/src/worldgen.h b/src/worldgen.h index 0a91388..34971f5 100644 --- a/src/worldgen.h +++ b/src/worldgen.h @@ -1,14 +1,7 @@ #include #include -typedef struct worldMesh -{ - unsigned int vertexArrayCount; - unsigned int triangleArrayCount; - GLfloat* vertices; - unsigned int* triangles; -} worldMesh; - +#include "meshing.h" /*! * @brief top-level world generation function @@ -16,8 +9,8 @@ typedef struct worldMesh * @param[in] pos the position of the center of the roughly spherical world * @return the world mesh as a heap-allocated list of vertices. */ -worldMesh* generateWorld(vec3s pos); -void populateIcosphere(worldMesh* mesh, unsigned char order, GLfloat radius); +mesh* generateWorld(vec3s pos); +void populateIcosphere(mesh* mesh, unsigned char order, GLfloat radius); void normalizeVertices(GLfloat* vertices, unsigned int vertexArrayCount, GLfloat radius); unsigned int reducedSymmetricPair(unsigned int, unsigned int);