protected void DrawThumbFinger(int fingerPart) { switch (fingerPart) { case 1: GL.glRotated(-45, 0, 0, 1); GL.glColor3d(1, 1, 1); GLU.gluSphere(objShpere, 0.6, 50, 50); GL.glTranslated(0, 0.2, 0); GL.glRotated(-90, 1, 0, 0); GL.glColor3d(1, 0.8, 0.6); GLU.gluCylinder(objFinger, 0.5, 0.5, 1, 50, 50); GL.glRotated(90, 1, 0, 0); GL.glTranslated(0, 0.8, 0); GL.glRotated(45, 0, 0, 1); break; case 2: GL.glRotated(-45, 0, 0, 1); GL.glColor3d(1, 1, 1); GLU.gluSphere(objShpere, 0.6, 50, 50); GL.glTranslated(0, 0.2, 0); GL.glRotated(-90, 1, 0, 0); GL.glColor3d(1, 0.8, 0.6); GLU.gluCylinder(objFinger, 0.5, 0.5, 0.7, 50, 50); GL.glRotated(90, 1, 0, 0); GL.glTranslated(0, 0.6, 0); GL.glColor3d(1, 1, 1); GLU.gluSphere(objShpere, 0.5, 50, 50); GL.glRotated(45, 0, 0, 1); GL.glTranslated(-4.6, -1.8, 0); break; } }
public override void DrawToy(double[] translateCoords, double[] rotateCoords, bool isShadow) { GL.glTranslated(translateCoords[0], translateCoords[1], translateCoords[2]); if (!isShadow) { GL.glColor3d(1, 1, 1); } else { GL.glDisable(GL.GL_TEXTURE_2D); } GL.glRotated(rotateCoords[0], rotateCoords[1], rotateCoords[2], rotateCoords[3]); if (isShadow) { GL.glCallList(SHADOW_LIST); } else { GL.glCallList(LIST); } GL.glRotated(-rotateCoords[0], rotateCoords[1], rotateCoords[2], rotateCoords[3]); GL.glTranslated(-translateCoords[0], -translateCoords[1], -translateCoords[2]); GL.glDisable(GL.GL_TEXTURE_2D); }
public void Draw() { if (m_uint_DC == 0 || m_uint_RC == 0) { return; } GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); GL.glLoadIdentity(); GL.glTranslatef(-1.0f, -1.0f, -6.0f); drawAxises(); updateTimer(); GL.glTranslated(0.5f, 0.0f, 0.5f); GL.glRotatef(m_RotateAngle, 0, 1.0f, 0); // y axis rotate GL.glRotatef(m_FallAngle, 1, 0, 0); // x axis rotate GL.glTranslated(-0.5f, 0.0f, -0.5f); GL.glEnable(GL.GL_TEXTURE_2D); GL.glBindTexture(GL.GL_TEXTURE_2D, m_Texture[0]); drawDreidel(); GL.glDisable(GL.GL_TEXTURE_2D); GL.glFlush(); WGL.wglSwapBuffers(m_uint_DC); }
public void CreateRobotList() { GL.glPushMatrix(); // // hierarchical list // GL.glNewList(ROBOT_LIST, GL.GL_COMPILE); // BASE : no rotations!!! Angle will be implemented in the CALL routine // before call to CreateRobotList() GL.glColor3f(0, 0, 0.5f); GLU.gluCylinder(obj, 3 * r, 3 * r, r * 1.2, 40, 20); GL.glTranslated(0, 0, r * 1.2); GLU.gluDisk(obj, 0, 3 * r, 40, 20); GL.glColor3f(0, 0, 1); GLU.gluSphere(obj, r * 1.2, 20, 20); // end base // transformations GL.glRotatef(SHOULDER_angle, 1, 0, 0); // call SHOULDER GL.glCallList(SHOULDER_LIST); // transformations //no need in glTranslated 0, 0, SHOULDER_length //it is located properly now !!! GL.glRotatef(ARM_angle, 1, 0, 0); // call ARM GL.glCallList(ARM_LIST); GL.glEndList(); GL.glPopMatrix(); }
void drawFloor() { GL.glEnable(GL.GL_LIGHTING); GL.glPushMatrix(); GL.glColor3d(0, 1, 0); GL.glTranslated(0, -0.01, 0); float[] grass_ambuse = { 0.03f, 0.56f, 0.19f, 1.0f }; float[] grass_specular = { 0.0f, 0.0f, 0.0f, 1.0f }; float[] grass_shininess = { 10 }; GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, grass_ambuse); GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_SPECULAR, grass_specular); GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_SHININESS, grass_shininess); GL.glBegin(GL.GL_QUADS); GL.glNormal3f(0, 1, 0); GL.glVertex3f(-200, 0, -200); GL.glVertex3f(-200, 0, 200); GL.glVertex3f(200, 0, 200); GL.glVertex3f(200, 0, -200); GL.glEnd(); GL.glDisable(GL.GL_LIGHTING); GL.glPopMatrix(); }
void DrawObjects(bool isForShades, int c) { if (!isForShades) { GL.glColor3d(1, 0, 0); } else if (c == 1) { GL.glColor3d(0.5, 0.5, 0.5); } else { GL.glColor3d(0.8, 0.8, 0.8); } GL.glRotated(90, 1, 0, 0); if (!isForShades) { GL.glColor3d(1, 1, 1); } else if (c == 1) { GL.glColor3d(0.5, 0.5, 0.5); } else { GL.glColor3d(0.8, 0.8, 0.8); } if ((c == 1) && (isForShades)) { GL.glTranslated(0, 0, 0); GL.glScaled(0.027, 0.027, 0.027); GL.glColor3d(0, 0, 0); ch1.DrawModel2(); GL.glTranslated(0, 0, -200); GL.glScaled(0.6, 0.6, 0.6); ch.DrawModel2(); } else if ((c == 1) && (!isForShades)) { GL.glTranslated(0, 0, 0); GL.glScaled(0.027, 0.027, 0.027); ch1.DrawModel(); GL.glTranslated(0, 0, -200); GL.glScaled(0.6, 0.6, 0.6); ch.DrawModel(); } }
public void Drawlake() { float[] lake_ambuse = { 0.0117f, 0.4296f, 0.6562f, 0.3f }; GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, lake_ambuse); for (int ll = 0; ll < 6; ll++) { GL.glPushMatrix(); GL.glTranslated(160 - (ll * 70), 0, 0); GL.glColor4f(0.0117f, 0.4296f, 0.6562f, 0.5f); GL.glRotatef(90, 1, 0, 0); GLU.gluDisk(obj, 0, lake_size, 30, 30);// size of lake GL.glPopMatrix(); } }
protected void DrawLightSource() { if (enableLightSource) { GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, lightPosition); GL.glEnable(GL.GL_LIGHTING); GL.glEnable(GL.GL_COLOR_MATERIAL); GL.glTranslated(lightPosition[0], lightPosition[1], lightPosition[2]); GL.glColor3d(1, 1, 0); GLUT.glutSolidSphere(0.5, 50, 50); GL.glTranslated(-lightPosition[0], -lightPosition[1], -lightPosition[2]); } else { GL.glDisable(GL.GL_LIGHTING); } }
void DrawFiguresRef() { GL.glPushMatrix(); // must be in scene to be reflected too GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, pos); //Draw Light Source GL.glDisable(GL.GL_LIGHTING); GL.glTranslatef(pos[0], pos[1], pos[2]); //Yellow Light source GL.glColor3f(1, 1, 0); GL.glTranslatef(-pos[0], -pos[1], -pos[2]); //projection line from source to plane GL.glBegin(GL.GL_LINES); GL.glColor3d(0.5, 0.5, 0); GL.glVertex3d(pos[0], pos[1], 0); GL.glVertex3d(pos[0], pos[1], pos[2]); GL.glEnd(); GL.glEnable(GL.GL_LIGHTING); GL.glRotated(intOptionB, 0, 0, 1); GL.glColor3f(1, 0, 0); GL.glTranslated(0, -0.5, 1); GL.glRotated(intOptionC, 1, 1, 1); GL.glRotated(-intOptionC, 1, 1, 1); GL.glTranslated(0, -0.5, -1); GL.glTranslated(1, 2, 1.5); GL.glRotated(90, 1, 0, 0); GL.glColor3d(0, 1, 1); GL.glRotated(intOptionB, 1, 0, 0); GL.glRotated(-intOptionB, 1, 0, 0); GL.glRotated(-90, 1, 0, 0); GL.glTranslated(-1, -2, -1.5); GL.glRotated(intOptionB, 0, 0, 1); GL.glPopMatrix(); }
void drawLake() { GL.glEnable(GL.GL_LIGHTING); GL.glCallList(WATER_MAT); GL.glPushMatrix(); if (ScrollValue[16] >= 0) { GL.glScaled(1, 1, 1 + ScrollValue[16]); } else { GL.glScaled(1 + ScrollValue[16], 1, 1); } GL.glTranslated(ScrollValue[12], 0, ScrollValue[13]); GL.glRotated(90, 1, 0, 0); GLU.gluDisk(obj, 0, ScrollValue[14], 30, 30); GL.glPopMatrix(); GL.glDisable(GL.GL_LIGHTING); }
void PrepareLists() { float ARM_length, SHOULDER_length; ARM_length = 2; ARM_angle = -45; SHOULDER_length = 2.5f; SHOULDER_angle = 10; ROBOT_angle = 45; r = 0.3f; ROBOT_LIST = GL.glGenLists(3); ARM_LIST = ROBOT_LIST + 1; SHOULDER_LIST = ROBOT_LIST + 2; GL.glPushMatrix(); GL.glNewList(ARM_LIST, GL.GL_COMPILE); //cone GL.glColor3f(0.5f, 0, 0); GLU.gluCylinder(obj, r, 0, ARM_length, 20, 20); GL.glTranslated(0, 0, ARM_length); //internal disk GL.glColor3f(1, 1, 0); GLU.gluDisk(obj, 0, r * 0.5, 20, 20); //external disk GL.glColor3f(1, 0, 0); GLU.gluDisk(obj, r * 0.5, r * 1.5, 20, 20); GL.glEndList(); GL.glPopMatrix(); GL.glPushMatrix(); GL.glNewList(SHOULDER_LIST, GL.GL_COMPILE); GL.glColor3f(0, 0.5f, 0); GLU.gluCylinder(obj, r, r, SHOULDER_length, 20, 20); GL.glTranslated(0, 0, SHOULDER_length); GL.glColor3f(0, 1, 0); GLU.gluSphere(obj, r * 1.2, 20, 20); GL.glEndList(); GL.glPopMatrix(); CreateRobotList(); }
protected void DrawSingleFinger(int fingerPart, double returnToZero) { switch (fingerPart) { case 1: GL.glColor3d(1, 1, 1); GLU.gluSphere(objShpere, 0.6, 50, 50); GL.glTranslated(0, 0.2, 0); GL.glRotated(-90, 1, 0, 0); GL.glColor3d(1, 0.8, 0.6); GLU.gluCylinder(objFinger, 0.5, 0.5, 1, 50, 50); GL.glRotated(90, 1, 0, 0); GL.glTranslated(0, 0.8, 0); break; case 2: GL.glColor3d(1, 1, 1); GLU.gluSphere(objShpere, 0.6, 50, 50); GL.glTranslated(0, 0.2, 0); GL.glRotated(-90, 1, 0, 0); GL.glColor3d(1, 0.8, 0.6); GLU.gluCylinder(objFinger, 0.5, 0.5, 0.7, 50, 50); GL.glRotated(90, 1, 0, 0); GL.glTranslated(0, 0.8, 0); break; case 3: GL.glColor3d(1, 1, 1); GLU.gluSphere(objShpere, 0.6, 50, 50); GL.glTranslated(0, 0.2, 0); GL.glRotated(-90, 1, 0, 0); GL.glColor3d(1, 0.8, 0.6); GLU.gluCylinder(objFinger, 0.5, 0.5, 0.7, 50, 50); GL.glRotated(90, 1, 0, 0); GL.glTranslated(0, 0.6, 0); GL.glColor3d(1, 1, 1); GLU.gluSphere(objShpere, 0.5, 50, 50); GL.glTranslated(-returnToZero, -5.1, 0); break; } }
public override void DrawToy(double[] translateCoords, double[] rotateCoords, bool isShadow) { float[] material = new float[3]; material[0] = 0.0215f; material[1] = 0.1745f; material[2] = 0.0215f; GL.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT, material); material[0] = 0.07568f; material[1] = 0.61424f; material[2] = 0.07568f; GL.glMaterialfv(GL.GL_FRONT, GL.GL_DIFFUSE, material); material[0] = 0.633f; material[1] = 0.727811f; material[2] = 0.633f; GL.glMaterialfv(GL.GL_FRONT, GL.GL_SPECULAR, material); GL.glMaterialf(GL.GL_FRONT, GL.GL_SHININESS, 5f); GL.glTranslated(translateCoords[0], translateCoords[1], translateCoords[2]); if (!isShadow) { GL.glColor3d(1, 1, 1); } else { GL.glDisable(GL.GL_TEXTURE_2D); } GL.glRotated(rotateCoords[0], rotateCoords[1], rotateCoords[2], rotateCoords[3]); GL.glScaled(10, 10, 10); if (isShadow) { GL.glCallList(SHADOW_LIST); } else { GL.glCallList(LIST); } GL.glScaled(0.1, 0.1, 0.1); GL.glRotated(-rotateCoords[0], rotateCoords[1], rotateCoords[2], rotateCoords[3]); GL.glTranslated(-translateCoords[0], -translateCoords[1], -translateCoords[2]); GL.glDisable(GL.GL_TEXTURE_2D); }
public void Draw() { if (m_uint_DC == 0 || m_uint_RC == 0) { return; } GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT | GL.GL_STENCIL_BUFFER_BIT); GL.glLoadIdentity(); GLU.gluLookAt(ScrollValue[1], 1, 10, 0, 0, 0, 0, 1, 0); GL.glTranslated(0, 0, -6); GL.glRotated(20, 1, 0, 0); //DrawAxes(Color.Red, Color.Green, Color.Blue); UpdateScrollInput(); DrawLights(); DrawMirrors(); DrawFigures(); GL.glFlush(); WGL.wglSwapBuffers(m_uint_DC); }
public void Draw() { float delta = 0; double[] ModelViewMatrixBeforeTransforms = new double[16]; double[] CurrentTraslation = new double[16]; if (m_uint_DC == 0 || m_uint_RC == 0) { return; } GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT | GL.GL_STENCIL_BUFFER_BIT); GL.glLoadIdentity(); if (enableLookAtValue) { GLU.gluLookAt(LookAtNumberValue[0], LookAtNumberValue[1], LookAtNumberValue[2], LookAtNumberValue[3], LookAtNumberValue[4], LookAtNumberValue[5], LookAtNumberValue[6], LookAtNumberValue[7], LookAtNumberValue[8]); } GL.glTranslatef(0.0f, 0.0f, -20.0f); if (enableRotate) { GL.glRotatef(viewAngle, 0.0f, 1.0f, 0.0f); viewAngle -= 2f; } DrawRoom(); DrawOldAxes(); DrawLightSource(); GL.glGetDoublev(GL.GL_MODELVIEW_MATRIX, ModelViewMatrixBeforeTransforms); GL.glLoadIdentity(); if (coordSysMoveDirection != 0) { delta = 5.0f * Math.Abs(coordSysMoveDirection) / coordSysMoveDirection; switch (Math.Abs(coordSysMoveDirection)) { case 1: GL.glTranslatef(delta / 20, 0, 0); break; case 2: GL.glTranslatef(0, delta / 20, 0); break; case 3: GL.glTranslatef(0, 0, delta / 20); break; case 4: GL.glRotatef(delta, 1, 0, 0); break; case 5: GL.glRotatef(delta, 0, 1, 0); break; case 6: GL.glRotatef(delta, 0, 0, 1); break; } } GL.glGetDoublev(GL.GL_MODELVIEW_MATRIX, CurrentTraslation); GL.glLoadMatrixd(AccumulatedTraslations); GL.glMultMatrixd(CurrentTraslation); GL.glGetDoublev(GL.GL_MODELVIEW_MATRIX, AccumulatedTraslations); GL.glLoadMatrixd(ModelViewMatrixBeforeTransforms); GL.glMultMatrixd(AccumulatedTraslations); DrawAxes(); GL.glCallList(handList); if (enableReflection) { GL.glEnable(GL.GL_BLEND); GL.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA); GL.glEnable(GL.GL_STENCIL_TEST); GL.glStencilOp(GL.GL_REPLACE, GL.GL_REPLACE, GL.GL_REPLACE); GL.glStencilFunc(GL.GL_ALWAYS, 1, 0xFFFFFFFF); GL.glColorMask((byte)GL.GL_FALSE, (byte)GL.GL_FALSE, (byte)GL.GL_FALSE, (byte)GL.GL_FALSE); GL.glDisable(GL.GL_DEPTH_TEST); //DrawFloor(); GL.glCallList(floorMainList); GL.glColorMask((byte)GL.GL_TRUE, (byte)GL.GL_TRUE, (byte)GL.GL_TRUE, (byte)GL.GL_TRUE); GL.glEnable(GL.GL_DEPTH_TEST); GL.glStencilFunc(GL.GL_EQUAL, 1, 0xFFFFFFFF); GL.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP); GL.glEnable(GL.GL_STENCIL_TEST); GL.glPushMatrix(); GL.glScalef(1, -1, 1); GL.glEnable(GL.GL_CULL_FACE); GL.glCullFace(GL.GL_BACK); GL.glTranslated(0, 3, 0); DrawFigures(); GL.glCullFace(GL.GL_FRONT); DrawFigures(); GL.glDisable(GL.GL_CULL_FACE); GL.glPopMatrix(); GL.glDepthMask((byte)GL.GL_FALSE); //DrawFloor(); GL.glCallList(floorMainList); GL.glDepthMask((byte)GL.GL_TRUE); GL.glDisable(GL.GL_STENCIL_TEST); } GL.glFlush(); WGL.wglSwapBuffers(m_uint_DC); }
/********************************************************************************************************** * * * * MAIN DRAW FUNCTION * * * **********************************************************************************************************/ public void Draw() { if (m_uint_DC == 0 || m_uint_RC == 0) { return; } GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT | GL.GL_STENCIL_BUFFER_BIT); GL.glViewport(0, 0, Width, Height); GL.glLoadIdentity(); GLU.gluLookAt(ScrollValue[0], ScrollValue[1], ScrollValue[2], ScrollValue[3], ScrollValue[4], ScrollValue[5], ScrollValue[6], ScrollValue[7], ScrollValue[8]); GL.glRotatef(xAngle, 1.0f, 0.0f, 0.0f); GL.glRotatef(yAngle, 0.0f, 1.0f, 0.0f); GL.glRotatef(zAngle, 0.0f, 0.0f, 1.0f); GL.glTranslatef(xShift, yShift, zShift); pos[0] = light_position[0] = ScrollValue[9]; pos[1] = light_position[1] = ScrollValue[10]; pos[2] = light_position[2] = ScrollValue[11]; pos[3] = light_position[3] = 0; GL.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, light_ambient); GL.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, light_diffuse); GL.glLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, light_specular); GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, light_position); GL.glLightModelfv(GL.GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); GL.glEnable(GL.GL_LIGHT0); /* * * Reflection * */ GL.glEnable(GL.GL_BLEND); GL.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA); if (reflectionOn) { //draw only to STENCIL buffer GL.glEnable(GL.GL_STENCIL_TEST); GL.glStencilOp(GL.GL_REPLACE, GL.GL_REPLACE, GL.GL_REPLACE); GL.glStencilFunc(GL.GL_ALWAYS, 1, 0xFFFFFFFF); GL.glColorMask((byte)GL.GL_FALSE, (byte)GL.GL_FALSE, (byte)GL.GL_FALSE, (byte)GL.GL_FALSE); GL.glDisable(GL.GL_DEPTH_TEST); drawLake(); // restore regular settings GL.glColorMask((byte)GL.GL_TRUE, (byte)GL.GL_TRUE, (byte)GL.GL_TRUE, (byte)GL.GL_TRUE); GL.glEnable(GL.GL_DEPTH_TEST); // reflection is drawn only where STENCIL buffer value equal to 1 GL.glStencilFunc(GL.GL_EQUAL, 1, 0xFFFFFFFF); GL.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP); /* * * draw reflected scene * */ GL.glEnable(GL.GL_LIGHTING); for (currentTree = 0; currentTree < numOfTrees; currentTree++) { GL.glPushMatrix(); //GL.glTranslated(randX[currentTree], 0,randZ[currentTree]); GL.glTranslated(locationX[currentTree], 0, locationZ[currentTree]); GL.glRotated(locationRotateY[currentTree], 0, 1, 0); GL.glScalef(1, -1, 1); //swap on Z axis if (scullFaceOn) { GL.glEnable(GL.GL_CULL_FACE); GL.glCullFace(GL.GL_BACK); GL.glCallList(TREE_LIST + currentTree); GL.glCullFace(GL.GL_FRONT); GL.glCallList(TREE_LIST + currentTree); GL.glDisable(GL.GL_CULL_FACE); } else { GL.glCallList(TREE_LIST + currentTree); } GL.glPopMatrix(); } drawLake(); GL.glStencilFunc(GL.GL_NOTEQUAL, 1, 0xFFFFFFFF); GL.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP); // really draw floor //( half-transparent ( see its color's alpha byte))) // in order to see reflected objects //GL.glDepthMask((byte)GL.GL_FALSE); GL.glDepthMask((byte)GL.GL_TRUE); if (!textureOn) { drawFloor(); } else { drawFloorTextured(); DrawTexturedCube(); } GL.glDisable(GL.GL_LIGHTING); GL.glDisable(GL.GL_STENCIL_TEST); } else { GL.glEnable(GL.GL_LIGHTING); drawLake(); if (!textureOn) { drawFloor(); } else { drawFloorTextured(); DrawTexturedCube(); } GL.glDisable(GL.GL_LIGHTING); } DrawLight(); /* * Draw trees */ GL.glEnable(GL.GL_LIGHTING); GL.glPushMatrix(); for (currentTree = 0; currentTree < numOfTrees; currentTree++) { GL.glPushMatrix(); //GL.glTranslated(randX[currentTree], 0, randZ[currentTree]); GL.glTranslated(locationX[currentTree], 0, locationZ[currentTree]); GL.glRotated(locationRotateY[currentTree], 0, 1, 0); GL.glCallList(TREE_LIST + currentTree); GL.glPopMatrix(); } GL.glPopMatrix(); /* * Draw trees shadows */ GL.glDisable(GL.GL_LIGHTING); GL.glColor3d(0, 0, 0); if (shadowOn) { GL.glPushMatrix(); MakeShadowMatrix(ground); GL.glMultMatrixf(cubeXform); for (currentTree = 0; currentTree < numOfTrees; currentTree++) { GL.glPushMatrix(); //GL.glTranslated(randX[currentTree], 0, randZ[currentTree]); GL.glTranslated(locationX[currentTree], 0, locationZ[currentTree]); GL.glRotated(locationRotateY[currentTree], 0, 1, 0); GL.glCallList(TREE_LIST + currentTree); GL.glPopMatrix(); } GL.glPopMatrix(); } GL.glFlush(); WGL.wglSwapBuffers(m_uint_DC); }
public void DrawShadowHand(bool side) { GL.glPushMatrix(); GL.glTranslated(0, 0, 0.23f); GL.glPushMatrix(); if (side == false) { GL.glTranslatef(0, 0.6f, 0); if (WeaponIndex == 1 || WeaponIndex == 2) { GL.glRotatef(ShoulderLeftAngle / 10, 0, 0, 1); GL.glRotatef(WeaponPlace, 0, 0, 1);//hand Move from fire } else { GL.glRotatef(-ShoulderLeftAngle, 0, 0, 1); } GL.glTranslatef(0, -0.6f, 0); } else { GL.glTranslatef(0, 0.6f, 0); if (WeaponIndex == 1 || WeaponIndex == 2) { GL.glRotatef(-ShoulderRightAngle / 10, 0, 0, 1); GL.glRotatef(WeaponPlace, 0, 0, 1);//hand Move from fire } else { GL.glRotatef(-ShoulderRightAngle, 0, 0, 1); } GL.glTranslatef(0, -0.6f, 0); } GL.glTranslatef(0, 0.6f, 0.55f); GLU.gluCylinder(obj, radius, radius, radius * 1.2, 40, 20); GL.glTranslated(0, 0, radius * 1.2); GLU.gluDisk(obj, 0, radius, 40, 20); GLU.gluSphere(obj, radius * 1.2, 20, 20); GL.glTranslatef(0, -0.6f, -0.55f); // build Robot shoulder GL.glCallList(SHOULDER_SHADOW_LIST); GL.glRotatef(ArmLeftAngle, 1, 0, 0); //Move down hand with WeaponIndex if (WeaponIndex == 2) { GL.glRotatef(-WeaponPlace, 0, 1, 0); GL.glRotatef(WeaponPlace, 0, 0, 1); } // build Robot arm GL.glCallList(ARM_SHADOW_LIST); GL.glPopMatrix(); if (IsMoving == false) //do not see bullets when walking { GL.glPushMatrix(); if (WeaponIndex == 2) { GL.glTranslatef(0.2f, 0.2f, 1.4f); GL.glRotatef(-8, 0, 1, 0); } else//WeaponIndex 1 { GL.glTranslatef(2.2f, 1.4f, 1.3f); GL.glRotatef(-8, 0, 1, 0); } GL.glRotatef(90, 0, 1, 0); GL.glTranslatef(0, 0, ShootDist); if (WeaponIndex == 1) { //draw bullet radius = radius * 2.2f; GL.glColor3f(0.0f, 0.0f, 0); GLU.gluCylinder(obj, radius / 4.5f, radius / 4.5f, radius / 2, 40, 20); GLU.gluDisk(obj, 0, radius / 4.5f, 20, 20); GL.glTranslatef(0, 0, radius / 2); GLU.gluCylinder(obj, radius / 4.5f, 0, radius / 4, 40, 20); radius = radius / 2.2f; } else if (WeaponIndex == 2) { //draw bullet GL.glColor3f(0.0f, 0.0f, 0); GLU.gluCylinder(obj, radius / 1.3f, radius / 1.3f, radius * 7, 40, 20); GLU.gluDisk(obj, 0, radius / 1.3f, 20, 20); GL.glTranslatef(0, 0, radius * 7); GLU.gluCylinder(obj, radius / 1.3f, 0, radius * 5, 40, 20); } GL.glPopMatrix(); } GL.glPopMatrix(); }
void DrawDynamicShadowHand() { switch (WeaponIndex) { case 0: GL.glPushMatrix(); GL.glNewList(SHOULDER_SHADOW_LIST, GL.GL_COMPILE); //shoulder GL.glTranslatef(0, 0.6f, 0); GL.glTranslated(0, 0, shoulderLength - 0.55); GL.glRotatef(55, 1, 0, 0); GLU.gluCylinder(obj, radius, radius, shoulderLength, 20, 20); GL.glTranslated(0, 0, shoulderLength); GLU.gluSphere(obj, 1.3 * radius, 20, 20); GL.glEndList(); GL.glPopMatrix(); GL.glPushMatrix(); GL.glNewList(ARM_SHADOW_LIST, GL.GL_COMPILE); //arm GL.glRotatef(-30, 1, 0, 0); GLU.gluCylinder(obj, radius, radius, armLength, 20, 20); GL.glTranslated(0, 0, armLength); GLU.gluSphere(obj, radius * 2.2, 20, 20); GL.glEndList(); GL.glPopMatrix(); break; case 1: GL.glPushMatrix(); GL.glNewList(SHOULDER_SHADOW_LIST, GL.GL_COMPILE); //shoulder GL.glTranslatef(0, 0.6f, 0); GL.glTranslated(0, 0, shoulderLength - 0.55); GL.glRotatef(65, 0, 1, 0); GLU.gluCylinder(obj, radius, radius, shoulderLength, 20, 20); GL.glTranslated(0, 0, shoulderLength); GLU.gluSphere(obj, 1.3 * radius, 20, 20); GL.glEndList(); GL.glPopMatrix(); GL.glPushMatrix(); GL.glNewList(ARM_SHADOW_LIST, GL.GL_COMPILE); //arm GL.glRotatef(-80, 1, 0, 0); GL.glRotatef(20, 0, 1, 0); GLU.gluCylinder(obj, radius, radius, armLength, 20, 20); GL.glTranslated(0, 0, armLength); GLU.gluSphere(obj, radius * 2.2, 20, 20); //gun1 GL.glTranslatef(0, 0.6f, 0); GL.glScalef(1.5f, 1.5f, 1.5f); gun1.DrawModel(false, 1); break; case 2: GL.glPushMatrix(); GL.glNewList(SHOULDER_SHADOW_LIST, GL.GL_COMPILE); //shoulder GL.glTranslatef(0, 0.6f, 0); GL.glTranslated(0, 0, shoulderLength - 0.55); GL.glRotatef(65, 1, 0, 0); GLU.gluCylinder(obj, radius, radius, shoulderLength, 20, 20); GL.glTranslated(0, 0, shoulderLength); GLU.gluSphere(obj, 1.3 * radius, 20, 20); GL.glEndList(); GL.glPopMatrix(); GL.glPushMatrix(); GL.glNewList(ARM_SHADOW_LIST, GL.GL_COMPILE); //arm GL.glRotatef(-80, 1, 0, 0); GL.glRotatef(90, 0, 1, 0); GLU.gluCylinder(obj, radius, radius, armLength, 20, 20); GL.glTranslated(0, 0, armLength); GLU.gluSphere(obj, radius * 2.2, 20, 20); //gun2 GL.glRotatef(-30, 0, 0, 1); GL.glTranslatef(0, 0.6f, 0); GL.glScalef(1.3f, 1.3f, 1.3f); gun2.DrawModel(false, 1); break; case 3: GL.glPushMatrix(); GL.glNewList(SHOULDER_SHADOW_LIST, GL.GL_COMPILE); //shoulder GL.glTranslatef(0, 0.6f, 0); GL.glTranslated(0, 0, shoulderLength - 0.55); GL.glRotatef(55, 1, 0, 0); GLU.gluCylinder(obj, radius, radius, shoulderLength, 20, 20); GL.glTranslated(0, 0, shoulderLength); GLU.gluSphere(obj, 1.3 * radius, 20, 20); GL.glEndList(); GL.glPopMatrix(); GL.glPushMatrix(); GL.glNewList(ARM_SHADOW_LIST, GL.GL_COMPILE); //arm GL.glRotatef(-30, 1, 0, 0); GLU.gluCylinder(obj, radius, radius, armLength, 20, 20); GL.glTranslated(0, 0, armLength); GLU.gluSphere(obj, radius * 2.2, 20, 20); //sword GL.glScalef(0.3f, 0.3f, 0.3f); sword.DrawModel(false, 1); GL.glScalef(-0.3f, -0.3f, -0.3f); break; } GL.glEndList(); GL.glPopMatrix(); }
public void PrepareShadow() { radius = 0.18f; Robot_SHADOW_LIST = GL.glGenLists(7); ARM_SHADOW_LIST = Robot_SHADOW_LIST + 1; SHOULDER_SHADOW_LIST = Robot_SHADOW_LIST + 2; HAND_SHADOW_LIST = Robot_SHADOW_LIST + 3; BODY_SHADOW_LIST = Robot_SHADOW_LIST + 4; HEAD_SHADOW_LIST = Robot_SHADOW_LIST + 5; LEG_UP_SHADOW_LIST = Robot_SHADOW_LIST + 6; LEG_DOWN_SHADOW_LIST = Robot_SHADOW_LIST + 7; GL.glPushMatrix(); GL.glNewList(HEAD_SHADOW_LIST, GL.GL_COMPILE); GL.glTranslatef(0, 1, 0); //head GL.glPushMatrix(); GL.glTranslatef(0, 1, 0); GL.glRotatef(-90, 1, 0, 0); GLU.gluSphere(obj, radius * 3.5, 20, 20); GL.glRotatef(180, 1, 0, 0); GLU.gluCylinder(obj, 3.5 * radius, 3.5 * radius, radius * 2, 20, 20); GL.glTranslatef(0, 0, radius * 2); GLU.gluCylinder(obj, 3.5 * radius, 0.5, radius * 2, 20, 20); GL.glTranslatef(0, 0, radius * 2); GLU.gluCylinder(obj, 0.5, 0, radius * 2, 20, 20); GL.glPopMatrix(); GL.glEndList(); GL.glPopMatrix(); GL.glPushMatrix(); GL.glNewList(BODY_SHADOW_LIST, GL.GL_COMPILE); //ALL body //neck GL.glPushMatrix(); GL.glRotatef(90, 1, 0, 0); GL.glTranslatef(0, 0, -2.0f); GLU.gluCylinder(obj, 1.5 * radius, 1.5 * radius, bodyLength, 20, 20); GL.glPopMatrix(); ////body up GL.glRotatef(90, 1, 0, 0); GL.glTranslatef(0, 0, -1.2f); GLU.gluCylinder(obj, radius, 6 * radius, bodyLength / 4, 20, 20); GL.glTranslatef(0, 0, 1.2f); //body midle GL.glScalef(1.0f, -1.0f, 1.0f); GL.glTranslatef(0, 0, -(bodyLength / 4 + 0.2f)); GLU.gluCylinder(obj, 6 * radius, 3 * radius, bodyLength / 1.5f, 20, 20); GL.glTranslatef(0, 0, (bodyLength / 4 + 0.2f)); GL.glScalef(1.0f, 1.0f, 1.0f); //Tusik GLU.gluCylinder(obj, 3 * radius, 3 * radius, bodyLength / 1.5f, 20, 20); //body down GL.glTranslatef(0, 0, (bodyLength / 1.5f)); GLU.gluCylinder(obj, 3 * radius, radius, bodyLength / 3.5f, 10, 10); GL.glTranslatef(0, 0, -(bodyLength / 1.5f)); GL.glRotatef(-90, 1, 0, 0); GL.glEndList(); GL.glPopMatrix(); DrawDynamicShadowHand(); GL.glPushMatrix(); GL.glNewList(LEG_UP_SHADOW_LIST, GL.GL_COMPILE); //leg_up GLU.gluCylinder(obj, 1.5f * radius, 1.5f * radius, legUpLength, 20, 20); GL.glTranslated(0, 0, legUpLength); GLU.gluSphere(obj, radius * 1.7f, 20, 20); GL.glEndList(); GL.glPopMatrix(); GL.glPushMatrix(); GL.glNewList(LEG_DOWN_SHADOW_LIST, GL.GL_COMPILE); //leg_down GLU.gluCylinder(obj, 1.5f * radius, 1.5f * radius, legDownLength, 20, 20); GL.glTranslated(0, 0, legDownLength); GLU.gluSphere(obj, 1.7f * radius, 20, 20); GL.glEndList(); GL.glPopMatrix(); }
void DrawMirrors() { //only wall, draw only to STENCIL buffer GL.glEnable(GL.GL_BLEND); GL.glEnable(GL.GL_STENCIL_TEST); GL.glStencilOp(GL.GL_REPLACE, GL.GL_REPLACE, GL.GL_REPLACE); // change stencil according to the object color GL.glStencilFunc(GL.GL_ALWAYS, 1, 0xFFFFFFFF); // draw wall always GL.glColorMask((byte)GL.GL_FALSE, (byte)GL.GL_FALSE, (byte)GL.GL_FALSE, (byte)GL.GL_FALSE); GL.glDisable(GL.GL_DEPTH_TEST); // add mirrors for STENCIL buffer backMirrorSurface.Draw(backMinusArray); rightMirrorSurface.Draw(rightMinusArray); leftMirrorSurface.Draw(leftMinusArray); // restore regular settings GL.glColorMask((byte)GL.GL_TRUE, (byte)GL.GL_TRUE, (byte)GL.GL_TRUE, (byte)GL.GL_TRUE); GL.glEnable(GL.GL_DEPTH_TEST); // reflection is drawn only where STENCIL buffer value equal to 1 GL.glStencilFunc(GL.GL_EQUAL, 1, 0xFFFFFFFF); GL.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP); // keep object origenal color GL.glEnable(GL.GL_STENCIL_TEST); // draw reflected scene for back mirror GL.glPushMatrix(); GL.glScalef(1, 1, -1); //swap on Z axis GL.glTranslated(0, 0, mirrorWidth); rubiksCube.Draw(); GL.glPopMatrix(); // draw reflected left mirror scene for right mirror scene GL.glPushMatrix(); //GL.glScalef(-1, 1, 1); //swap on Z axis GL.glTranslated(mirrorWidth * 2, 0, 0); rubiksCube.Draw(); GL.glPopMatrix(); // draw reflected scene for right mirror GL.glPushMatrix(); GL.glScalef(-1, 1, 1); //swap on X axis GL.glTranslated(-mirrorWidth, 0, 0); leftMirrorSurface.Draw(leftMinusArray); rubiksCube.Draw(); GL.glPopMatrix(); // draw reflected right mirror scene for left mirror scene GL.glPushMatrix(); //GL.glScalef(-1, 1, 1); //swap on Z axis GL.glTranslated(-mirrorWidth * 2, 0, 0); rubiksCube.Draw(); GL.glPopMatrix(); // draw reflected scene for left mirror GL.glPushMatrix(); GL.glScalef(-1, 1, 1); //swap on X axis GL.glTranslated(mirrorWidth, 0, 0); rightMirrorSurface.Draw(rightMinusArray); rubiksCube.Draw(); GL.glPopMatrix(); // really draw wall //( half-transparent ( see its color's alpha byte))) // in order to see reflected objects GL.glDepthMask((byte)GL.GL_FALSE); backMirrorSurface.Draw(backMinusArray); Console.WriteLine((((-1.0 / 15) * (-90 - rightMirrorSurface.AngleY)))); Console.WriteLine(rightMirrorSurface.AngleY); if (ScrollValue[1] < (3 + 5 * ((-1.0 / 15) * (-90 - rightMirrorSurface.AngleY))) && ScrollValue[1] > -(3 + 5 * ((-1.0 / 15) * (-90 - rightMirrorSurface.AngleY)))) // TODO: need to consider with --> cGL.rightMirrorSurface.AngleY >= -90 { rightMirrorSurface.Draw(rightMinusArray); leftMirrorSurface.Draw(leftMinusArray); } else if (ScrollValue[1] < (3 + 5 * ((-1.0 / 15) * (-90 - rightMirrorSurface.AngleY)))) { leftMirrorSurface.DrawAsWall(leftWallColorArray, leftMinusArray); rightMirrorSurface.Draw(rightMinusArray); } else { rightMirrorSurface.DrawAsWall(rightWallColorArray, rightMinusArray); leftMirrorSurface.Draw(leftMinusArray); } GL.glDepthMask((byte)GL.GL_TRUE); // Disable GL.GL_STENCIL_TEST to show All, else it will be cut on GL.GL_STENCIL GL.glDisable(GL.GL_STENCIL_TEST); // GL.glEnable(GL.GL_DEPTH_TEST); //GL.glDisable(GL.GL_DEPTH_TEST); //GL.glClear(GL.GL_DEPTH_BUFFER_BIT); //GL.glDepthFunc(GL.GL_LESS); //GL.glDepthFunc(GL.GL_GREATER); // GL.glDisable(GL.GL_BLEND); }
public void DrawRobot(bool isForShades) { GL.glPushMatrix(); if (!isForShades) { GL.glColor4f(0f, 0f, 0.4f, 1f); GL.glEnable(GL.GL_COLOR_MATERIAL); GL.glMaterialf(GL.GL_FRONT_AND_BACK, GL.GL_SHININESS, 51.2f); GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT, chrome_ambient); GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_DIFFUSE, chrome_diffuse); GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_SPECULAR, chrome_specular); } GL.glTranslated(0, 0, 7.5); GL.glRotatef(180, 0, 1, 0); GL.glRotatef(-alfa, 0, 0, 1); GL.glTranslated(0, 0, updn); GL.glRotatef(bodyAngle, 0, 1, 0); GL.glPushMatrix(); //torso if (isForShades) { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluCylinder(obj, 1.0, 1.0, 4.0, 50, 3); GLU.gluDisk(obj, 0, 1, 40, 20); GL.glTranslated(0, 0, 4); GLU.gluDisk(obj, 0, 1, 40, 20); GL.glTranslated(0, 0, -4); //head GL.glTranslated(0, 0, -r * 3); GLU.gluSphere(obj, r * 3, 20, 20); GL.glPopMatrix(); GL.glPushMatrix(); //right_upper_ARM GL.glTranslated(0, 1.3, 0.3); GL.glRotatef(right_upper_ARM_yangle, 0, 1, 0); GL.glRotatef(right_upper_ARM_xangle, 1, 0, 0); if (!isForShades) { GL.glColor3f(0.4f, 0.6f, 0f); } else { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluSphere(obj, r * 1.4, 20, 20); if (!isForShades) { GL.glColor3f(0, 0, 1f); } else { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluCylinder(obj, 0.3, 0.3, 1.7, 50, 3); //right_lower_ARM GL.glTranslated(0, 0, 1.7); GL.glRotatef(right_lower_ARM_angle, 0, 1, 0); if (!isForShades) { GL.glColor3f(0.4f, 0.6f, 0f); } else { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluSphere(obj, r * 1.1, 20, 20); if (!isForShades) { GL.glColor3f(0, 0, 1f); } else { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluCylinder(obj, 0.3, 0.3, 1.7, 50, 3); GL.glPopMatrix(); GL.glPushMatrix(); //left_upper_ARM GL.glTranslated(0, -1.3, 0.3); GL.glRotatef(left_upper_ARM_yangle, 0, 1, 0); GL.glRotatef(left_upper_ARM_xangle, 1, 0, 0); if (!isForShades) { GL.glColor3f(0.4f, 0.6f, 0f); } else { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluSphere(obj, r * 1.4, 20, 20); if (!isForShades) { GL.glColor3f(0, 0, 1f); } else { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluCylinder(obj, 0.3, 0.3, 1.7, 50, 3); //left_lower_ARM ///// GL.glTranslated(0, 0, 1.7); GL.glRotatef(left_lower_ARM_angle, 0, 1, 0); if (!isForShades) { GL.glColor3f(0.4f, 0.6f, 0f); } else { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluSphere(obj, r * 1.1, 20, 20); if (!isForShades) { GL.glColor3f(0, 0, 1f); } else { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluCylinder(obj, 0.3, 0.3, 1.7, 50, 3); GL.glPopMatrix(); GL.glPushMatrix(); //left_LEG GL.glTranslated(0, -0.7, 4.2); GL.glRotatef(right_upper_LEG_angle, 0, 1, 0); if (!isForShades) { GL.glColor3f(0.4f, 0.6f, 0f); } else { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluSphere(obj, r * 1.5, 20, 20); if (!isForShades) { GL.glColor3f(0, 0, 1f); } else { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluCylinder(obj, 0.3, 0.3, 1.7, 50, 3); GL.glTranslated(0, 0, 1.7); // right_lower_LEG GL.glRotatef(right_lower_LEG_angle, 0, 1, 0); if (!isForShades) { GL.glColor3f(0.4f, 0.6f, 0f); } else { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluSphere(obj, r * 1.1, 20, 20); if (!isForShades) { GL.glColor3f(0, 0, 1f); } else { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluCylinder(obj, 0.3, 0.3, 1.7, 50, 3); GL.glPopMatrix(); GL.glPushMatrix(); //right_LEG GL.glTranslated(0, 0.7, 4.2); GL.glRotatef(left_upper_LEG_angle, 0, 1, 0); if (!isForShades) { GL.glColor3f(0.4f, 0.6f, 0f); } else { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluSphere(obj, r * 1.5, 20, 20); if (!isForShades) { GL.glColor3f(0, 0, 1f); } else { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluCylinder(obj, 0.3, 0.3, 1.7, 50, 3); GL.glTranslated(0, 0, 1.7); //left_lower_LEG GL.glRotatef(left_lower_LEG_angle, 0, 1, 0); if (!isForShades) { GL.glColor3f(0.4f, 0.6f, 0f); } else { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluSphere(obj, r * 1.1, 20, 20); if (!isForShades) { GL.glColor3f(0, 0, 1f); } else { GL.glColor3f(0.2f, 0.2f, 0.2f); } GLU.gluCylinder(obj, 0.3, 0.3, 1.7, 50, 3); GL.glPopMatrix(); GL.glPopMatrix(); }
public void drawPenguin() { GL.glPushMatrix(); // drawaxe(); GL.glRotatef(90, 0.0f, 1.0f, 0.0f); GL.glRotatef(-90, 1.0f, 0.0f, 0.0f); //drawaxe(); GL.glTranslated(0.0, -200, 0); GL.glTranslated(0.0, speed, 0); // going forward GL.glRotated(spirala, 0, 0, 1); //turn 180 deg // drawaxe(); if (speedFlg) { if (!spiralaFlg) { if (forward) { if (speed < 380) { speed += 5; GL.glRotated(flap * 6, 0, 0, 1); //Jump } if (speed >= 380) { speedFlg = false; spiralaFlg = true; forward = false; } } if (!forward) { if (speed > 0) { speed -= 5; GL.glRotated(flap * 6, 0, 0, 1); } if (speed <= 0) { speedFlg = false; spiralaFlg = true; forward = true; } } } } if (!speedFlg) { if (spiralaFlg) { if (spirala < spindLim) { spirala += 18; GL.glTranslated(0.0, 0, 0 + flap * 8); } else { spiralaFlg = false; spindLim += 180; } } if (!spiralaFlg) { speedFlg = true; } } if (!checkBox) { if (!flapFlg) { flap += 0.5f; if (flap >= 5) { flapFlg = true; } } if (flapFlg) { flap -= 0.5f; if (flap <= 0) { flapFlg = false; } } } if (checkBox) { flap = 0; } GL.glPushMatrix(); GL.glScaled(scale_inc, scale_inc, scale_inc); //size of penguin //drawaxe(); float[] front_ambuse = { 0.9f, 0.9f, 0.9f, 1.0f }; GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, front_ambuse); GL.glColor3f(1.0f, 1.0f, 1.0f); //Front body GL.glBegin(GL.GL_QUADS); GL.glNormal3d(0, 0, 1); GL.glVertex3d(-3, 3, 0); GL.glVertex3d(3, 3, 0); GL.glVertex3d(4, 4, 5); GL.glVertex3d(-4, 4, 5); GL.glEnd(); GL.glBegin(GL.GL_QUADS); GL.glNormal3d(0, 0, 1); GL.glVertex3d(-4, 4, 5); GL.glVertex3d(4, 4, 5); GL.glVertex3d(2.5, 3, 12); GL.glVertex3d(-2.5, 3, 12); GL.glEnd(); float[] backLow_ambuse = { 0.01f, 0.01f, 0.01f, 1.0f }; GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, backLow_ambuse); GL.glColor3f(0.01f, 0.01f, 0.01f); //Back body GL.glBegin(GL.GL_QUADS); GL.glNormal3d(0, 0, 1); GL.glVertex3d(-3, 0, 0); GL.glVertex3d(3, 0, 0); GL.glVertex3d(4, -1, 5); GL.glVertex3d(-4, -1, 5); GL.glEnd(); float[] backHigh_ambuse = { 0.18f, 0.18f, 0.18f, 1.0f }; GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, backHigh_ambuse); GL.glColor3f(0.18f, 0.18f, 0.18f); GL.glBegin(GL.GL_QUADS); GL.glNormal3d(0, 0, 1); GL.glVertex3d(-4, -1, 5); GL.glVertex3d(4, -1, 5); GL.glVertex3d(2.5, 0, 12); GL.glVertex3d(-2.5, 0, 12); GL.glEnd(); float[] SideFront_ambuse = { 0.91f, 0.91f, 0.91f, 1.0f }; GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, SideFront_ambuse); GL.glColor3f(0.91f, 0.91f, 0.91f); //leftSide-front body GL.glBegin(GL.GL_TRIANGLE_STRIP); GL.glNormal3d(0, 0, 1); GL.glVertex3d(-3, 3, 0); GL.glVertex3d(-3.5, 1, 0); GL.glVertex3d(-4, 4, 5); GL.glVertex3d(-4.2, 1, 5.5); GL.glVertex3d(-2.5, 3, 12); GL.glEnd(); //rightSide-front body GL.glBegin(GL.GL_TRIANGLE_STRIP); GL.glNormal3d(0, 0, 1); GL.glVertex3d(3, 3, 0); GL.glVertex3d(3.5, 1, 0); GL.glVertex3d(4, 4, 5); GL.glVertex3d(4.2, 1, 5.5); GL.glVertex3d(2.5, 3, 12); GL.glEnd(); float[] SideBack_ambuse = { 0.1f, 0.1f, 0.1f, 1.0f }; GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, SideBack_ambuse); GL.glColor3f(0.1f, 0.1f, 0.1f); //leftSide-front body GL.glBegin(GL.GL_TRIANGLE_STRIP); GL.glNormal3d(0, 0, 1); GL.glVertex3d(-3, 0, 0); GL.glVertex3d(-3.5, 1, 0); GL.glVertex3d(-4, -1, 5); GL.glVertex3d(-4.2, 1, 5.5); GL.glVertex3d(-2.5, 0, 12); GL.glVertex3d(-2.5, 3, 12); GL.glEnd(); //rightSide-front body GL.glBegin(GL.GL_TRIANGLE_STRIP); GL.glNormal3d(0, 0, 1); GL.glVertex3d(3, 0, 0); GL.glVertex3d(3.5, 1, 0); GL.glVertex3d(4, -1, 5); GL.glVertex3d(4.2, 1, 5.5); GL.glVertex3d(2.5, 0, 12); GL.glVertex3d(2.5, 3, 12); GL.glEnd(); ////// neck GL.glBegin(GL.GL_TRIANGLE_STRIP); GL.glNormal3d(0, 0, 1); GL.glVertex3d(2.5, 3, 12); GL.glVertex3d(-2.5, 3, 12); GL.glVertex3d(0, 1.0, 15); GL.glEnd(); GL.glColor3f(0f, 0.0f, 0.0f); float[] beak_ambuse = { 0.6021f, 0.3001f, 0.0156f, 1.0f }; GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, beak_ambuse); GL.glColor3f(0.6021f, 0.3001f, 0.0156f); ////// beak -left GL.glBegin(GL.GL_TRIANGLE_STRIP); GL.glNormal3d(0, 0, 1); GL.glVertex3d(-2.5, 3, 12); GL.glVertex3d(0, 1.0, 15); GL.glVertex3d(0, 6.0, 10); GL.glEnd(); ////// beak -right GL.glBegin(GL.GL_TRIANGLE_STRIP); GL.glNormal3d(0, 0, 1); GL.glVertex3d(2.5, 3, 12); GL.glVertex3d(0, 1.0, 15); GL.glVertex3d(0, 6.0, 10); GL.glEnd(); float[] wing_ambuse = { 0.7421f, 0.4101f, 0.0156f, 1.0f }; GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, wing_ambuse); GL.glColor3f(0.7421f, 0.4101f, 0.0156f); ////// wing -left GL.glBegin(GL.GL_TRIANGLE_STRIP); GL.glNormal3d(0, 0, 1); GL.glVertex3d(-2.5, 3, 12); GL.glVertex3d(-4.2, +1.0, 5.5); GL.glVertex3d(-5 + (float)-flap * 0.4, -5.0 + (float)flap * 0.4, 4); GL.glEnd(); ////// wing -right GL.glBegin(GL.GL_TRIANGLE_STRIP); GL.glNormal3d(0, 0, 1); GL.glVertex3d(2.5, 3, 12); GL.glVertex3d(4.2, +1.0, 5.5); GL.glVertex3d(5 + (float)flap * 0.4, -5.0 + (float)flap * 0.4, 4); GL.glEnd(); //Head float[] head_ambuse = { 0.1117f, 0.1296f, 0.1562f, 1.0f }; GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, head_ambuse); GL.glColor3f(0.1117f, 0.1296f, 0.1562f); GL.glPushMatrix(); GL.glTranslated(0, 1.5, 13); GLUT.glutSolidSphere(3.2, 64, 64); GL.glPopMatrix(); //Legs float[] legs_ambuse = { 0.5021f, 0.2001f, 0.0156f, 1.0f }; GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, legs_ambuse); GL.glColor3f(0.1117f, 0.1296f, 0.1562f); GL.glPushMatrix(); GL.glTranslated(-2.2, 3, 0); GLUT.glutSolidSphere(1.8, 32, 100); GL.glPopMatrix(); GL.glPushMatrix(); GL.glTranslated(2.2, 3, 0); GLUT.glutSolidSphere(1.8, 32, 100); GL.glPopMatrix(); GL.glPushMatrix(); //Eyes float[] eyesW_ambuse = { 1f, 1f, 1f, 1.0f }; GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, eyesW_ambuse); GL.glColor3f(1f, 1f, 1f); GL.glPushMatrix(); GL.glTranslated(-1.2, 3.5, 13); GLUT.glutSolidSphere(1, 32, 32); GL.glPopMatrix(); GL.glPushMatrix(); GL.glTranslated(1.2, 3.5, 13); GLUT.glutSolidSphere(1, 32, 32); GL.glPopMatrix(); float[] eyesB_ambuse = { 0f, 0f, 0f, 1.0f }; GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, eyesB_ambuse); GL.glColor3f(1f, 1f, 1f); GL.glPushMatrix(); GL.glTranslated(-1.2, 3.9, 12.8); GLUT.glutSolidSphere(0.7, 32, 32); GL.glPopMatrix(); GL.glPushMatrix(); GL.glTranslated(1.2, 3.9, 12.8); GLUT.glutSolidSphere(0.7, 32, 32); GL.glPopMatrix(); GL.glPopMatrix(); GL.glPopMatrix(); GL.glPopMatrix(); }
public void PrepareLists() { handList = GL.glGenLists(21); handBaseList = handList + 1; indexFingerStart = handList + 2; middleFingerStart = handList + 3; ringFingerStart = handList + 4; pinkyFingerStart = handList + 5; thumbFingerStart = handList + 6; indexPhalanxList1 = handList + 7; indexPhalanxList2 = handList + 8; indexPhalanxList3 = handList + 9; middlePhalanxList1 = handList + 10; middlePhalanxList2 = handList + 11; middlePhalanxList3 = handList + 12; ringPhalanxList1 = handList + 13; ringPhalanxList2 = handList + 14; ringPhalanxList3 = handList + 15; pinkyPhalanxList1 = handList + 16; pinkyPhalanxList2 = handList + 17; pinkyPhalanxList3 = handList + 18; thumbPhalanxList1 = handList + 19; thumbPhalanxList2 = handList + 20; floorMainList = GL.glGenLists(3); floorStartPosition = floorMainList + 1; floorList = floorMainList + 2; //Floor Start Position GL.glPushMatrix(); GL.glNewList(floorStartPosition, GL.GL_COMPILE); GL.glTranslated(0, 0, 0); GL.glEndList(); GL.glPopMatrix(); //Floor GL.glPushMatrix(); GL.glNewList(floorList, GL.GL_COMPILE); DrawFloor(); GL.glEndList(); GL.glPopMatrix(); //Hand Base GL.glPushMatrix(); GL.glNewList(handBaseList, GL.GL_COMPILE); DrawHand(); GL.glEndList(); GL.glPopMatrix(); //Index Finger Start Position GL.glPushMatrix(); GL.glNewList(indexFingerStart, GL.GL_COMPILE); GL.glTranslated(2.5, 2.3, 0); GL.glEndList(); GL.glPopMatrix(); //Middle Finger Start Position GL.glPushMatrix(); GL.glNewList(middleFingerStart, GL.GL_COMPILE); GL.glTranslated(0.9, 2.3, 0); GL.glEndList(); GL.glPopMatrix(); //Ring Finger Start Position GL.glPushMatrix(); GL.glNewList(ringFingerStart, GL.GL_COMPILE); GL.glTranslated(-0.7, 2.3, 0); GL.glEndList(); GL.glPopMatrix(); //Pinky Finger Start Position GL.glPushMatrix(); GL.glNewList(pinkyFingerStart, GL.GL_COMPILE); GL.glTranslated(-2.5, 2.3, 0); GL.glEndList(); GL.glPopMatrix(); //Thumb Finger Start Position GL.glPushMatrix(); GL.glNewList(thumbFingerStart, GL.GL_COMPILE); GL.glTranslated(3.35, 0.6, 0); GL.glEndList(); GL.glPopMatrix(); //[1/3] - Index Finger GL.glPushMatrix(); GL.glNewList(indexPhalanxList1, GL.GL_COMPILE); DrawSingleFinger(1, 0); GL.glEndList(); GL.glPopMatrix(); //[2/3] GL.glPushMatrix(); GL.glNewList(indexPhalanxList2, GL.GL_COMPILE); DrawSingleFinger(2, 0); GL.glEndList(); GL.glPopMatrix(); //[3/3] GL.glPushMatrix(); GL.glNewList(indexPhalanxList3, GL.GL_COMPILE); DrawSingleFinger(3, 2.5); GL.glEndList(); GL.glPopMatrix(); //[1/3] - Middle Finger GL.glPushMatrix(); GL.glNewList(middlePhalanxList1, GL.GL_COMPILE); DrawSingleFinger(1, 0); GL.glEndList(); GL.glPopMatrix(); //[2/3] GL.glPushMatrix(); GL.glNewList(middlePhalanxList2, GL.GL_COMPILE); DrawSingleFinger(2, 0); GL.glEndList(); GL.glPopMatrix(); //[3/3] GL.glPushMatrix(); GL.glNewList(middlePhalanxList3, GL.GL_COMPILE); DrawSingleFinger(3, 0.9); GL.glEndList(); GL.glPopMatrix(); //[1/3] - Ring Finger GL.glPushMatrix(); GL.glNewList(ringPhalanxList1, GL.GL_COMPILE); DrawSingleFinger(1, 0); GL.glEndList(); GL.glPopMatrix(); //[2/3] GL.glPushMatrix(); GL.glNewList(ringPhalanxList2, GL.GL_COMPILE); DrawSingleFinger(2, 0); GL.glEndList(); GL.glPopMatrix(); //[3/3] GL.glPushMatrix(); GL.glNewList(ringPhalanxList3, GL.GL_COMPILE); DrawSingleFinger(3, -0.7); GL.glEndList(); GL.glPopMatrix(); //[1/3] - Pinky Finger GL.glPushMatrix(); GL.glNewList(pinkyPhalanxList1, GL.GL_COMPILE); DrawSingleFinger(1, 0); GL.glEndList(); GL.glPopMatrix(); //[2/3] GL.glPushMatrix(); GL.glNewList(pinkyPhalanxList2, GL.GL_COMPILE); DrawSingleFinger(2, 0); GL.glEndList(); GL.glPopMatrix(); //[3/3] GL.glPushMatrix(); GL.glNewList(pinkyPhalanxList3, GL.GL_COMPILE); DrawSingleFinger(3, -2.5); GL.glEndList(); GL.glPopMatrix(); //[1/2] - Thumb Finger GL.glPushMatrix(); GL.glNewList(thumbPhalanxList1, GL.GL_COMPILE); DrawThumbFinger(1); GL.glEndList(); GL.glPopMatrix(); //[2/2] GL.glPushMatrix(); GL.glNewList(thumbPhalanxList2, GL.GL_COMPILE); DrawThumbFinger(2); GL.glEndList(); GL.glPopMatrix(); CreateHandList(); CreateFloorList(); }