From 8b3aa7a4ee908a780eaea3f19ef70e3018bc1608 Mon Sep 17 00:00:00 2001 From: Thyme1 Date: Sat, 8 Jan 2022 19:49:33 +0100 Subject: [PATCH] add more bubbles --- grafika_projekt/src/main.cpp | 116 +++++++++++++---------------------- 1 file changed, 43 insertions(+), 73 deletions(-) diff --git a/grafika_projekt/src/main.cpp b/grafika_projekt/src/main.cpp index 1138c1c..1879ed7 100644 --- a/grafika_projekt/src/main.cpp +++ b/grafika_projekt/src/main.cpp @@ -19,14 +19,11 @@ GLuint cubeProgram, cubeBuffer; GLuint programColor; GLuint programTexture; GLuint textureSubmarine; -<<<<<<< HEAD GLuint textureBubble; -======= ->>>>>>> fog GLuint textureFish; unsigned int cubemapTexture, skyboxVAO; unsigned int cubeVAO, cubeVBO; - +std::vector array[100]; float old_x, old_y = -1; glm::vec3 cursorDiff; glm::vec3 lightDir = glm::normalize(glm::vec3(1.0f, -10.f, -1.0f)); @@ -44,10 +41,7 @@ glm::mat4 cameraMatrix, perspectiveMatrix; Core::Shader_Loader shaderLoader; Core::RenderContext submarineContext; Core::RenderContext fishContext; -<<<<<<< HEAD Core::RenderContext bubbleContext; -======= ->>>>>>> fog std::vector fishKeyPoints({ glm::vec3(-18.0f, -10.0f, -10.0f), @@ -67,11 +61,31 @@ glm::vec3(-15.0f, -8.0f, -6.0f), glm::vec3(-18.0f, -10.0f, -10.0f), }); -std::vector bubbleKeyPoints({ -glm::vec3(-0, -20.0f, 0), -glm::vec3(-0, 20.0f, 0), - }); + +std::random_device rd; // obtain a random number from hardware +std::mt19937 gen(rd()); // seed the generator +std::uniform_int_distribution<> distr(-50, 50); // define the range + + +std::vector genBubbleKeyPoints(){ + float random1 = distr(gen); + float random2 = distr(gen); + std::vector bubbleKeyPoints({ + glm::vec3(random1 , -50.0f, random2), + glm::vec3(random1 , 50.0f, random2) + } + ); + return bubbleKeyPoints; +}; + + +void generateArray() { + + for (int i = 0; i < 100; i++) { + array[i] = genBubbleKeyPoints(); + } +} @@ -319,30 +333,11 @@ glm::mat4 animationMatrix(float time, glm::vec3 change, std::vector k auto animationRotation = glm::squad(keyRotation[index % rotationSize], keyRotation[(index + 1) % rotationSize], a1, a2, t); -<<<<<<< HEAD glm::mat4 result = glm::translate(pos) * glm::scale(glm::vec3(scaleValue)) * glm::mat4_cast(animationRotation); -======= - glm::mat4 result = glm::translate(pos) * glm::scale(glm::vec3(0.5f)) * glm::mat4_cast(animationRotation); ->>>>>>> fog return result; } -void drawObjectColor(Core::RenderContext context, glm::mat4 modelMatrix, glm::vec3 color) -{ - GLuint program = programColor; - - glUseProgram(program); - - glm::mat4 transformation = perspectiveMatrix * cameraMatrix * modelMatrix; - glUniformMatrix4fv(glGetUniformLocation(program, "modelViewProjectionMatrix"), 1, GL_FALSE, (float*)&transformation); - glUniformMatrix4fv(glGetUniformLocation(program, "modelMatrix"), 1, GL_FALSE, (float*)&modelMatrix); - - Core::DrawContext(context); - - glUseProgram(0); -} - void drawObjectTexture(Core::RenderContext context, glm::mat4 modelMatrix, GLuint textureId, GLuint program) { @@ -362,6 +357,7 @@ void drawObjectTexture(Core::RenderContext context, glm::mat4 modelMatrix, GLuin } + void renderScene() { cameraMatrix = createCameraMatrix(); @@ -381,63 +377,43 @@ void renderScene() glDrawArrays(GL_TRIANGLES, 0, 36); - //glUseProgram(cubeProgram); - //glBindVertexArray(0); - //glBindVertexArray(cubeVAO); - //glActiveTexture(GL_TEXTURE0); - //glBindTexture(GL_TEXTURE_CUBE_MAP, cubemapTexture); - //glDrawArrays(GL_TRIANGLES, 0, 36); - //glBindVertexArray(0); - - - - - glm::mat4 submarineInitialTransformation = glm::translate(glm::vec3(0, -0.5, -0.4)) * glm::rotate(glm::radians(180.0f), glm::vec3(0, 1, 0)) * glm::scale(glm::vec3(0.25f)); glm::mat4 submarineModelMatrix = glm::translate(cameraPos + cameraDir) * glm::mat4_cast(glm::inverse(rotation)) * submarineInitialTransformation; glm::mat4 bubbleInitialTransformation = glm::translate(glm::vec3(0, -0.5, -0.4)) * glm::rotate(glm::radians(180.0f), glm::vec3(0, 1, 0)) * glm::scale(glm::vec3(0.5f)); - - - //drawObjectTexture(bubbleContext, bubbleInitialTransformation, cubemapTexture, cubeProgram); - glm::vec3 change1 = glm::vec3(0, 3, 0); glm::vec3 change2 = glm::vec3(0, 0, 0); glm::vec3 change3 = glm::vec3(3, 0, 0); glm::vec3 change4 = glm::vec3(0, 2, 1); -<<<<<<< HEAD - glm::vec3 change5 = glm::vec3(0, 1, 0); - glm::vec3 change6 = glm::vec3(0, 0, 0); - glm::vec3 change7 = glm::vec3(1, 0, 0); - glm::vec3 change8 = glm::vec3(0, 1, 1); + + glm::vec3 change0 = glm::vec3(0, 0, 0); + + + + + for (int j = 0; j < 50; j++) { + drawObjectTexture(bubbleContext, animationMatrix(time + j, change0, array[j], glm::vec3(0.1f), 0.99f), cubemapTexture, cubeProgram); + } + + + + for (int i = 0; i < 5; i++) { if (time > -10) { drawObjectTexture(fishContext, animationMatrix(time + 15, change1, fishKeyPoints, glm::vec3(0.25f), 1.f), textureFish, programTexture); drawObjectTexture(fishContext, animationMatrix(time + 15, change2, fishKeyPoints, glm::vec3(0.25f), 1.f), textureFish, programTexture); drawObjectTexture(fishContext, animationMatrix(time + 15, change3, fishKeyPoints, glm::vec3(0.25f), 1.f), textureFish, programTexture); drawObjectTexture(fishContext, animationMatrix(time + 15, change4, fishKeyPoints, glm::vec3(0.25f), 1.f), textureFish, programTexture); - drawObjectTexture(bubbleContext, animationMatrix(time + 15, change5, bubbleKeyPoints, glm::vec3(0.01f), 0.2f), cubemapTexture, cubeProgram); - drawObjectTexture(bubbleContext, animationMatrix(time + 15, change6, bubbleKeyPoints, glm::vec3(0.01f), 0.2f), cubemapTexture, cubeProgram); - drawObjectTexture(bubbleContext, animationMatrix(time + 15, change7, bubbleKeyPoints, glm::vec3(0.01f), 0.2f), cubemapTexture, cubeProgram); + time -= 6; } + + } drawObjectTexture(submarineContext, submarineModelMatrix, textureSubmarine, programTexture); -======= - for (int i = 0; i < 4; i++) { - if (time > -10) { - drawObjectTexture(fishContext, animationMatrix(time + 15, change1), textureFish); - drawObjectTexture(fishContext, animationMatrix(time + 15, change2), textureFish); - drawObjectTexture(fishContext, animationMatrix(time + 15, change3), textureFish); - drawObjectTexture(fishContext, animationMatrix(time + 15, change4), textureFish); - time -= 8; - } - } - drawObjectTexture(submarineContext, submarineModelMatrix, textureSubmarine); ->>>>>>> fog glutSwapBuffers(); } @@ -544,11 +520,7 @@ void init() skyboxProgram = shaderLoader.CreateProgram((char*)"shaders/skybox.vert", (char*)"shaders/skybox.frag"); cubeProgram = shaderLoader.CreateProgram((char*)"shaders/bubble.vert", (char*)"shaders/bubble.frag"); cubemapTexture = loadCubemap(); -<<<<<<< HEAD -======= - ->>>>>>> fog loadModelToContext("models/submarine.obj", submarineContext); textureSubmarine = Core::LoadTexture("textures/submarine.png"); @@ -556,14 +528,12 @@ void init() textureFish = Core::LoadTexture("textures/fish.png"); initKeyRotation(); -<<<<<<< HEAD loadModelToContext("models/submarine.obj", submarineContext); textureSubmarine = Core::LoadTexture("textures/submarine.png"); loadModelToContext("models/sphere.obj", bubbleContext); textureBubble = Core::LoadTexture("textures/bubble.png"); + generateArray(); initCube(); -======= ->>>>>>> fog initSkybox(); }