glColor3d() private method

private glColor3d ( double red, double green, double blue ) : void
red double
green double
blue double
return void
示例#1
0
        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 void draw_sun()
        {
            GL.glPushMatrix();
            GL.glColor3d(1, 1, 1);

            GL.glEnable(GL.GL_TEXTURE_2D);
            GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[6]);


            quad = GLU.gluNewQuadric();
            GLU.gluQuadricTexture(quad, 40);

            GL.glTranslatef(pos[0], pos[1], pos[2]);

            // rotating sun as well as all planets to Y axis
            GL.glTranslatef(0.0f, 0.0f + (float)-speed * 0.03f, 0.0f);  //y - up down
            GL.glTranslatef(0.0f, 0.0f, 0.0f + (float)-speed * 0.01f);  //z - back forward

            GL.glRotatef((float)moon, 0.0f, 1.0f, 0.0f);

            GLU.gluSphere(quad, 45, 1000, 1000);



            GL.glPopMatrix();


            moon += 0.04f;
        }
        public void draw_moon()
        {
            GL.glPushMatrix();

            GL.glColor3d(1, 1, 1);
            GL.glEnable(GL.GL_TEXTURE_2D);
            GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[1]);


            quad = GLU.gluNewQuadric();
            GLU.gluQuadricTexture(quad, 40);


            GL.glTranslatef(-200, 200, -300);

            // rotating moon as well as all planets to Y axis
            GL.glTranslatef(0.0f + (float)speed * 0.01f, 0.0f, 0.0f);
            GL.glTranslatef(0.0f, 0.0f + (float)speed * 0.01f, 0.0f);

            GL.glRotatef((float)moon++ *0.5f, 1.0f, 1.0f, 0.0f);


            GLU.gluSphere(quad, 18, 200, 200);

            GL.glPopMatrix();
        }
示例#4
0
        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();
        }
示例#5
0
        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);
        }
示例#6
0
        protected void DrawHand()
        {
            GL.glColor3d(1, 0.8, 0.6);

            GL.glBegin(GL.GL_QUADS);

            //Near
            GL.glVertex3d(-3.0, 2.0, 0.5);
            GL.glVertex3d(3.0, 2.0, 0.5);
            GL.glVertex3d(3.0, -2.0, 0.5);
            GL.glVertex3d(-3.0, -2.0, 0.5);

            //Far
            GL.glVertex3d(-3.0, 2.0, -0.5);
            GL.glVertex3d(3.0, 2.0, -0.5);
            GL.glVertex3d(3.0, -2.0, -0.5);
            GL.glVertex3d(-3.0, -2.0, -0.5);

            //Left
            GL.glVertex3d(-3.0, 2.0, -0.5);
            GL.glVertex3d(-3.0, 2.0, 0.5);
            GL.glVertex3d(-3.0, -2.0, 0.5);
            GL.glVertex3d(-3.0, -2.0, -0.5);

            //Right
            GL.glVertex3d(3.0, 2.0, 0.5);
            GL.glVertex3d(3.0, 2.0, -0.5);
            GL.glVertex3d(3.0, -2.0, -0.5);
            GL.glVertex3d(3.0, -2.0, 0.5);

            GL.glEnd();
        }
示例#7
0
 void CreateApple()
 {
     GL.glColor3d(1, 0, 0);
     GL.glNewList(APPLE_LIST, GL.GL_COMPILE);
     GL.glPushMatrix();
     GL.glRotatef(-90, 1, 0, 0);
     GLUT.glutSolidTorus(0.2, 0.1, 10, 10);
     GL.glPopMatrix();
     GL.glEndList();
 }
