diff --git a/src/lorenz.c b/src/lorenz.c index cda2f9c..bc16706 100644 --- a/src/lorenz.c +++ b/src/lorenz.c @@ -29,7 +29,6 @@ void lorenzStep(float next[3], vec3 prev, float dt) { } int main(int argc, char *argv[]) { - GLFWwindow* window = initOpenGL(); glfwSetKeyCallback(window, &key_pressed); @@ -43,7 +42,7 @@ int main(int argc, char *argv[]) { glBindVertexArray(VAO); glBindBuffer(GL_ARRAY_BUFFER, VBO); - glBufferData(GL_ARRAY_BUFFER, 3000* sizeof(vec3), NULL, GL_STREAM_DRAW); + glBufferData(GL_ARRAY_BUFFER, 10* sizeof(vec3), NULL, GL_STREAM_DRAW); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0 ); glEnableVertexAttribArray(0); @@ -52,18 +51,27 @@ int main(int argc, char *argv[]) { mat4x4_identity(proj); mat4x4_ortho(proj, 0.0, 400.0, 0.0, 400.0, 0.1, 100.0); - // Uniform Projection Matrix glUseProgram(shader1); - int projectionLoc = glGetUniformLocation(shader1, "proj"); - glUniformMatrix4fv(projectionLoc, 1, GL_FALSE, *proj); + int projLoc = glGetUniformLocation(shader1, "proj"); + //glUniformMatrix4fv(projLoc, 1, GL_FALSE, *proj); + // PointsArray vec3* lorenzPoints = malloc(3000 * sizeof(vec3)); memset(lorenzPoints, 0, 3000 * sizeof(vec3)); vec3 initial = {0.1f, 0.1f, 0.1f}; memcpy(lorenzPoints, initial, sizeof(vec3)); - vec3 sec = {1.0f, 1.0f, 1.0f}; - memcpy(lorenzPoints, sec, sizeof(vec3)); + vec3 sec = {0.2f, 0.2f, 0.2f}; + memcpy(lorenzPoints[1] , sec, sizeof(vec3)); + for (int i=2; i<10; i++){ + float inc = 0.1 * (float)i; + vec3 next = {inc, inc, inc}; + memcpy(lorenzPoints[i], next, sizeof(vec3)); + } + + float* buffer = glMapBuffer(GL_ARRAY_BUFFER, GL_READ_WRITE); + memcpy(buffer, lorenzPoints, 10 * sizeof(vec3)); + glUnmapBuffer(GL_ARRAY_BUFFER); int i=1; while(!glfwWindowShouldClose(window)) { @@ -71,19 +79,12 @@ int main(int argc, char *argv[]) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glUseProgram(shader1); - if(i<3000){ - float increment = 0.1* (float)i; - float next[3] = {increment, increment, increment}; - //lorenzStep(next, lorenzPoints[i], 0.01f); - memcpy(lorenzPoints[i++], next, sizeof(vec3)); - - - float* buff = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY); - memcpy(buff, lorenzPoints, i * sizeof(vec3)); - glUnmapBuffer(GL_ARRAY_BUFFER); - } + i++; + if(i>10) + i=1; - glDrawArrays(GL_POINTS, 10, 2); + + glDrawArrays(GL_LINE_STRIP, 0, i); glfwSwapBuffers(window); glfwPollEvents(); processInput();