glDisable() private method

private glDisable ( uint cap ) : void
cap uint
return void
示例#1
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);
        }
示例#2
0
        void StartReflaction(int x, int y, int z)
        {
            GL.glEnable(GL.GL_BLEND);
            GL.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);


            //only floor, 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); // draw floor 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);
            GL.glPushMatrix();
            GL.glRotated(90, 0, 1, 0);
            GL.glTranslatef(0, -4, 0);
            mirror.Draw();
            GL.glPopMatrix();
            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);

            GL.glEnable(GL.GL_STENCIL_TEST);

            // draw reflected scene
            GL.glPushMatrix();
            GL.glScalef(x, y, z); //swap on Z axis
        }
示例#3
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.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);
        }
示例#4
0
        void DrawFigures()
        {
            GL.glEnable(GL.GL_COLOR_MATERIAL);
            GL.glEnable(GL.GL_LIGHT0);
            GL.glEnable(GL.GL_LIGHTING);

            //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            GL.glRotatef(ROBOT_angle, 0, 0, 1);
            GL.glCallList(ROBOT_LIST);
            //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

            // saw
            GL.glLineStipple(1, 0x1243);
            GL.glLineWidth(3);
            GL.glEnable(GL.GL_LINE_STIPPLE);

            GL.glColor3f(1, 1, 0);  //yellow
            GL.glBegin(GL.GL_LINES);
            float angle;

            for (int i = 0; i <= 9; i++)
            {
                angle = alpha + i * 6.283f / 10;
                GL.glVertex3d(0.5f * r * Math.Cos(angle), 0.5f * r * Math.Sin(angle), 0.01f);
                GL.glVertex3d(1.5f * r * Math.Cos(angle + 0.6), 1.5f * r * Math.Sin(angle + 0.6), 0.01f);
            }
            GL.glEnd();
            GL.glLineWidth(1);
            GL.glDisable(GL.GL_LINE_STIPPLE);
        }
示例#5
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();
        }
示例#6
0
        void DrawOldAxes()
        {
            //for this time
            //Lights positioning is here!!!
            float [] pos = new float[4];
            pos[0] = 10; pos[1] = 10; pos[2] = 10; pos[3] = 1;
            GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, pos);
            GL.glDisable(GL.GL_LIGHTING);

            //INITIAL axes
            GL.glEnable(GL.GL_LINE_STIPPLE);
            GL.glLineStipple(1, 0xFF00);   //  dotted
            GL.glBegin(GL.GL_LINES);
            //x  RED
            GL.glColor3f(1.0f, 0.0f, 0.0f);
            GL.glVertex3f(-3.0f, 0.0f, 0.0f);
            GL.glVertex3f(3.0f, 0.0f, 0.0f);
            //y  GREEN
            GL.glColor3f(0.0f, 1.0f, 0.0f);
            GL.glVertex3f(0.0f, -3.0f, 0.0f);
            GL.glVertex3f(0.0f, 3.0f, 0.0f);
            //z  BLUE
            GL.glColor3f(0.0f, 0.0f, 1.0f);
            GL.glVertex3f(0.0f, 0.0f, -3.0f);
            GL.glVertex3f(0.0f, 0.0f, 3.0f);
            GL.glEnd();
            GL.glDisable(GL.GL_LINE_STIPPLE);
        }
示例#7
0
        protected void DrawOldAxes()
        {
            if (enableDefaultCoordSystem)
            {
                GL.glEnable(GL.GL_LINE_STIPPLE);
                GL.glLineStipple(1, 0xFF00);
                GL.glBegin(GL.GL_LINES);

                //X - Red
                GL.glColor3f(1.0f, 0.0f, 0.0f);
                GL.glVertex3f(0.0f, 0.0f, 0.0f);
                GL.glVertex3f(10.0f, 0.0f, 0.0f);

                //Y - Greed
                GL.glColor3f(0.0f, 1.0f, 0.0f);
                GL.glVertex3f(0.0f, 0.0f, 0.0f);
                GL.glVertex3f(0.0f, 10.0f, 0.0f);

                //Z - Blue
                GL.glColor3f(0.0f, 0.0f, 1.0f);
                GL.glVertex3f(0.0f, 0.0f, 0.0f);
                GL.glVertex3f(0.0f, 0.0f, 10.0f);

                GL.glEnd();
                GL.glDisable(GL.GL_LINE_STIPPLE);
            }
        }
示例#8
0
 void DrawAll()
 {
     GL.glDisable(GL.GL_LIGHTING);
     DrawGrid(worldsize, false); //floor
     DrawGrid(worldsize, true);  //sky
     GL.glEnable(GL.GL_LIGHTING);
 }