示例#8
0
        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();
            }
        }
        void DrawTexturedCube()
        {
            GL.glEnable(GL.GL_TEXTURE_2D);
            GL.glDisable(GL.GL_BLEND);
            GL.glColor3d(1, 1, 1);
            GL.glDisable(GL.GL_LIGHTING);
            // front
            GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[0]);
            GL.glBegin(GL.GL_QUADS);
            GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(300.0f, -0.01f, 300.0f);
            GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(-300.0f, -0.01f, 300.0f);
            GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(-300.0f, 300.0f, 300.0f);
            GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(300.0f, 300.0f, 300.0f);
            GL.glEnd();
            // back
            GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[0]);
            GL.glBegin(GL.GL_QUADS);
            GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(-300.0f, -0.01f, -300.0f);
            GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(300.0f, -0.01f, -300.0f);
            GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(300.0f, 300.0f, -300.0f);
            GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(-300.0f, 300.0f, -300.0f);
            GL.glEnd();
            // left
            GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[2]);
            GL.glBegin(GL.GL_QUADS);
            GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(-300.0f, -0.01f, 300.0f);
            GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(-300.0f, -0.01f, -300.0f);
            GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(-300.0f, 300.0f, -300.0f);
            GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(-300.0f, 300.0f, 300.0f);
            GL.glEnd();
            // right
            GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[3]);
            GL.glBegin(GL.GL_QUADS);
            GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(300.0f, -0.01f, -300.0f);
            GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(300.0f, -0.01f, 300.0f);
            GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(300.0f, 300.0f, 300.0f);
            GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(300.0f, 300.0f, -300.0f);
            GL.glEnd();
            // top
            GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[4]);
            GL.glBegin(GL.GL_QUADS);
            GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(-300.0f, 300.0f, -300.0f);
            GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(300.0f, 300.0f, -300.0f);
            GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(300.0f, 300.0f, 300.0f);
            GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(-300.0f, 300.0f, 300.0f);
            GL.glEnd();

            GL.glDisable(GL.GL_TEXTURE_2D);
            GL.glEnable(GL.GL_BLEND);
        }
示例#10
0
        void drawStar(Star star, bool isForShade)
        {
            if (star.toDraw == true)
            {
                GL.glPushMatrix();



                GL.glTranslatef(0f, 0f, 1f);
                GL.glTranslatef(star.X + (float)xExisOrigin, star.Y + (float)yExisOrigin, 3 - Math.Abs(2f * (float)Math.Cos(ballZMovement)));
                GL.glRotatef(ballZtranslate, 0, 0, 1f);


                if (!isForShade)
                {
                    GL.glEnable(GL.GL_TEXTURE_2D);
                    GL.glColor3f(1.0f, 1.0f, 1.0f);
                    GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[6]);
                    GL.glEnable(GL.GL_TEXTURE_GEN_S);

                    GL.glEnable(GL.GL_TEXTURE_GEN_T);
                    GL.glTexGeni(GL.GL_S, GL.GL_TEXTURE_GEN_MODE, (int)GL.GL_SPHERE_MAP);
                    GL.glTexGeni(GL.GL_T, GL.GL_TEXTURE_GEN_MODE, (int)GL.GL_SPHERE_MAP);
                }
                else
                {
                    GL.glColor3d(0.2, 0.2, 0.2);
                }
                for (int i = 0; i < 5; i++)
                {
                    GL.glRotatef(72, 1, 0, 0);
                    GL.glBegin(GL.GL_QUADS);

                    GL.glVertex3f(0f, 0f, 0);
                    GL.glVertex3f(0f, (float)Math.Sin(36), 1);
                    GL.glVertex3f(0f, 0, 3f);
                    GL.glVertex3f(0f, -(float)Math.Sin(36), 1);

                    GL.glEnd();
                }
                if (!isForShade)
                {
                    GL.glDisable(GL.GL_TEXTURE_GEN_S);
                    GL.glDisable(GL.GL_TEXTURE_GEN_T);
                    GL.glDisable(GL.GL_TEXTURE_2D);
                }
                GL.glPopMatrix();
            }
        }
示例#11
0
        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);
            }
        }
示例#12
0
 void drawFloorTextured()
 {
     GL.glEnable(GL.GL_TEXTURE_2D);
     GL.glDisable(GL.GL_BLEND);
     GL.glColor3d(1, 1, 1);
     GL.glDisable(GL.GL_LIGHTING);
     GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[5]);
     GL.glBegin(GL.GL_QUADS);
     GL.glNormal3f(0, 1, 0);
     GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(-200, -0.01f, 200);
     GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(200, -0.01f, 200);
     GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(200, -0.01f, -200);
     GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(-200, -0.01f, -200);
     GL.glEnd();
     GL.glDisable(GL.GL_TEXTURE_2D);
     GL.glEnable(GL.GL_BLEND);
     GL.glEnable(GL.GL_LIGHTING);
 }
