- static float ambient[] = {0.1, 0.1, 0.1, 1.0};
- static float diffuse[] = {0.5, 1.0, 1.0, 1.0};
- static float position0[] = {0.0, 0.0, 20.0, 0.0};
- static float position1[] = {0.0, 0.0, -20.0, 0.0};
- static float front_mat_shininess[] = {60.0};
- static float front_mat_specular[] = {0.2, 0.2, 0.2, 1.0};
- static float front_mat_diffuse[] = {0.5, 0.28, 0.38, 1.0};
- /*
- static float back_mat_shininess[] = {60.0};
- static float back_mat_specular[] = {0.5, 0.5, 0.2, 1.0};
- static float back_mat_diffuse[] = {1.0, 1.0, 0.2, 1.0};
- */
- static float lmodel_ambient[] = {1.0, 1.0, 1.0, 1.0};
- static float lmodel_twoside[] = {GL_FALSE};
-
- glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
- glLightfv(GL_LIGHT0, GL_POSITION, position0);
- glEnable(GL_LIGHT0);
-
- glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
- glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
- glLightfv(GL_LIGHT1, GL_POSITION, position1);
- glEnable(GL_LIGHT1);
-
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
- glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
+ if (! GetDocument())
+ return;
+ int nx = GetDocument()->nx();
+ int ny = GetDocument()->ny();
+
+#if 1
+ static float position0[] = {nx/2, ny*2, -ny*2, 0.0f,};
+ static float ambient0[] = {.1f, .1f, .1f, 1.0f};
+ static float diffuse0[] = {1.0f, 1.0f, 1.0f, 1.0f};
+ static float position1[] = {-nx/2, -ny*2, -ny*2, 0.0f,};
+ static float ambient1[] = {.1f, .1f, .1f, .1f};
+ static float diffuse1[] = {1.0f, 1.0f, 1.0f, 1.0f};
+ // static float position0[] = {0.0f, 0.0f, 20.0f, 0.0f};
+ // static float position1[] = {0.0f, 0.0f, -20.0f, 0.0f};
+ static float front_mat_shininess[] = {60.0f};
+ static float front_mat_specular[] = {0.2f, 0.2f, 0.2f, 1.0f};
+ static float front_mat_diffuse[] = {0.3f, 0.3f, 0.3f, 1.0f};
+ static float back_mat_shininess[] = {10.0f};
+ static float back_mat_specular[] = {0.1f, 0.1f, 0.1f, 1.0f};
+ static float back_mat_diffuse[] = {1.0f, 1.0f, 1.0f, 1.0f};
+ static float lmodel_ambient[] = {1.0f, 1.0f, 1.0f, 1.0f};
+ static float lmodel_twoside[] = {GL_TRUE};
+
+ //glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
+ glHint(GL_LINE_SMOOTH, GL_DONT_CARE);
+ glEnable(GL_NORMALIZE);
+
+ glLightfv (GL_LIGHT0, GL_AMBIENT, ambient0);
+ glLightfv (GL_LIGHT0, GL_DIFFUSE, diffuse0);
+ glLightfv (GL_LIGHT0, GL_POSITION, position0);
+ glEnable (GL_LIGHT0);
+
+ glLightfv (GL_LIGHT1, GL_AMBIENT, ambient1);
+ glLightfv (GL_LIGHT1, GL_DIFFUSE, diffuse1);
+ glLightfv (GL_LIGHT1, GL_POSITION, position1);
+ glEnable (GL_LIGHT1);
+
+ glLightModelfv (GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
+ glLightModelfv (GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
+
+ glMaterialfv (GL_FRONT_AND_BACK, GL_SHININESS, front_mat_shininess);
+ glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, front_mat_specular);
+ glMaterialfv (GL_FRONT_AND_BACK, GL_DIFFUSE, front_mat_diffuse);
+ glMaterialfv (GL_BACK, GL_SHININESS, back_mat_shininess);
+ glMaterialfv (GL_BACK, GL_SPECULAR, back_mat_specular);
+ glMaterialfv (GL_BACK, GL_DIFFUSE, back_mat_diffuse);
+
+ glColorMaterial (GL_FRONT_AND_BACK, GL_DIFFUSE);
+ glColorMaterial (GL_FRONT_AND_BACK, GL_SPECULAR);
+ glEnable(GL_COLOR_MATERIAL);
+#else
+ GLfloat impLPos[] = {1.0f, 1.0f, 1.0f, 0.0f};
+
+ GLfloat defaultLightAmb [] = {.2f, .2f, .2f, 1.0f};
+ GLfloat defaultLightDiff [] = {.2f, .2f, .2f, 1.0f};
+ GLfloat defaultLightSpec [] = { .3f, .3f, .3f, 1.0f};
+
+ GLfloat defaultGlobalAmb [] = {.3f, .3f, .3f, 1.0f};
+ GLfloat defaultGlobalDiff[] = {.3f, .3f, .3f, 1.0f};
+
+ GLfloat defaultMatShine[] = { 30.0f };
+ GLfloat defaultMatSpec[] = { .4f, .4f, .4f, 1.0f};
+ GLfloat defaultMatAmb[] = { .3f, .3f, .3f, 1.0f};
+ GLfloat defaultMatDiff[] = { .5f, .5f, .5f, 1.0f};
+
+ GLfloat brassMatAmb[] = { .33f, .22f, .03f, 1.0f};
+ GLfloat brassMatDiff[] = { .78f, .57f, .11f, 1.0f};
+ GLfloat brassMatSpec[] = { .99f, .91f, .81f, 1.0f};
+ GLfloat brassMatShine[] = { 27.8f };
+
+ GLfloat emeraldMatAmb[] = { .02f1, .1745f , .021f, 1.0f };
+ GLfloat emeraldMatDiff[] = { .075f, .6142f , .075f, 1.0f };
+ GLfloat emeraldMatSpec[] = { .633f, .7278f , .633f, 1.0f };
+ GLfloat emeraldMatShine[] = { 76.8f };
+
+ GLfloat slateMatAmb[] = { .02f, .02f , .02f, 1.0f };
+ GLfloat slateMatDiff[] = { .02f, .01f , .01f, 1.0f };
+ GLfloat slateMatSpec[] = { .4f, .4f , .4f , 1.0f };
+ GLfloat slateMatShine[] = { .768f };
+
+ // double opnX = nx, opnY = ny, opnZ = z;
+ // eyeX = 1; eyeY = 1, eyeZ = 1;
+
+ impLPos[0] = nx/2.; impLPos[1]= ny/2.; impLPos[2] = 0.;
+ //opnListNum = 1;
+ //impGraphicsFlag = IMP__3D;
+
+ // glutInitDisplayMode (GLUT_DOUBLE| GLUT_RGB | GLUT_DEPTH | GLUT_ACCUM);
+ // glutInitWindowSize (IMP_WIN_X, IMP_WIN_Y);
+ // glutInitWindowPosition (100, 100);
+ // glutCreateWindow ("- imp3D graphics -" );
+
+ glClearColor (0.0f, 0.0f, 0.0f, 0.0f);
+
+ glShadeModel (GL_SMOOTH);
+ glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
+ glHint(GL_LINE_SMOOTH, GL_DONT_CARE);
+ glEnable(GL_NORMALIZE);
+
+
+ glEnable(GL_DEPTH_TEST);
+
+ glLightfv(GL_LIGHT0, GL_AMBIENT, defaultLightAmb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, defaultLightDiff);
+ glLightfv(GL_LIGHT0, GL_SPECULAR,defaultLightSpec);
+
+ glLightfv(GL_LIGHT1, GL_AMBIENT, defaultLightAmb);
+ glLightfv(GL_LIGHT1, GL_DIFFUSE, defaultLightDiff);
+ glLightfv(GL_LIGHT1, GL_SPECULAR,defaultLightSpec);
+
+ glLightfv(GL_LIGHT2, GL_AMBIENT , defaultLightAmb);
+ glLightfv(GL_LIGHT2, GL_DIFFUSE , defaultLightDiff);
+ glLightfv(GL_LIGHT2, GL_SPECULAR, defaultLightSpec);
+
+ glLightfv(GL_LIGHT0, GL_POSITION,impLPos);
+ glLightfv(GL_LIGHT1, GL_POSITION,impLPos);
+ glLightfv(GL_LIGHT2, GL_POSITION,impLPos);
+
+ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT , defaultMatAmb);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE , defaultMatDiff);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR , defaultMatSpec);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, defaultMatShine);
+
+ glLightModelfv(GL_LIGHT_MODEL_AMBIENT, defaultGlobalAmb);
+
+ glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE);
+
+ glEnable(GL_COLOR_MATERIAL);
+