示例#9
0
        private void drawGyroCube()
        {
            GL.glColor3f(1.0f, 1.0f, 1.0f);
            GL.glEnable(GL.GL_TEXTURE_2D);

            GL.glBindTexture(GL.GL_TEXTURE_2D, m_textureList[2]);
            GL.glNormal3f(-1, 0, 0);
            drawSquareSurface(0, CubeHeight, CubeDepth, eAxis.X);

            GL.glBindTexture(GL.GL_TEXTURE_2D, m_textureList[0]);
            GL.glNormal3f(1, 0, 0);
            drawSquareSurface(CubeWidth, CubeHeight, CubeDepth, eAxis.X);

            GL.glBindTexture(GL.GL_TEXTURE_2D, m_textureList[3]);
            GL.glNormal3f(0, 0, -1);
            drawSquareSurface(CubeWidth, CubeHeight, 0, eAxis.Z);

            GL.glBindTexture(GL.GL_TEXTURE_2D, m_textureList[1]);
            GL.glNormal3f(0, 0, 1);
            drawSquareSurface(CubeWidth, CubeHeight, CubeDepth, eAxis.Z);

            drawSquareSurface(CubeWidth, 0, CubeDepth, eAxis.Y);
            GL.glNormal3f(0, -1, 0);
            drawSquareSurface(CubeWidth, CubeHeight, CubeDepth, eAxis.Y);
            GL.glNormal3f(0, 1, 0);

            GL.glDisable(GL.GL_TEXTURE_2D);
        }
示例#10
0
        void DrawLight()
        {
            // call this function in order to apply lightning on the objects
            GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, LightPosition);
            GL.glDisable(GL.GL_LIGHTING); //disable lightning in order to glColor3f to work, otherwise spehre color will not been affected

            //Draw Yellow Light Source
            light.Color  = Color.Yellow;
            light.Radius = 0.1f;
            light.Translate(LightPosition[0], LightPosition[1], LightPosition[2]);
            light.Draw();

            ////draw projection line from source to plane
            //GL.glBegin(GL.GL_LINES);
            //GL.glColor3d(0.5, 0.5, 0);
            //GL.glVertex3d(LightPosition[0], LightPosition[1], LightPosition[2]);
            //GL.glVertex3d(LightPosition[0], floor[0, 2] - 0.01, LightPosition[2]);
            //GL.glEnd();

            axes.XLen = 6;
            axes.YLen = 6;
            axes.ZLen = 6;

            axes.XColor = Color.Red;
            axes.YColor = Color.Green;
            axes.ZColor = Color.Blue;

            // axes.Translate(3.0f, -3.0f, 0.0f);
            // axes.Rotate(90.0f, 1.0f, 0.0f, 0.0f);
            //axes.Draw();
        }
示例#11
0
文件: cOGL.cs 项目: matanmaron/Tanks
        void DrawGrid(float gridsize)
        {
            //floor texture
            GL.glEnable(GL.GL_TEXTURE_2D);

            GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[0]);
            GL.glBegin(GL.GL_QUADS);
            GL.glColor3f(1f, 1f, 1f);//white clear
            //left side

            GL.glNormal3f(0.0f, 1.0f, 0.0f);
            GL.glTexCoord2f(0, 0);
            GL.glVertex3f(0, 0, 0);
            GL.glTexCoord2f(0, 1);
            GL.glVertex3f(-gridsize, 0, 0);
            GL.glTexCoord2f(1f, 1f);
            GL.glVertex3f(-gridsize, 0, -gridsize * 2);
            GL.glTexCoord2f(1f, 0);
            GL.glVertex3f(0, 0, -gridsize * 2);
            //right side
            GL.glNormal3f(0.0f, 1.0f, 0.0f);
            GL.glTexCoord2f(0, 0);
            GL.glVertex3f(0, 0, 0);
            GL.glTexCoord2f(0, 1);
            GL.glVertex3f(gridsize, 0, 0);
            GL.glTexCoord2f(1f, 1f);
            GL.glVertex3f(gridsize, 0, -gridsize * 2);
            GL.glTexCoord2f(1f, 0);
            GL.glVertex3f(0, 0, -gridsize * 2);

            GL.glEnd();
            GL.glDisable(GL.GL_TEXTURE_2D);
        }
