summaryrefslogtreecommitdiff
path: root/polyset.cc
diff options
context:
space:
mode:
authorclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2009-06-29 11:03:15 (GMT)
committerclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2009-06-29 11:03:15 (GMT)
commitb8ce36f7e7e76c5cd6c51bc44f651ea43f85a8d7 (patch)
tree8a8fb60cd2f79854b2a3588d885d9ff301b7810a /polyset.cc
parentc16507211f270805f5223c3d84af6b989f173551 (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.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/polyset.cc b/polyset.cc
index f811fa3..290fb6d 100644
--- a/polyset.cc
+++ b/polyset.cc
@@ -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);
contact: Jan Huwald // Impressum