From 2f98afef5f29acbd2935854030679078c584e274 Mon Sep 17 00:00:00 2001 From: lerabot Date: Wed, 6 Jun 2018 17:28:00 -0400 Subject: [PATCH 1/3] updated the light exemple, but the attenuation are very finicky --- samples/lerabot01/main.c | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/samples/lerabot01/main.c b/samples/lerabot01/main.c index 773b937..67041fb 100644 --- a/samples/lerabot01/main.c +++ b/samples/lerabot01/main.c @@ -151,6 +151,7 @@ void InitGL(int Width, int Height) // We call this right after our OpenG glEnable(GL_LIGHTING); glDisable(GL_LIGHT0); glEnable(GL_LIGHT1); + glEnable(GL_LIGHT2); GLfloat l1_pos[] = {5.0, 0.0, 1.0, 1.0}; GLfloat l1_diff[] = {1.0, 0.0, 0.0, 1.0}; @@ -160,8 +161,19 @@ void InitGL(int Width, int Height) // We call this right after our OpenG glLightfv(GL_LIGHT1, GL_DIFFUSE, l1_diff); glLightfv(GL_LIGHT1, GL_POSITION, l1_pos); glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.0f); - glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.0001); + glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.000005); glLightf(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, 0.00001); + + GLfloat l2_pos[] = {5.0, 0.0, 1.0, 1.0}; + GLfloat l2_diff[] = {0.0, 0.0, 1.0, 1.0}; + GLfloat l2_amb[] = {0.5, 0.5, 0.5, 1.0}; + + //glLightfv(GL_LIGHT1, GL_AMBIENT, l1_amb); + glLightfv(GL_LIGHT2, GL_DIFFUSE, l2_diff); + glLightfv(GL_LIGHT2, GL_POSITION, l2_pos); + glLightf(GL_LIGHT2, GL_CONSTANT_ATTENUATION, 2.0f); + glLightf(GL_LIGHT2, GL_LINEAR_ATTENUATION, 0.1); + glLightf(GL_LIGHT2, GL_QUADRATIC_ATTENUATION, 0.1); } /* The function called when our window is resized (which shouldn't happen, because we're fullscreen) */ @@ -260,17 +272,19 @@ void DrawGLScene() glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer glLoadIdentity(); // Reset The View //glTranslatef(-5.0f, -5.0f, -10.0f); - glTranslatef(-50.0f, 0.0f, -200.0f); - - GLfloat l1_pos[] = {50 + sin(delta) * 100.0f, 25.0, 1.0, 1.0}; - delta+= 0.03; + glTranslatef(-100.0f, 0.0f, -400.0f); + GLfloat l1_pos[] = {100 + sin(delta) * 200.0f, 25.0, 1.0, 1.0}; glLightfv(GL_LIGHT1, GL_POSITION, l1_pos); - //glLightfv(GL_LIGHT1, GL_SPOT_EXPONENT, 3); DrawTexturedQuad(texture[0], l1_pos[0], l1_pos[1], l1_pos[2]); + //GLfloat l2_pos[] = {100, 50 + sin(delta/2) * -150.0f, 1.0, 1.0}; + //glLightfv(GL_LIGHT1, GL_POSITION, l2_pos); + //DrawTexturedQuad(texture[0], l2_pos[0], l2_pos[1], l2_pos[2]); + + delta+= 0.03; for (int i = 0; i < 5; i++) - DrawTexturedQuad(texture[0], i * 20, 0.0f, 0.0f); // Draw the textured quad. + DrawTexturedQuad(texture[0], i * 50, 0.0f, 0.0f); // Draw the textured quad. // swap buffers to display, since we're double buffered. glKosSwapBuffers(); From b72a3f2aa859d17cd845e2143a77849b6d2430b5 Mon Sep 17 00:00:00 2001 From: lerabot Date: Sun, 10 Jun 2018 16:01:15 -0400 Subject: [PATCH 2/3] second light added in --- samples/lerabot01/main.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/samples/lerabot01/main.c b/samples/lerabot01/main.c index 67041fb..3b00571 100644 --- a/samples/lerabot01/main.c +++ b/samples/lerabot01/main.c @@ -161,8 +161,8 @@ void InitGL(int Width, int Height) // We call this right after our OpenG glLightfv(GL_LIGHT1, GL_DIFFUSE, l1_diff); glLightfv(GL_LIGHT1, GL_POSITION, l1_pos); glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.0f); - glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.000005); - glLightf(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, 0.00001); + glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.0003); + glLightf(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, 0.000007); GLfloat l2_pos[] = {5.0, 0.0, 1.0, 1.0}; GLfloat l2_diff[] = {0.0, 0.0, 1.0, 1.0}; @@ -171,9 +171,9 @@ void InitGL(int Width, int Height) // We call this right after our OpenG //glLightfv(GL_LIGHT1, GL_AMBIENT, l1_amb); glLightfv(GL_LIGHT2, GL_DIFFUSE, l2_diff); glLightfv(GL_LIGHT2, GL_POSITION, l2_pos); - glLightf(GL_LIGHT2, GL_CONSTANT_ATTENUATION, 2.0f); - glLightf(GL_LIGHT2, GL_LINEAR_ATTENUATION, 0.1); - glLightf(GL_LIGHT2, GL_QUADRATIC_ATTENUATION, 0.1); + glLightf(GL_LIGHT2, GL_CONSTANT_ATTENUATION, 1.0f); + glLightf(GL_LIGHT2, GL_LINEAR_ATTENUATION, 0.0003); + glLightf(GL_LIGHT2, GL_QUADRATIC_ATTENUATION, 0.000007); } /* The function called when our window is resized (which shouldn't happen, because we're fullscreen) */ @@ -278,9 +278,9 @@ void DrawGLScene() glLightfv(GL_LIGHT1, GL_POSITION, l1_pos); DrawTexturedQuad(texture[0], l1_pos[0], l1_pos[1], l1_pos[2]); - //GLfloat l2_pos[] = {100, 50 + sin(delta/2) * -150.0f, 1.0, 1.0}; - //glLightfv(GL_LIGHT1, GL_POSITION, l2_pos); - //DrawTexturedQuad(texture[0], l2_pos[0], l2_pos[1], l2_pos[2]); + GLfloat l2_pos[] = {100, 50 + sin(delta/2) * -150.0f, 1.0, 1.0}; + glLightfv(GL_LIGHT1, GL_POSITION, l2_pos); + DrawTexturedQuad(texture[0], l2_pos[0], l2_pos[1], l2_pos[2]); delta+= 0.03; for (int i = 0; i < 5; i++) From 375185f24684eddd7cc4a2b0360e01d76db74e3a Mon Sep 17 00:00:00 2001 From: lerabot Date: Mon, 9 Jul 2018 11:59:20 -0400 Subject: [PATCH 3/3] nothing serious --- GL/matrix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GL/matrix.c b/GL/matrix.c index 406deab..90338df 100644 --- a/GL/matrix.c +++ b/GL/matrix.c @@ -88,8 +88,8 @@ static void transpose(GLfloat* m) { static void recalculateNormalMatrix() { memcpy(NORMAL_MATRIX, stack_top(MATRIX_STACKS + (GL_MODELVIEW & 0xF)), sizeof(matrix_t)); - inverse((GLfloat*) NORMAL_MATRIX); transpose((GLfloat*) NORMAL_MATRIX); + inverse((GLfloat*) NORMAL_MATRIX); } void APIENTRY glMatrixMode(GLenum mode) {