示例#12
0
        private void DrawSea()
        {
            GL.glDisable(GL.GL_LIGHTING);
            float dup = GlobalProperties.seaDuplicates;

            GL.glEnable(GL.GL_TEXTURE_2D);
            GL.glColor4f(1.0f, 1.0f, 1.0f, 0.3f);

            GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[0]);
            GL.glBegin(GL.GL_QUADS);

            float cor = GlobalProperties.seaSize / 2;

            GL.glTexCoord2f(0, 0);
            GL.glVertex3f(-cor, -cor, 0.0f);
            GL.glTexCoord2f(0, dup);
            GL.glVertex3f(cor, -cor, 0.0f);
            GL.glTexCoord2f(dup, dup);
            GL.glVertex3f(cor, cor, 0.0f);
            GL.glTexCoord2f(dup, 0);
            GL.glVertex3f(-cor, cor, 0.0f);

            GL.glEnd();
            GL.glDisable(GL.GL_TEXTURE_2D);
            GL.glEnable(GL.GL_LIGHTING);
        }
示例#13
0
        private void DrawIsland()
        {
            float moveSphere = GlobalProperties.islandRadius - GlobalProperties.islandHeight;
            float rotate     = 45.0f;

            GL.glEnable(GL.GL_CLIP_PLANE0);
            double[] clipPalane0 = { 0.0, 0.0, 1.0, 0.0 };
            GL.glClipPlane(GL.GL_CLIP_PLANE0, clipPalane0);

            GL.glTranslatef(0.0f, 0.0f, -moveSphere);


            GL.glEnable(GL.GL_TEXTURE_2D);
            GL.glColor3f(1.0f, 1.0f, 1.0f);
            GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[1]);


            GL.glRotatef(rotate, 1.0f, 1.0f, 0.0f);
            GLUquadric obj = GLU.gluNewQuadric();

            GLU.gluQuadricTexture(obj, 1);
            GLU.gluSphere(obj, GlobalProperties.islandRadius, 32, 32);
            GLU.gluDeleteQuadric(obj);
            GL.glRotatef(-rotate, 1.0f, 1.0f, 0.0f);

            GL.glDisable(GL.GL_TEXTURE_2D);

            GL.glTranslatef(0.0f, 0.0f, moveSphere);

            GL.glDisable(GL.GL_CLIP_PLANE0);
        }
示例#14
0
        void DrawGrid(float gridsize, bool sky)
        {
            float h = 0;

            //floor texture
            GL.glEnable(GL.GL_TEXTURE_2D);

            if (sky)
            {
                GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[6]);
            }
            else
            {
                GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[0]);
            }

            GL.glBegin(GL.GL_QUADS);
            GL.glColor3f(1f, 1f, 1f);//white clear
            //left side
            if (sky)
            {
                h = 10;
                GL.glNormal3f(0.0f, -1.0f, 0.0f);
            }
            else
            {
                GL.glNormal3f(0.0f, 1.0f, 0.0f);
            }

            GL.glTexCoord2f(0, 0);
            GL.glVertex3f(0, h, 0);
            GL.glTexCoord2f(0, 1);
            GL.glVertex3f(-gridsize, h, 0);
            GL.glTexCoord2f(1f, 1f);
            GL.glVertex3f(-gridsize, h, -gridsize * 2);
            GL.glTexCoord2f(1f, 0);
            GL.glVertex3f(0, h, -gridsize * 2);
            //right side
            if (sky)
            {
                GL.glNormal3f(0.0f, -1.0f, 0.0f);
            }
            else
            {
                GL.glNormal3f(0.0f, 1.0f, 0.0f);
            }
            GL.glTexCoord2f(0, 0);
            GL.glVertex3f(0, h, 0);
            GL.glTexCoord2f(0, 1);
            GL.glVertex3f(gridsize, h, 0);
            GL.glTexCoord2f(1f, 1f);
            GL.glVertex3f(gridsize, h, -gridsize * 2);
            GL.glTexCoord2f(1f, 0);
            GL.glVertex3f(0, h, -gridsize * 2);

            GL.glEnd();
            GL.glDisable(GL.GL_TEXTURE_2D);
        }
示例#15
0
 void DrawLight()
 {
     GL.glTranslatef(pos[0], pos[1], pos[2]);
     GL.glColor3f(1, 1, 0);
     GLUT.glutSolidSphere(0.8, 10, 10);
     GL.glTranslatef(-pos[0], -pos[1], -pos[2]);
     GL.glEnd();
     GL.glDisable(GL.GL_LIGHTING);
 }
示例#16
0
        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);
        }
示例#17
0
        private void DrawPillar(double baseRadius, double topRadius, double height)
        {
            GL.glEnable(GL.GL_TEXTURE_2D);
            GL.glColor3f(1.0f, 1.0f, 1.0f);
            GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[2]);

            GLUquadric obj = GLU.gluNewQuadric();

            GLU.gluQuadricTexture(obj, 2);
            GLU.gluCylinder(obj, baseRadius, topRadius, height, 32, 32);
            GLU.gluDeleteQuadric(obj);

            GL.glDisable(GL.GL_TEXTURE_2D);
        }
