having fun messin round
This commit is contained in:
37
src/lorenz.c
37
src/lorenz.c
@@ -29,7 +29,6 @@ void lorenzStep(float next[3], vec3 prev, float dt) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
GLFWwindow* window = initOpenGL();
|
GLFWwindow* window = initOpenGL();
|
||||||
glfwSetKeyCallback(window, &key_pressed);
|
glfwSetKeyCallback(window, &key_pressed);
|
||||||
|
|
||||||
@@ -43,7 +42,7 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
glBindVertexArray(VAO);
|
glBindVertexArray(VAO);
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, VBO);
|
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 );
|
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0 );
|
||||||
glEnableVertexAttribArray(0);
|
glEnableVertexAttribArray(0);
|
||||||
|
|
||||||
@@ -52,18 +51,27 @@ int main(int argc, char *argv[]) {
|
|||||||
mat4x4_identity(proj);
|
mat4x4_identity(proj);
|
||||||
mat4x4_ortho(proj, 0.0, 400.0, 0.0, 400.0, 0.1, 100.0);
|
mat4x4_ortho(proj, 0.0, 400.0, 0.0, 400.0, 0.1, 100.0);
|
||||||
|
|
||||||
// Uniform Projection Matrix
|
|
||||||
glUseProgram(shader1);
|
glUseProgram(shader1);
|
||||||
int projectionLoc = glGetUniformLocation(shader1, "proj");
|
int projLoc = glGetUniformLocation(shader1, "proj");
|
||||||
glUniformMatrix4fv(projectionLoc, 1, GL_FALSE, *proj);
|
//glUniformMatrix4fv(projLoc, 1, GL_FALSE, *proj);
|
||||||
|
|
||||||
|
// PointsArray
|
||||||
vec3* lorenzPoints = malloc(3000 * sizeof(vec3));
|
vec3* lorenzPoints = malloc(3000 * sizeof(vec3));
|
||||||
memset(lorenzPoints, 0, 3000 * sizeof(vec3));
|
memset(lorenzPoints, 0, 3000 * sizeof(vec3));
|
||||||
vec3 initial = {0.1f, 0.1f, 0.1f};
|
vec3 initial = {0.1f, 0.1f, 0.1f};
|
||||||
memcpy(lorenzPoints, initial, sizeof(vec3));
|
memcpy(lorenzPoints, initial, sizeof(vec3));
|
||||||
vec3 sec = {1.0f, 1.0f, 1.0f};
|
vec3 sec = {0.2f, 0.2f, 0.2f};
|
||||||
memcpy(lorenzPoints, sec, sizeof(vec3));
|
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;
|
int i=1;
|
||||||
while(!glfwWindowShouldClose(window)) {
|
while(!glfwWindowShouldClose(window)) {
|
||||||
@@ -71,19 +79,12 @@ int main(int argc, char *argv[]) {
|
|||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
glUseProgram(shader1);
|
glUseProgram(shader1);
|
||||||
|
|
||||||
if(i<3000){
|
i++;
|
||||||
float increment = 0.1* (float)i;
|
if(i>10)
|
||||||
float next[3] = {increment, increment, increment};
|
i=1;
|
||||||
//lorenzStep(next, lorenzPoints[i], 0.01f);
|
|
||||||
memcpy(lorenzPoints[i++], next, sizeof(vec3));
|
|
||||||
|
|
||||||
|
|
||||||
float* buff = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY);
|
glDrawArrays(GL_LINE_STRIP, 0, i);
|
||||||
memcpy(buff, lorenzPoints, i * sizeof(vec3));
|
|
||||||
glUnmapBuffer(GL_ARRAY_BUFFER);
|
|
||||||
}
|
|
||||||
|
|
||||||
glDrawArrays(GL_POINTS, 10, 2);
|
|
||||||
glfwSwapBuffers(window);
|
glfwSwapBuffers(window);
|
||||||
glfwPollEvents();
|
glfwPollEvents();
|
||||||
processInput();
|
processInput();
|
||||||
|
|||||||
Reference in New Issue
Block a user