4 static void SetProjection(int width, int height, double zMin, double zMax)
6 int left = 0, top = 0, right = width - 1, bottom = height - 1;
7 int focalX = (width > height) ? width : height, focalY = focalX;
8 glViewport(0, height - bottom - 1, right - left + 1, bottom - top + 1);
10 glMatrixMode(GL_PROJECTION);
13 (left - (left + right) / 2.0f) * zMin / focalX,
14 (right - (left + right) / 2.0f) * zMin / focalX,
15 (bottom - (bottom + top) / 2.0f) * zMin / focalY,
16 (top - (bottom + top) / 2.0f) * zMin / focalY,
20 class Snippet : Window
22 displayDriver = "OpenGL";
24 nativeDecorations = true, borderStyle = sizable, hasClose = true, hasMaximize = true, hasMinimize = true;
28 void OnRedraw(Surface surface)
30 float halfWhite[] = {0.5f, 0.5f, 0.5f, 1};
31 float black[] = {0, 0, 0, 1};
32 float blue[] = {0.3f, 0.2f, 1, 1};
33 float ambient[4] = { 0.2f, 0.2f, 0.2f };
35 float light[] = { -0.810f, -0.585f, 0.468f, 0 };
49 1141.996897, -597.672467, 1529.258222, 0,
50 1427.537483, 1281.712735, -565.109902, 0,
51 -811.159554, 1414.213593, 1158.455908, 0,
55 SetProjection(clientSize.w, clientSize.h, 3, 20000);
57 glMatrixMode(GL_MODELVIEW);
61 glScalef(1.0f,1.0f,-1.0f);
64 glMultMatrixd(view.array);
66 // Setup Lighting (Light in world space)
67 #define GL_RESCALE_NORMAL 0x803A
68 glEnable(GL_RESCALE_NORMAL); // glEnable(GL_NORMALIZE);
69 glEnable(GL_CULL_FACE);
70 glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);
71 glShadeModel(GL_SMOOTH);
72 glEnable(GL_LIGHTING);
74 glLightfv(GL_LIGHT0, GL_DIFFUSE, halfWhite);
75 glLightfv(GL_LIGHT0, GL_SPECULAR, halfWhite);
76 glLightfv(GL_LIGHT0, GL_POSITION, light);
79 glMultMatrixd(cubeMatrix.array);
82 glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, (float *)&blue);
83 glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, (float *)&blue);
84 glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, (float *)&blue);
85 glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, (float *)&black);
86 glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, &power);
91 glNormal3f(0, -1, 0); glVertex3f(0.5f, -1, -0.5f);
92 glNormal3f(0, -1, 0); glVertex3f(0.5f, -1, 0.5f);
93 glNormal3f(0, -1, 0); glVertex3f(-0.5f, -1, 0.5f);
94 glNormal3f(0, -1, 0); glVertex3f(-0.5f, -1, -0.5f);
96 glNormal3f(0, 0, -1); glVertex3f(-0.5f, -1, -0.5f);
97 glNormal3f(0, 0, -1); glVertex3f(-0.5f, 0, -0.5f);
98 glNormal3f(0, 0, -1); glVertex3f(0.5f, 0, -0.5f);
99 glNormal3f(0, 0, -1); glVertex3f(0.5f, -1, -0.5f);
101 glNormal3f(0, 1, 0); glVertex3f(0.5f, 0, 0.5f);
102 glNormal3f(0, 1, 0); glVertex3f(0.5f, 0, -0.5f);
103 glNormal3f(0, 1, 0); glVertex3f(-0.5f, 0, -0.5f);
104 glNormal3f(0, 1, 0); glVertex3f(-0.5f, 0, 0.5f);
106 glNormal3f(0, 0, 1); glVertex3f(0.5f, -1, 0.5f);
107 glNormal3f(0, 0, 1); glVertex3f(0.5f, 0, 0.5f);
108 glNormal3f(0, 0, 1); glVertex3f(-0.5f, 0, 0.5f);
109 glNormal3f(0, 0, 1); glVertex3f(-0.5f, -1, 0.5f);
111 glNormal3f(1, 0, 0); glVertex3f(0.5f, -1, -0.5f);
112 glNormal3f(1, 0, 0); glVertex3f(0.5f, 0, -0.5f);
113 glNormal3f(1, 0, 0); glVertex3f(0.5f, 0, 0.5f);
114 glNormal3f(1, 0, 0); glVertex3f(0.5f, -1, 0.5f);
116 glNormal3f(-1, 0, 0); glVertex3f(-0.5f, -1, 0.5f);
117 glNormal3f(-1, 0, 0); glVertex3f(-0.5f, 0, 0.5f);
118 glNormal3f(-1, 0, 0); glVertex3f(-0.5f, 0, -0.5f);
119 glNormal3f(-1, 0, 0); glVertex3f(-0.5f, -1, -0.5f);
125 Snippet snippet { anchor = { horz = -160, vert = -120 } };