示例#18
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();
            }
        }
示例#19
0
        protected void DrawRoom()
        {
            GL.glColor3f(1.0f, 1.0f, 1.0f);
            GL.glEnable(GL.GL_TEXTURE_2D);
            GL.glBindTexture(GL.GL_TEXTURE_2D, texture[0]);
            GL.glDisable(GL.GL_LIGHTING);

            GL.glBegin(GL.GL_QUADS);

            GL.glTexCoord2d(1, 1);
            GL.glVertex3d(-100, 100, 100);
            GL.glTexCoord2d(0.75, 1);
            GL.glVertex3d(100, 100, 100);
            GL.glTexCoord2d(0.75, 0);
            GL.glVertex3d(100, -100, 100);
            GL.glTexCoord2d(1, 0);
            GL.glVertex3d(-100, -100, 100);

            GL.glTexCoord2d(0.25, 1);
            GL.glVertex3d(-100, 100, -100);
            GL.glTexCoord2d(0.5, 1);
            GL.glVertex3d(100, 100, -100);
            GL.glTexCoord2d(0.5, 0);
            GL.glVertex3d(100, -100, -100);
            GL.glTexCoord2d(0.25, 0);
            GL.glVertex3d(-100, -100, -100);

            GL.glTexCoord2d(0.25, 1);
            GL.glVertex3d(-100, 100, -100);
            GL.glTexCoord2d(0, 1);
            GL.glVertex3d(-100, 100, 100);
            GL.glTexCoord2d(0, 0);
            GL.glVertex3d(-100, -100, 100);
            GL.glTexCoord2d(0.25, 0);
            GL.glVertex3d(-100, -100, -100);

            GL.glTexCoord2d(0.75, 1);
            GL.glVertex3d(100, 100, 100);
            GL.glTexCoord2d(0.5, 1);
            GL.glVertex3d(100, 100, -100);
            GL.glTexCoord2d(0.5, 0);
            GL.glVertex3d(100, -100, -100);
            GL.glTexCoord2d(0.75, 0);
            GL.glVertex3d(100, -100, 100);

            GL.glEnd();
            GL.glDisable(GL.GL_TEXTURE_2D);
        }
示例#20
0
        protected void DrawFloor()
        {
            GL.glEnable(GL.GL_LIGHTING);
            GL.glEnable(GL.GL_COLOR_MATERIAL);
            GL.glColor4d(0, 0, 1, 0.3);

            GL.glBegin(GL.GL_QUADS);

            GL.glVertex3d(-7, -4, 7);
            GL.glVertex3d(7, -4, 7);
            GL.glVertex3d(7, -4, -7);
            GL.glVertex3d(-7, -4, -7);

            GL.glEnd();
            GL.glDisable(GL.GL_LIGHTING);
        }
示例#21
0
        private void DrawAll()
        {
            GL.glEnable(GL.GL_BLEND);
            GL.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);


            //only floor, 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); // draw floor 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);

            DrawSea();

            // 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);

            GL.glEnable(GL.GL_STENCIL_TEST);

            // draw reflected scene
            GL.glPushMatrix();
            GL.glEnable(GL.GL_CULL_FACE);
            GL.glScalef(1, 1, -1); //swap on Z axis
            GL.glCullFace(GL.GL_FRONT);
            DrawReflected();
            GL.glCullFace(GL.GL_BACK);
            DrawReflected();
            GL.glDisable(GL.GL_CULL_FACE);
            GL.glPopMatrix();

            // really draw floor
            //( half-transparent ( see its color's alpha byte)))
            // in order to see reflected objects
            GL.glDepthMask((byte)GL.GL_FALSE);
            DrawSea();
            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);

            DrawReflected();
        }
示例#22
0
        void DrawLights()
        {
            //GL.glPushMatrix();
            GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, lightPos);

            //Draw Light Source
            GL.glDisable(GL.GL_LIGHTING);
            GL.glTranslatef(lightPos[0], lightPos[1], lightPos[2]);
            //Yellow Light source
            GL.glColor3f(1, 1, 0);
            GLUT.glutSolidSphere(0.05, 8, 8);
            GL.glTranslatef(-lightPos[0], -lightPos[1], -lightPos[2]);

            //main System draw
            GL.glEnable(GL.GL_LIGHTING);
            //GL.glPopMatrix();
        }