示例#13
0
        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();
        }
示例#14
0
        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;
            }
        }
示例#15
0
 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);
 }
示例#16
0
        void DrawFigures()
        {
            skyBox.DrawSkyBox();
            MainLightSource.DrawLightSource(new float[] { 1, 1, 0 });
            StaticRedLightSource.DrawLightSource(new float[] { 1, 0, 0 });
            StaticBlueLightSource.DrawLightSource(new float[] { 0, 0, 1 });
            //Banner Light source
            GL.glTranslatef(bannerLightPos[0], bannerLightPos[1], bannerLightPos[2]);
            Random r = new Random();

            GL.glColor3d(r.NextDouble(), r.NextDouble(), r.NextDouble());
            GLUT.glutSolidSphere(0.1, 8, 8);
            GL.glTranslatef(-bannerLightPos[0], -bannerLightPos[1], -bannerLightPos[2]);
            GL.glEnd();
            GL.glDisable(GL.GL_DEPTH_TEST);
            GL.glDisable(GL.GL_LIGHTING);
            // Start Drawing Floor Shadow
            GL.glPushMatrix();
            GL.glEnable(GL.GL_BLEND);
            GL.glColor4d(0, 0, 0, 0.25);
            mainShadowManager.MakeShadowMatrix(mainShadowManager.Ground, cubeXform);
            GL.glMultMatrixf(cubeXform);
            m_SideMachine.DrawSideMachines(new double[3] {
                0, -0.4, 6
            }, true);
            m_SideMachine.DrawSideMachines(new double[3] {
                0, -0.4, -6
            }, true);
            GL.glCallList(SHADOW_LIST);

            //GL.glColor4d(0.05, 0, 0, 0.25);
            //redShadowManager.MakeShadowMatrix(redShadowManager.Ground, cubeXform);
            //GL.glMultMatrixf(cubeXform);
            //m_SideMachine.DrawSideMachines(new double[3] { 0, -0.4, 6 }, true);
            //m_SideMachine.DrawSideMachines(new double[3] { 0, -0.4, -6 }, true);
            //GL.glCallList(SHADOW_LIST);

            //GL.glColor4d(0, 0, 0.05, 0.25);
            //blueShadowManager.MakeShadowMatrix(blueShadowManager.Ground, cubeXform);
            //GL.glMultMatrixf(cubeXform);
            //m_SideMachine.DrawSideMachines(new double[3] { 0, -0.4, 6 }, true);
            //m_SideMachine.DrawSideMachines(new double[3] { 0, -0.4, -6 }, true);
            //GL.glCallList(SHADOW_LIST);

            GL.glDisable(GL.GL_BLEND);
            GL.glPopMatrix();
            //for (int i = 0; i < 4; i++)
            //{
            //    GL.glPushMatrix();
            //    shadowManager.MakeShadowMatrix(shadowManager.Walls[i], cubeXform);
            //    GL.glMultMatrixf(cubeXform);
            //    m_SideMachine.DrawSideMachines(new double[3] { 0, -0.4, 6 }, true);
            //    m_SideMachine.DrawSideMachines(new double[3] { 0, -0.4, -6 }, true);
            //    GL.glCallList(SHADOW_LIST);
            //    GL.glPopMatrix();
            //}
            //End Drawing Floor Shadow
            GL.glEnable(GL.GL_DEPTH_TEST);
            GL.glEnable(GL.GL_COLOR_MATERIAL);
            GL.glEnable(GL.GL_LIGHT0);
            GL.glEnable(GL.GL_LIGHT1);
            GL.glEnable(GL.GL_LIGHT2);
            GL.glEnable(GL.GL_LIGHT3);
            GL.glEnable(GL.GL_LIGHTING);

            GL.glPushMatrix();
            m_SideMachine.DrawSideMachines(new double[3] {
                0, -0.4, 6
            }, false);
            m_SideMachine.DrawSideMachines(new double[3] {
                0, -0.4, -6
            }, false);

            //toyCar.DrawToy(new double[3] { 1.4, 0.3, 0 }, new double[4] { 40, 0, 1, 0 }, false);

            GL.glCallList(CLAW_MACHINE_LIST);
            GL.glPopMatrix();
            GL.glDisable(GL.GL_COLOR_MATERIAL);
            GL.glDisable(GL.GL_LIGHTING);
            //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        }
示例#17
0
        /**********************************************************************************************************
        *
        *
        *
        * 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);
        }
示例#18
0
        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);

            //TRIVIAL
            GL.glViewport(0, 0, Width, Height);
            GL.glLoadIdentity();
            GL.glEnable(GL.GL_NORMALIZE);

            GLU.gluLookAt(ScrollValue[0], ScrollValue[1], ScrollValue[2],
                          ScrollValue[3], ScrollValue[4], ScrollValue[5],
                          ScrollValue[6], ScrollValue[7], ScrollValue[8]);



            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;

            light_position_reflected[0] = -ScrollValue[9];
            light_position_reflected[1] = -ScrollValue[10];
            light_position_reflected[2] = -ScrollValue[11];
            light_position[3]           = 0;

            GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, light_position);
            GL.glEnable(GL.GL_LIGHT0);

            GL.glLightfv(GL.GL_LIGHT1, GL.GL_POSITION, light_position);
            GL.glEnable(GL.GL_LIGHT1);

            //beascender look angle
            GL.glTranslatef(0.0f, -50.0f, -340.0f); //how far from the lake
            GL.glTranslatef(0.0f, 1.0f, 0.0f);      //height from the lake
            GL.glRotatef(25, 1.0f, 0, 0);           //look at lake angle

            GL.glRotatef(xAngle, 1.0f, 0.0f, 0.0f);
            if (checkBox)
            {
                GL.glRotatef((float)spirala * 0.018f, 0.0f, 1.0f, 0.0f);
                GL.glRotatef((float)speed * 0.008f, 1.0f, 1.0f, 0.0f);
                GL.glRotatef((float)speed * 0.008f, 0.0f, 1.0f, 1.0f);
                GL.glRotatef((float)speed * -0.005f, 1.0f, 0.0f, 1.0f);
            }
            GL.glRotatef(yAngle, 0.0f, 1.0f, 0.0f);
            GL.glRotatef(zAngle, 0.0f, 0.0f, 1.0f);
            if (checkBox)
            {
                GL.glTranslatef(xShift, yShift + (float)-speed * 0.18f, zShift);
            }
            GL.glTranslatef(xShift, yShift, zShift);



            /*
             *
             * Reflection drawing area start here
             *
             */

            GL.glPushMatrix();

            GL.glEnable(GL.GL_BLEND);
            GL.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);

            //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();//Draw area when we want to see reflect

            // restore regular seascendings
            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.glScalef(1, -1, 1); //swap axes down


            GL.glPushMatrix();
            DrawTexturedCube();

            //reflected penguin
            drawPenguin();

            draw_sun();
            draw_moon();
            GL.glPopMatrix();


            GL.glPopMatrix();
            GL.glEnable(GL.GL_LIGHTING);

            Drawlake();

            GL.glDisable(GL.GL_LIGHTING);


            GL.glStencilFunc(GL.GL_NOTEQUAL, 1, 0xFFFFFFFF);
            GL.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP);

            GL.glDepthMask((byte)GL.GL_FALSE);
            GL.glDepthMask((byte)GL.GL_TRUE);

            drawFloorTextured();

            draw_sun();
            draw_moon();


            GL.glDisable(GL.GL_STENCIL_TEST);

            DrawTexturedCube();    //SKY BOX



            /*
             *
             * paint main scene area - start here
             *
             */

            // drawaxe();



            GL.glShadeModel(GL.GL_FLAT);

            GL.glEnable(GL.GL_LIGHTING);

            //Main Penguin
            drawPenguin();



            /////////

            GL.glDisable(GL.GL_LIGHTING);



            /*
             *
             * Draw shadows area - start here
             *
             */
            GL.glDisable(GL.GL_LIGHTING);


            GL.glPushMatrix();

            MakeShadowMatrix(ground);  //sending fround matrix
            GL.glMultMatrixf(cubeXform);

            GL.glShadeModel(GL.GL_FLAT);
            GL.glColor3d(0, 0, 0);//black

            drawPenguinShade();

            GL.glPopMatrix();



            GL.glFlush();
            WGL.wglSwapBuffers(m_uint_DC);
        }