diff options
author | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2009-06-29 11:03:15 (GMT) |
---|---|---|
committer | clifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c> | 2009-06-29 11:03:15 (GMT) |
commit | b8ce36f7e7e76c5cd6c51bc44f651ea43f85a8d7 (patch) | |
tree | 8a8fb60cd2f79854b2a3588d885d9ff301b7810a /polyset.cc | |
parent | c16507211f270805f5223c3d84af6b989f173551 (diff) |
Clifford Wolf:
Added support for OpenGL Lights
git-svn-id: http://svn.clifford.at/openscad/trunk@35 b57f626f-c46c-0410-a088-ec61d464b74c
Diffstat (limited to 'polyset.cc')
-rw-r--r-- | polyset.cc | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -51,6 +51,14 @@ void PolySet::setmatrix(double m[16]) static void gl_draw_triangle(GLint *shaderinfo, const PolySet::Point *p0, const PolySet::Point *p1, const PolySet::Point *p2, bool e0, bool e1, bool e2) { + double ax = p1->x - p0->x, bx = p1->x - p2->x; + double ay = p1->y - p0->y, by = p1->y - p2->y; + double az = p1->z - p0->z, bz = p1->z - p2->z; + double nx = ay*bz - az*by; + double ny = az*bx - ax*bz; + double nz = ax*by - ay*bx; + double nl = sqrt(nx*nx + ny*ny + nz*nz); + glNormal3d(nx / nl, ny / nl, nz / nl); #ifdef ENABLE_OPENCSG if (shaderinfo) { double e0f = e0 ? 2.0 : -1.0; @@ -87,6 +95,9 @@ void PolySet::render_surface(colormode_e colormode, GLint *shaderinfo) const glMultMatrixd(m); if (colormode == COLOR_MATERIAL) { glColor3ub(249, 215, 44); + GLfloat light_diffuse[] = {255 / 255.0, 236 / 255.0, 94 / 255.0, 1.0}; + glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); + glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse); #ifdef ENABLE_OPENCSG if (shaderinfo) { glUniform4f(shaderinfo[1], 249 / 255.0, 215 / 255.0, 44 / 255.0, 1.0); @@ -96,6 +107,9 @@ void PolySet::render_surface(colormode_e colormode, GLint *shaderinfo) const } if (colormode == COLOR_CUTOUT) { glColor3ub(157, 203, 81); + GLfloat light_diffuse[] = {171 / 255.0, 216 / 255.0, 86 / 255.0, 1.0}; + glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); + glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse); #ifdef ENABLE_OPENCSG if (shaderinfo) { glUniform4f(shaderinfo[1], 157 / 255.0, 203 / 255.0, 81 / 255.0, 1.0); |