示例#23
0
        void DrawBounds()
        {
            if (isBounds)
            {
                GL.glScalef(0.99f, 0.99f, 0.99f);
                GL.glLineWidth(2);
                GL.glColor3f(1.0f, 0.0f, 0.0f);
                GL.glDisable(GL.GL_LIGHTING);
                GL.glBegin(GL.GL_LINE_LOOP);
                GL.glVertex3f(-1, -1, -1);
                GL.glVertex3f(1, -1, -1);
                GL.glVertex3f(1, -1, 1);
                GL.glVertex3f(-1, -1, 1);
                GL.glEnd();
                GL.glBegin(GL.GL_LINE_LOOP);
                GL.glVertex3f(-1, 1, -1);
                GL.glVertex3f(1, 1, -1);
                GL.glVertex3f(1, 1, 1);
                GL.glVertex3f(-1, 1, 1);
                GL.glEnd();
                GL.glBegin(GL.GL_LINES);
                GL.glVertex3f(-1, -1, -1);
                GL.glVertex3f(-1, 1, -1);

                GL.glVertex3f(1, -1, -1);
                GL.glVertex3f(1, 1, -1);

                GL.glVertex3f(1, -1, 1);
                GL.glVertex3f(1, 1, 1);

                GL.glVertex3f(-1, -1, 1);
                GL.glVertex3f(-1, 1, 1);
                GL.glEnd();
                GL.glScalef(1.0f / 0.99f, 1.0f / 0.99f, 1.0f / 0.99f);
            }

            GL.glEnable(GL.GL_COLOR_MATERIAL);
            GL.glEnable(GL.GL_LIGHTING);
            GL.glEnable(GL.GL_LIGHT0);
            GL.glTranslatef(0.1f, 0.2f, -0.7f);
            GL.glColor3f(0, 1, 0);
            GLU.gluSphere(obj, 0.05, 16, 16);
            GL.glTranslatef(-0.1f, -0.2f, 0.7f);
            GL.glDisable(GL.GL_LIGHTING);
        }
示例#24
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);
            }
        }
示例#25
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);
 }
示例#26
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();
        }
示例#27
0
        private void DrawBackground()
        {
            GL.glDisable(GL.GL_LIGHTING);
            GL.glEnable(GL.GL_TEXTURE_2D);
            GL.glColor4f(1.0f, 1.0f, 1.0f, 0.5f);

            GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[4]);

            float cor = GlobalProperties.seaSize / 2;

            GLUquadric obj = GLU.gluNewQuadric();

            GLU.gluQuadricTexture(obj, 4);
            GLU.gluCylinder(obj, cor, cor, cor, 32, 32);
            GLU.gluDeleteQuadric(obj);

            GL.glDisable(GL.GL_TEXTURE_2D);
            GL.glEnable(GL.GL_LIGHTING);
        }
示例#28
0
 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);
 }
示例#29
0
 public void Draw(bool isForShades)
 {
     GL.glPushMatrix();
     GL.glScalef(-1, 1, 1);
     GL.glRotatef(-90, 0, 1, 0);
     GL.glTranslatef(7, 0, 0);
     GL.glTranslatef(0, 0, (Drive % 46) - 23);
     if (!isForShades)
     {
         GL.glEnable(GL.GL_LIGHTING);
         GL.glCallList(CAR);
     }
     else
     {
         GL.glDisable(GL.GL_LIGHTING);
         GL.glCallList(CAR_SHADOW);
     }
     GL.glPopMatrix();
 }
示例#30
0
        public void DrawFigures()
        {
            GL.glPushMatrix();



            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);
            GLUT.glutSolidSphere(0.05, 8, 8);
            GL.glTranslatef(-pos[0], -pos[1], -pos[2]);

            //main System draw
            GL.glEnable(GL.GL_LIGHTING);

            DrawRobot(false);
            drawStars(false);
            //end of regular show
            //!!!!!!!!!!!!!
            GL.glPopMatrix();
            //!!!!!!!!!!!!!

            //SHADING begin
            //we'll define cubeXform matrix in MakeShadowMatrix Sub
            // Disable lighting, we'll just draw the shadow
            //else instead of shadow we'll see stange projection of the same objects
            GL.glDisable(GL.GL_LIGHTING);
            // wall shadow
            //!!!!!!!!!!!!!
            GL.glPushMatrix();
            //!!!!!!!!!!!!
            MakeShadowMatrix(ground);
            GL.glMultMatrixf(cubeXform);
            DrawRobot(true);
            drawStars(true);
            //!!!!!!!!!!!!!
            GL.glPopMatrix();
            //!!!!!!!!!!!!!
        }