Example #1
0
        /// <summary>
        ///     Here's where we do all the drawing.
        /// </summary>
        /// <returns>
        ///     <c>true</c> on successful drawing, otherwise <c>false</c>.
        /// </returns>
        private static bool DrawGLScene()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);        // Clear The Screen And The Depth Buffer
            Gl.glLoadIdentity();                                                // Reset The View
            Gl.glTranslatef(0, 0, z);
            Gl.glRotatef(xrot, 1, 0, 0);
            Gl.glRotatef(yrot, 0, 1, 0);
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[filter]);

            switch (qobject)
            {
            case 0:
                glDrawCube();
                break;

            case 1:
                Gl.glTranslatef(0, 0, -1.5f);                                   // Center The Cylinder
                Glu.gluCylinder(quadratic, 1, 1, 3, 32, 32);                    // A Cylinder With A Radius Of 0.5 And A Height Of 2
                break;

            case 2:
                Glu.gluDisk(quadratic, 0.5f, 1.5f, 32, 32);                     // Draw A Disc (CD Shape) With An Inner Radius Of 0.5, And An Outer Radius Of 2.  Plus A Lot Of Segments ;)
                break;

            case 3:
                Glu.gluSphere(quadratic, 1.3f, 32, 32);                         // Draw A Sphere With A Radius Of 1 And 16 Longitude And 16 Latitude Segments
                break;

            case 4:
                Gl.glTranslatef(0, 0, -1.5f);                                   // Center The Cone
                Glu.gluCylinder(quadratic, 1, 0, 3, 32, 32);                    // A Cone With A Bottom Radius Of .5 And A Height Of 2
                break;

            case 5:
                part1 += p1;
                part2 += p2;

                if (part1 > 359)                                                // 360 Degrees
                {
                    p1    = 0;
                    part1 = 0;
                    p2    = 1;
                    part2 = 0;
                }
                if (part2 > 359)                                                // 360 Degrees
                {
                    p1 = 1;
                    p2 = 0;
                }
                // A Disk Like The One Before
                Glu.gluPartialDisk(quadratic, 0.5f, 1.5f, 32, 32, part1, part2 - part1);
                break;
            }
            ;

            xrot += xspeed;
            yrot += yspeed;

            return(true);                                                        // Keep Going
        }
Example #2
0
        public void DrawCylinder()
        {
            if (!bCylinderDefined)
            {
                Gl.glNewList(LISTCYLINDER, Gl.GL_COMPILE);

                Gl.glPushMatrix();
                Glu.GLUquadric quadratic = Glu.gluNewQuadric();   // Create A Pointer To The Quadric Object
                Glu.gluQuadricNormals(quadratic, Glu.GLU_SMOOTH); // Create Smooth Normals
                Glu.gluQuadricTexture(quadratic, 32);             // Create Texture Coords
                Gl.glTranslatef(0.0f, 0.0f, -0.5f);               // Center The Cylinder
                Glu.gluQuadricOrientation(quadratic, Glu.GLU_OUTSIDE);
                Glu.gluCylinder(quadratic, 0.5f, 0.5f, 1.0f, 32, 32);
                //glTranslatef(0.0f,0.0f,-0.5f);
                Gl.glRotatef(180.0f, 1.0f, 0.0f, 0.0f);
                Glu.gluDisk(quadratic, 0.0f, 0.5f, 32, 32);
                Gl.glRotatef(180.0f, 1.0f, 0.0f, 0.0f);
                Gl.glTranslatef(0.0f, 0.0f, 1.0f);
                Glu.gluDisk(quadratic, 0.0f, 0.5f, 32, 32);
                Gl.glPopMatrix();

                Gl.glEndList();
                bCylinderDefined = true;
            }

            Gl.glCallList(LISTCYLINDER);
        }
Example #3
0
        protected void doorKnob()
        {
            int cullFace;

            Gl.glGetBooleanv(Gl.GL_CULL_FACE, out cullFace);
            Gl.glDisable(Gl.GL_CULL_FACE);

            Glu.GLUquadric q = Glu.gluNewQuadric();
            //Gl.glColor3d(1,1,1);
            Gl.glColor3d(1, 1, 0);
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, this.texturaKnob);
            Glu.gluQuadricTexture(q, Gl.GL_TRUE);
            Glu.gluQuadricNormals(q, Gl.GL_SMOOTH);
            Gl.glPushMatrix();
            Glu.gluCylinder(q, 5, 1, 1, 15, 3);
            Glu.gluCylinder(q, 1, 1, 4, 10, 1);
            Gl.glPushMatrix();
            Gl.glTranslated(0, 0, 5);
            Gl.glScaled(1, 1, .5);
            Glu.gluSphere(q, 4, 10, 10);
            Gl.glPopMatrix();
            Gl.glPopMatrix();
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, 0);
            Glu.gluDeleteQuadric(q);

            if (cullFace != Gl.GL_FALSE)
            {
                Gl.glEnable(Gl.GL_CULL_FACE);
            }
        }
Example #4
0
 protected void pintaBisagra()
 {
     #region bisagras
     Gl.glBindTexture(Gl.GL_TEXTURE_2D, this.texturaBisagra);
     Gl.glColor3d(1, 1, 1);
     Glu.GLUquadric q = Glu.gluNewQuadric();
     Glu.gluQuadricTexture(q, Gl.GL_TRUE);
     double h = (height - border) / 3;
     double m = (height - border) / 2 - 4;
     Gl.glPushMatrix();
     Gl.glTranslated(0, m, 0);
     Gl.glRotated(90, -1, 0, 0);
     Glu.gluCylinder(q, 1, 1, 8, 10, 10);
     Gl.glPopMatrix();
     Gl.glPushMatrix();
     Gl.glTranslated(0, m - h, 0);
     Gl.glRotated(90, -1, 0, 0);
     Glu.gluCylinder(q, 1, 1, 8, 10, 10);
     Gl.glPopMatrix();
     Gl.glPushMatrix();
     Gl.glTranslated(0, m + h, 0);
     Gl.glRotated(90, -1, 0, 0);
     Glu.gluCylinder(q, 1, 1, 8, 10, 10);
     Gl.glPopMatrix();
     Gl.glBindTexture(Gl.GL_TEXTURE_2D, 0);
     Glu.gluDeleteQuadric(q);
     #endregion
 }
Example #5
0
        /// <summary>Нарисовать дерево</summary>
        private void DrawTrees()
        {
            Glu.GLUquadric q = Glu.gluNewQuadric();
            Glu.gluQuadricTexture(q, Gl.GL_TRUE);
            Glu.gluQuadricDrawStyle(q, Glu.GLU_FILL);

            Gl.glTranslated(0.0, -0.5, 0.0);
            Gl.glRotated(90, -1.0, 0.0, 0.0);

            { // рисуем ствол
                // включаем режим текстурирования, указывая индификатор WoodTexture
                Gl.glBindTexture(Gl.GL_TEXTURE_2D, WoodTexture);

                // рисуем цилиндр
                Glu.gluCylinder(q, 0.2, 0.2, 2, 50, 50);
            }

            { // рисуем крону
                // включаем режим текстурирования, указывая индификатор TreeTexture
                Gl.glBindTexture(Gl.GL_TEXTURE_2D, TreeTexture);

                // рисуем сферу
                Gl.glTranslated(0.0, 0.0, 2.0);

                Glu.gluSphere(q, 1, 50, 50);
                Gl.glTranslated(0.0, 0.0, -2.0);
            }

            Gl.glRotated(90, 1.0, 0.0, 0.0);
            Gl.glTranslated(0.0, 0.5, 0.0);

            Glu.gluDeleteQuadric(q);
        }
Example #6
0
        void DrawSelectionHandle()
        {
            graphics.PushMatrix();

            graphics.Scale(1.5, 1.5, 1.5);
            Glu.GLUquadric quadratic = Glu.gluNewQuadric();   // Create A Pointer To The Quadric Entity

            Glu.gluQuadricNormals(quadratic, Glu.GLU_SMOOTH); // Create Smooth Normals

            Glu.gluQuadricOrientation(quadratic, Glu.GLU_OUTSIDE);
            graphics.Translate(0.0f, 0.0f, -0.025f);   // Center The Cylinder
            Glu.gluCylinder(quadratic, 0.5f, 0.5f, 0.05f, 20, 3);

            Glu.gluQuadricOrientation(quadratic, Glu.GLU_INSIDE);
            Glu.gluCylinder(quadratic, 0.48f, 0.5f, 0.05f, 20, 3);

            Glu.gluQuadricOrientation(quadratic, Glu.GLU_OUTSIDE);

            graphics.Rotate(180.0f, 1.0f, 0.0f, 0.0f);
            Glu.gluDisk(quadratic, 0.48f, 0.5f, 20, 3);

            graphics.Rotate(180.0f, 1.0f, 0.0f, 0.0f);
            graphics.Translate(0.0f, 0.0f, 0.05f);
            Glu.gluDisk(quadratic, 0.48f, 0.5f, 20, 3);


            graphics.PopMatrix();
        }
    public override void Recompile()
    {
        Gl.glNewList(idVisualizar, Gl.GL_COMPILE);
        Gl.glPushMatrix();
        CauchoNegro cn = new CauchoNegro();

        Gl.glDisable(Gl.GL_CULL_FACE);
        Gl.glColor3d(cn.Ambient.r, cn.Ambient.g, cn.Ambient.b);
        cn.Set();
        Gl.glTranslated(start.x, start.y, start.z);
        Glu.GLUquadric cil;
        cil = Glu.gluNewQuadric();
        Glu.gluQuadricNormals(cil, Glu.GLU_SMOOTH);
        Glu.gluCylinder(cil, rad, rad, rad / 2, 32, 32);

        cil = Glu.gluNewQuadric();
        Glu.gluQuadricNormals(cil, Glu.GLU_SMOOTH);
        Glu.gluDisk(cil, 0.55 * rad, rad, 32, 32);

        Gl.glTranslated(0, 0, rad / 2);
        cil = Glu.gluNewQuadric();
        Glu.gluQuadricNormals(cil, Glu.GLU_SMOOTH);
        Glu.gluDisk(cil, 0.55 * rad, rad, 32, 32);
        cn.UnSet();

        Gl.glEnable(Gl.GL_CULL_FACE);
        Gl.glPopMatrix();
        Gl.glEndList();
    }
Example #8
0
        public override void Draw()
        {
            if (Enable == false)
            {
                return;
            }

            float range        = 100;
            float height       = _Math3D.GetDistance(pBegin, pEnd);
            float fAxisRadius  = (float)(0.008 * range);
            float fAxisHeight  = (float)(0.95 * height);
            float fArrowRadius = (float)(0.015 * range);
            float fArrowHeight = (float)(0.03 * height);

            Gl.glPushMatrix();
            base.Draw();
            Gl.glMultMatrixf(Matrix);
            // Ve hinh
            Glu.gluCylinder(pObj, fAxisRadius, fAxisRadius, fAxisHeight, 10, 1);
            Gl.glPushMatrix();
            Gl.glTranslatef(0.0f, 0.0f, fAxisHeight);
            Glu.gluCylinder(pObj, fArrowRadius, 0.0f, fArrowHeight, 10, 1);
            Gl.glRotatef(180.0f, 1.0f, 0.0f, 0.0f);
            Glu.gluDisk(pObj, fAxisRadius, fArrowRadius, 10, 1);
            Gl.glPopMatrix();
            Gl.glPopMatrix();
        }
        public void Draw()
        {
            // TODO 3.3.0: Modelovanje modela antene u zasebnoj klasi Antenna
            //zlatan materijal

            float[] Ka = { 0.42f, 1.0f, 0.0f, 1.0f };
            float[] Kd = { 1.0f, 1.0f, 0.0f, 0.0f };
            float[] Ks = { 1.0f, 0.62f, 1.0f, 1.0f };
            float[] Ke = { 0.21f, 0.03f, 0.0f, 1.0f };
            float[] Se = { 10.0f };

            Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_AMBIENT, Ka);
            Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_DIFFUSE, Kd);
            Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_SPECULAR, Ks);
            Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_EMISSION, Ke);
            Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_SHININESS, Se);

            // spine
            Gl.glPushMatrix();
            Gl.glTranslatef(-0.5f, 0.0f, 0.0f);
            Glu.gluCylinder(m_gluObj, m_width, m_width + 1, m_height, 15, 15);
            Gl.glPopMatrix();
            // disc
            Gl.glPushMatrix();
            Gl.glRotatef(180 - 45, 0, 1, 0);
            //Gl.glTranslatef(3.0f, 0.0f, 0.0f);
            Glu.gluDisk(m_gluObj, 0, 5, 128, 128);
            Gl.glPopMatrix();


            Gl.glFlush();
        }
        // Ham ve
        public override void Draw()
        {
            if (Enable == false)
            {
                Gl.glDisable(mIndex);
                return;
            }

            Gl.glEnable(mIndex);
            Gl.glLightfv(mIndex, Gl.GL_POSITION, mLightPos);
            Gl.glLightfv(mIndex, Gl.GL_DIFFUSE, AmbientLight);
            Gl.glLightfv(mIndex, Gl.GL_SPECULAR, SpecularLight);
//            Gl.glLightf(mIndex, Gl.GL_SPOT_CUTOFF, SpotCutOff);

            Gl.glPushMatrix();
            Gl.glMultMatrixf(base.Matrix);
            Gl.glLightfv(mIndex, Gl.GL_SPOT_DIRECTION, SpotDir);

            // Mau cua bong den la mau cua nguon sang
            Gl.glColor3ub(255, 0, 0);
            Gl.glRotatef(180, 1, 0, 0);
            Glu.gluCylinder(mQuadricCone, 4.0, 0, 6.0, 15, 15);
            // Draw a smaller displaced sphere to denote the light bulb
            // Save the lighting state variables
            Gl.glPushAttrib(Gl.GL_LIGHTING_BIT);
            // Turn off lighting and specify a bright yellow sphere
            Gl.glDisable(Gl.GL_LIGHTING);
            base.Draw();
            Glu.gluSphere(mQuadricSphere, 3.0, 15, 15);
            // Restore lighting state variables
            Gl.glPopAttrib();

            Gl.glPopMatrix();
        }
    public override void Recompile()
    {
        this.abaj.Recompile();
        Gl.glNewList(idVisualizar, Gl.GL_COMPILE);
        Gl.glPushMatrix();

        Gl.glDisable(Gl.GL_CULL_FACE);

        Glu.GLUquadric sph = Glu.gluNewQuadric();
        Glu.gluQuadricOrientation(sph, Glu.GLU_OUTSIDE);
        Gl.glTranslated(start.x, start.y, start.z);
        Gl.glTranslated(-(Math.Sqrt(Math.Pow(this.alto, 2) - Math.Pow(this.alto, 2) / 4)), 0, 0);
        Gl.glRotated(15, 0, 0, 1);
        Gl.glColor3fv(color);
        Gl.glClipPlane(Gl.GL_CLIP_PLANE0, new double[] { 1.0, 0.0, 0, -(Math.Sqrt(Math.Pow(this.alto, 2) - Math.Pow(this.alto, 2) / 4)) });
        Gl.glEnable(Gl.GL_CLIP_PLANE0);
        Glu.gluQuadricNormals(sph, Glu.GLU_SMOOTH);
        Glu.gluCylinder(sph, this.alto, this.alto, this.largo, 32, 32);
        sph = Glu.gluNewQuadric();
        Glu.gluQuadricNormals(sph, Glu.GLU_SMOOTH);
        Glu.gluDisk(sph, 0, this.alto, 32, 32);

        sph = Glu.gluNewQuadric();
        Glu.gluQuadricNormals(sph, Glu.GLU_SMOOTH);
        Gl.glTranslated(0, 0, this.largo);
        Glu.gluDisk(sph, 0, this.alto, 32, 32);
        Gl.glDisable(Gl.GL_CLIP_PLANE0);

        Gl.glEnable(Gl.GL_CULL_FACE);
        Gl.glPopMatrix();
        Gl.glEndList();
    }
Example #12
0
        }// drawCylinder

        public static void drawCylinderTranslucent(Vector3d u, Vector3d v, double r, Color c)
        {
            Gl.glEnable(Gl.GL_BLEND);
            Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA);
            Gl.glDisable(Gl.GL_CULL_FACE);

            Glu.GLUquadric quad   = Glu.gluNewQuadric();
            double         height = (u - v).Length();
            Vector3d       dir    = (v - u).normalize();
            double         angle  = Math.Acos(dir.z / dir.Length()) * 180 / Math.PI;

            drawSphere(u, r, c);

            Gl.glColor3ub(c.R, c.G, c.B);
            Gl.glPushMatrix();
            Gl.glTranslated(u.x, u.y, u.z);
            Gl.glRotated(angle, -dir.y, dir.x, 0);
            Glu.gluCylinder(quad, r, r, height, _NSlices, _NSlices);
            Gl.glPopMatrix();

            drawSphere(v, r, c);

            Glu.gluDeleteQuadric(quad);

            Gl.glDisable(Gl.GL_BLEND);
            Gl.glDisable(Gl.GL_CULL_FACE);
        }// drawCylinderTranslucent
Example #13
0
        private void DrawAgarrador(bool esIzquierdo)
        {
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glPushMatrix();
            Gl.glEnable(Gl.GL_LIGHTING);
            Glu.GLUquadric quad = Glu.gluNewQuadric();

            Gl.glTranslated((esIzquierdo ? -1 : 1) * ANCHO_RECTANGULO / 3d, LARGO_BASE + LARGO_PARAGOLPE + (LARGO_AGARRADOR / 2d), -RADIO_AGARRADOR);
            Gl.glRotated(90, 1, 0, 0);

            Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_AMBIENT, LUZ_AZUL);
            Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_DIFFUSE, LUZ_AZUL);
            Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_SPECULAR, this.LuzBrillo);
            Gl.glMateriali(Gl.GL_FRONT, Gl.GL_SHININESS, this.Shininess);

            Glu.gluCylinder(quad, RADIO_AGARRADOR, RADIO_AGARRADOR, LARGO_AGARRADOR, 20, 20);
            Gl.glRotated(180, 1, 0, 0);

            Glu.gluDisk(quad, 0, RADIO_AGARRADOR, 20, 20);
            Glu.gluCylinder(quad, RADIO_AGARRADOR * 2d, RADIO_AGARRADOR * 2d, LARGO_AGARRADOR * 0.2, 20, 20);

            Gl.glTranslated(0, 0, LARGO_AGARRADOR * 0.2d);
            Glu.gluDisk(quad, 0, RADIO_AGARRADOR * 2d, 20, 20);

            Glu.gluDeleteQuadric(quad);
            Gl.glDisable(Gl.GL_LIGHTING);
            Gl.glPopMatrix();
        }
        // Ham ve
        public override void Draw()
        {
            if (Enable == false)
            {
                return;
            }

            base.Draw();
            Gl.glPushMatrix();
            Gl.glMultMatrixf(base.Matrix);
            Gl.glRotatef(-90, 1, 0, 0);
            int texture;

            if (EnableTexture == true)
            {
                texture = Gl.GL_TRUE;
                Gl.glColor3b(127, 127, 127);
            }
            else
            {
                texture = Gl.GL_FALSE;
            }

            Glu.gluQuadricTexture(mQuadricCone, texture);
            Glu.gluQuadricTexture(mQuadricDisk, texture);

            Glu.gluCylinder(mQuadricCone, mBase, 0, mHeight, mSlices, mStacks);
            Glu.gluDisk(mQuadricDisk, 0, mBase, mSlices, mStacks);
            Gl.glPopMatrix();
        }
Example #15
0
        protected override void Particular()
        {
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, GlUtils.Texture("old7"));
            Gl.glLightModeli(Gl.GL_LIGHT_MODEL_TWO_SIDE, 1);

            Glu.GLUquadric q = Glu.gluNewQuadric();
            Glu.gluQuadricTexture(q, Gl.GL_TRUE);
            Gl.glColor3d(1, 1, 1);
            Gl.glPushMatrix();
            Gl.glRotated(90, 1, 4, 0);
            Glu.gluDisk(q, 0, 5 * 2, 20, 20);
            Gl.glRotated(180, 1, 0, 0);
            Glu.gluCylinder(q, 5 * 2, 8 * 2, 3 * 2, 20, 20);
            Gl.glTranslated(0, 0, 2.5 * 2);
            Gl.glColor3d(0, 0, 0);
            Glu.gluDisk(q, 14.8, 15, 20, 20);
            Gl.glTranslated(0, 0, -2.5 * 2);
            Gl.glRotated(90, 1, 4, 0);
            Gl.glPopMatrix();
            yInc = 0;
            Gl.glColor3d(1, 1, 1);
            Glu.gluDeleteQuadric(q);
            Gl.glLightModeli(Gl.GL_LIGHT_MODEL_TWO_SIDE, 0);
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, 0);
        }
Example #16
0
        /// <summary>
        ///  Metoda iscrtava jednu mlaznicu.
        /// </summary>
        void DrawBase()
        {
            Gl.glDisable(Gl.GL_CULL_FACE);

            Gl.glPushMatrix();
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, World.textures[(int)World.TextureObjects.TEKSTURA_SREBRA]);


            Gl.glColor3ub(150, 180, 180);
            Gl.glPushMatrix();

            Gl.glTranslatef(0.0f, 0.0f, 7.0f);
            Gl.glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
            Glu.gluCylinder(m_gluObj, 1.3f, 1.3f, 0.5f, 128, 128);
            Gl.glPopMatrix();


            Gl.glPushMatrix();
            Gl.glTranslatef(0.0f, 0.0f, 7.0f);
            Gl.glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
            Glu.gluDisk(m_gluObj, 0.0f, 1.3f, 128, 128);
            Gl.glPopMatrix();


            Gl.glPushMatrix();
            Gl.glTranslatef(0.0f, 0.0f, 7.0f);
            Gl.glTranslatef(0.0f, -0.5f, 0.0f);
            Gl.glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
            Glu.gluDisk(m_gluObj, 0.0f, 1.3f, 128, 128);
            Gl.glPopMatrix();

            Gl.glPopMatrix();
        }
Example #17
0
        public override void Render()
        {
#if drawCenter
            Gl.glPushMatrix();
            Gl.glTranslated(position.X, position.Y, position.Z);
            Glu.GLUquadric qu = Glu.gluNewQuadric();
            Gl.glColor3d(1, 1, 0);
            Glu.gluSphere(qu, 2, 5, 5);
            Glu.gluDeleteQuadric(qu);
            Gl.glPopMatrix();
#endif
            Glu.GLUquadric q = Glu.gluNewQuadric();
            Gl.glPushMatrix();
            Gl.glTranslated(position.X, position.Y, position.Z);
            Gl.glColor3d(128 / 256.0, 64 / 256.0, 64 / 256.0);
            Gl.glColor3d(.55, .425, .425);
            Gl.glRotated(90, 1, 0, 0);
            Glu.gluCylinder(q, 10, 1, 3, 10, 5);
            Gl.glPopMatrix();
            Glu.gluDeleteQuadric(q);
            c.Render();
            Gl.glTranslated(position.X, position.Y - length - 30, position.Z);
            renderLamp();
            Gl.glPopMatrix();
        }
Example #18
0
        /// <summary>
        /// Draws a cone very quickly using an OpenGL display list, with no bottom disk and
        /// 8 slices radiating from the tip. This method must not be called in between Gl.glNewList
        /// and Gl.glEndList.</summary>
        /// <param name="baseRadius">Radius at base of cone</param>
        /// <param name="height">Cone height</param>
        /// <param name="renderStyle">Render style: Wireframe or Solid</param>
        public static void DrawConeDisplayList(float baseRadius, float height, RenderStyle renderStyle)
        {
            int drawStyle = (renderStyle == RenderStyle.Wireframe) ? Glu.GLU_LINE : Glu.GLU_FILL;

            Gl.glPushMatrix();
            Gl.glScalef(baseRadius, baseRadius, height);

            int displayList;

            if (!s_coneDisplayLists.TryGetValue(drawStyle, out displayList))
            {
                displayList = Gl.glGenLists(1);
                Gl.glNewList(displayList, Gl.GL_COMPILE);

                Glu.gluQuadricDrawStyle(s_quadric, drawStyle);
                Glu.gluQuadricNormals(s_quadric, Glu.GLU_SMOOTH);
                Glu.gluCylinder(s_quadric, 1.0, 0.0, 1.0, FAST_CONE_SLICES, FAST_CONE_STACKS);

                Gl.glEndList();
                s_coneDisplayLists.Add(drawStyle, displayList);
            }

            Gl.glCallList(displayList);
            Gl.glPopMatrix();

            // Note that we are not rendering the bottom. That would require a separate call to gluDisk.
            // Assuming that each stack is a quad strip. This cone could be more efficiently rendered
            // as a triangle fan.
            Util3D.RenderStats.PrimCount   += FAST_CONE_SLICES * FAST_CONE_STACKS;
            Util3D.RenderStats.VertexCount += (2 + FAST_CONE_SLICES * 2) * FAST_CONE_STACKS;
        }
Example #19
0
        protected override void Particular()
        {
            //Gl.glColor3d(0.26171875,0.55078125,0.69140625);
            Gl.glColor3d(1, 1, 1);
            Gl.glPushMatrix();
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, GlUtils.Texture("COLCHON"));
            GlUtils.PintaOrtoedro(largo, 10, ancho, true);
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, GlUtils.Texture("WOOD1"));
            Glu.GLUquadric q = Glu.gluNewQuadric();
            Glu.gluQuadricTexture(q, Gl.GL_TRUE);
            Gl.glTranslated(-largo + 5, -10, -ancho + 5);
            Gl.glRotated(90, 1, 0, 0);
            Glu.gluCylinder(q, 5, 2, 20, 20, 20);
            Gl.glRotated(-90, 1, 0, 0);
            Gl.glTranslated(0, 0, 2 * ancho - 10);
            Gl.glRotated(90, 1, 0, 0);
            Glu.gluCylinder(q, 5, 2, 20, 20, 20);
            Gl.glRotated(-90, 1, 0, 0);
            Gl.glTranslated(2 * largo - 10, 0, 0);
            Gl.glRotated(90, 1, 0, 0);
            Glu.gluCylinder(q, 5, 2, 20, 20, 20);
            Gl.glRotated(-90, 1, 0, 0);
            Gl.glTranslated(0, 0, -2 * ancho + 10);
            Gl.glRotated(90, 1, 0, 0);
            Glu.gluCylinder(q, 5, 2, 20, 20, 20);
            Gl.glRotated(-90, 1, 0, 0);
            Gl.glPopMatrix();
//			yInc = 30;
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, 0);
        }
Example #20
0
 private void raindrop()
 {
     Gl.glPopMatrix();
     Gl.glColor3f(0.85f, 0.85f, 0.85f);
     Glu.gluSphere(Glu.gluNewQuadric(), 0.3, 15, 15);
     Gl.glRotated(90, 1, 0, 0);
     Glu.gluCylinder(Glu.gluNewQuadric(), 0.3, 0, 1, 15, 15);
     Gl.glPopMatrix();
 }
Example #21
0
 private void simpleOpenGlControl1_Paint(object sender, PaintEventArgs e)
 {
     Gl.glClearColor(r, g, b, 0.0f);
     Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
     Gl.glMatrixMode(Gl.GL_MODELVIEW);
     Gl.glLoadIdentity();
     Glu.gluLookAt(eyex, eyey, eyez, atx, aty, atz, 0.0, 1.0, 0.0);
     Gl.glColor3f(0.5f, 1, 0);
     Glu.gluCylinder(Glu.gluNewQuadric(), 2, 10, 20, 30, 30);
 }
Example #22
0
        void baze()
        {
            Gl.glPushMatrix();                      //save the matrix

            Gl.glRotatef(-90.0f, 1.0f, 0.0f, 0.0f); //rotate the cylinder so that it is on the base and not on a round wall

            Glu.gluCylinder(Glu.gluNewQuadric(), Bazes_radiuss, Bazes_radiuss, Bazes_platums, 25, 25);
            //Base as a cylinder, the last two parameters 25 and 25 are used to make the cylinder round
            Gl.glPopMatrix(); //loading matrix
        }
Example #23
0
        /// <summary>
        ///     Draws everything.
        /// </summary>
        /// <returns>
        ///     Returns <c>true</c> on success, otherwise <c>false</c>.
        /// </returns>
        private static bool DrawGLScene()                                       // Here's Where We Do All The Drawing
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);        // Clear The Screen And The Depth Buffer
            Gl.glLoadIdentity();                                                // Reset The View

            Gl.glTranslatef(0, 0, z);

            Gl.glEnable(Gl.GL_TEXTURE_GEN_S);                                   // Enable Texture Coord Generation For S (NEW)
            Gl.glEnable(Gl.GL_TEXTURE_GEN_T);                                   // Enable Texture Coord Generation For T (NEW)

            Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[filter + (filter + 1)]); // This Will Select The Sphere Map
            Gl.glPushMatrix();
            Gl.glRotatef(xrot, 1, 0, 0);
            Gl.glRotatef(yrot, 0, 1, 0);
            switch (objectToDraw)
            {
            case 0:
                GlDrawCube();
                break;

            case 1:
                Gl.glTranslatef(0, 0, -1.5f);                                   // Center The Cylinder
                Glu.gluCylinder(quadratic, 1, 1, 3, 32, 32);                    // A Cylinder With A Radius Of 0.5 And A Height Of 2
                break;

            case 2:
                Glu.gluSphere(quadratic, 1.3, 32, 32);                          // Draw A Sphere With A Radius Of 1 And 16 Longitude And 16 Latitude Segments
                break;

            case 3:
                Gl.glTranslatef(0, 0, -1.5f);                                   // Center The Cone
                Glu.gluCylinder(quadratic, 1, 0, 3, 32, 32);                    // A Cone With A Bottom Radius Of .5 And A Height Of 2
                break;
            }
            ;
            Gl.glPopMatrix();
            Gl.glDisable(Gl.GL_TEXTURE_GEN_S);
            Gl.glDisable(Gl.GL_TEXTURE_GEN_T);

            Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[filter * 2]);            // This Will Select The BG Maps...
            Gl.glPushMatrix();
            Gl.glTranslatef(0, 0, -24);
            Gl.glBegin(Gl.GL_QUADS);
            Gl.glNormal3f(0, 0, 1);
            Gl.glTexCoord2f(0, 0); Gl.glVertex3f(-13.3f, -10, 10);
            Gl.glTexCoord2f(1, 0); Gl.glVertex3f(13.3f, -10, 10);
            Gl.glTexCoord2f(1, 1); Gl.glVertex3f(13.3f, 10, 10);
            Gl.glTexCoord2f(0, 1); Gl.glVertex3f(-13.3f, 10, 10);
            Gl.glEnd();
            Gl.glPopMatrix();

            xrot += xspeed;
            yrot += yspeed;
            return(true);                                                        // Everything Went OK
        }
Example #24
0
 void pintaPata(double alto)
 {
     Glu.GLUquadric q = Glu.gluNewQuadric();
     Glu.gluQuadricTexture(q, Gl.GL_TRUE);
     Gl.glTranslated(0, -alto, 0);
     Gl.glRotated(90, -1, 0, 0);
     Glu.gluCylinder(q, 5, 8, 2 * alto, 20, 20);
     Gl.glRotated(-90, -1, 0, 0);
     Gl.glTranslated(0, alto, 0);
     Glu.gluDeleteQuadric(q);
 }
Example #25
0
 void desenhaEixo()
 {
     Glu.gluCylinder(modelo.quad, 0.5, 0.5, 20, 16, 15);
     Gl.glPushMatrix();
     Gl.glTranslatef(0, 0, 20);
     Gl.glPushMatrix();
     Gl.glRotatef(180, 0, 1, 0);
     Glu.gluDisk(modelo.quad, 0.5, 2, 16, 6);
     Gl.glPopMatrix();
     Glu.gluCylinder(modelo.quad, 2, 0, 5, 16, 15);
     Gl.glPopMatrix();
 }
Example #26
0
        private void DrawLinterna(bool prenderLinterna)
        {
            float[] locomotora_light_color = new float[4] {
                1.0f, 1.0f, 1.0f, 1.0f
            };

            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glPushMatrix();
            Gl.glEnable(Gl.GL_LIGHTING);
            Glu.GLUquadric quad = Glu.gluNewQuadric();

            Gl.glTranslated(0, LARGO_BASE - LARGO_BASE * 0.1d, RADIO_TROMPA * 2d);

            Gl.glLightfv(Gl.GL_LIGHT6, Gl.GL_POSITION, light_linterna_position);
            Gl.glLightfv(Gl.GL_LIGHT6, Gl.GL_SPOT_DIRECTION, light_linterna_direction);
            Gl.glLightfv(Gl.GL_LIGHT6, Gl.GL_DIFFUSE, locomotora_light_color);
            Gl.glLightfv(Gl.GL_LIGHT6, Gl.GL_AMBIENT, new float[4] {
                0f, 0f, 0f, 1f
            });
            Gl.glLightfv(Gl.GL_LIGHT6, Gl.GL_SPECULAR, new float[4] {
                1f, 1f, 1f, 1f
            });
            Gl.glLightfv(Gl.GL_LIGHT6, Gl.GL_LINEAR_ATTENUATION, new float[] { .01f });
            Gl.glLightfv(Gl.GL_LIGHT6, Gl.GL_SPOT_CUTOFF, new float[] { 30.0f });

            Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_AMBIENT, LUZ_ROJO);
            Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_DIFFUSE, LUZ_ROJO);
            Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_SPECULAR, this.LuzBrillo);
            Gl.glMateriali(Gl.GL_FRONT, Gl.GL_SHININESS, this.Shininess);

            Glu.gluCylinder(quad, RADIO_SOSTENEDOR_LUZ, RADIO_SOSTENEDOR_LUZ, ALTO_SOSTENEDOR_LUZ, 20, 20);

            Gl.glTranslated(0, ANCHO_CONTENEDOR_LUZ * 0.5d, ALTO_SOSTENEDOR_LUZ + RADIO_CONTENEDOR_LUZ);
            Gl.glRotated(90, 1, 0, 0);
            Glu.gluCylinder(quad, RADIO_CONTENEDOR_LUZ, RADIO_CONTENEDOR_LUZ, ANCHO_CONTENEDOR_LUZ, 20, 20);

            Gl.glTranslated(0, 0, ANCHO_CONTENEDOR_LUZ);
            Glu.gluDisk(quad, 0, RADIO_CONTENEDOR_LUZ, 20, 20);

            if (prenderLinterna)
            {
                Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_EMISSION, this.luzEmicionPrendida);
            }
            Gl.glTranslated(0, 0, -(ANCHO_CONTENEDOR_LUZ * 0.8d));
            Gl.glRotated(180, 1, 0, 0);
            //Gl.glScaled(0.5d, 1, 2);
            Glu.gluDisk(quad, 0, RADIO_CONTENEDOR_LUZ, 20, 20);
            Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_EMISSION, this.luzEmicionApagada);

            Glu.gluDeleteQuadric(quad);
            Gl.glDisable(Gl.GL_LIGHTING);
            Gl.glPopMatrix();
        }
        protected override void Particular()
        {
            Gl.glDisable(Gl.GL_TEXTURE_2D);
            Gl.glColor3d(1, 1, 1);

            GlUtils.PintaOrtoedro(0.7f * 40, 1.0f * 40, 0.7f * 40);

            Gl.glPushMatrix();
            Gl.glTranslated(0, 1.50f * 40, 0);
            GlUtils.PintaOrtoedro(0.7f * 40, 0.5f * 40, 0.7f * 40);
            Gl.glPopMatrix();

            Gl.glColor3d(0, 0, 0);

            GlUtils.pintaLineas(0.7f * 40, 1.0f * 40, 0.7f * 40);
            //pintaLineas(0.7f*40,1,0.7f);

            Gl.glPushMatrix();
            Gl.glTranslatef(0, 1.50f * 40, 0);
            GlUtils.pintaLineas(0.7f * 40, 0.5f * 40, 0.7f * 40);
            //pintaLineas(0.7f*40,0.5f*40,0.7f);
            Gl.glColor3d(1, 1, 1);
            Gl.glTranslatef(0, 0, 0.8f * 40);
            Gl.glRotated(90, 0, 0, 1);

            GlUtils.PintaOrtoedro(0.5f * 40, 0.7f * 40, 0.1f * 40);
            Gl.glColor3d(0, 0, 0);

            GlUtils.pintaLineas(0.5f * 40, 0.7f * 40, 0.1f * 40);
            //pintaLineas(0.5f*40,0.7f*40,0.1f);
            Gl.glColor3d(0, 0, 0);
            Gl.glTranslatef(-0.2f * 40, 0.5f * 40, 0.1f * 40);
            Gl.glRotated(90, 0, 1, 0);
            Glu.gluCylinder(Glu.gluNewQuadric(), 0.03f * 40, 0.05f * 40, 0.4f * 40, 10, 10);
            Gl.glPopMatrix();
            Gl.glPushMatrix();
            Gl.glTranslatef(0, 0, 0.8f * 40);
            Gl.glColor3d(1, 1, 1);

            GlUtils.PintaOrtoedro(0.7f * 40, 1.0f * 40, 0.1f * 40);
            Gl.glColor3d(0, 0, 0);

            GlUtils.pintaLineas(0.7f * 40, 1.0f * 40, 0.1f * 40);
            //pintaLineas(0.7f*40,1,0.1f);
            Gl.glTranslatef(-0.5f * 40, 0, 0.1f * 40);
            Gl.glRotated(90, -1, 0, 0);
            Glu.gluCylinder(Glu.gluNewQuadric(), 0.03f * 40, 0.05f * 40, 0.4f * 40, 10, 10);
            Gl.glPopMatrix();


            Gl.glEnable(Gl.GL_TEXTURE_2D);
            yInc = 40;
        }
Example #28
0
        protected void renderLamp()
        {
            Gl.glGetBooleanv(Gl.GL_CULL_FACE, out cullFace);
            Gl.glDisable(Gl.GL_CULL_FACE);

            Glu.GLUquadric quadric;
            quadric = Glu.gluNewQuadric();

            Gl.glPushMatrix();
            Gl.glTranslated(0, 0, 0);
            #region cuerpo
//			Gl.glColor3d(1, 0, 0);
            //Gl.glColor3d(1, 0, 0);

            Gl.glPushMatrix();
            Gl.glTranslated(0, 25, 0);
            Gl.glRotated(-90, 1, 0, 0);
            Glu.gluCylinder(quadric, 5, 10, 10, 8, 10);
            Gl.glPopMatrix();
            #endregion cuerpo
            #region bombillo
            Gl.glPushMatrix();
            Gl.glTranslated(0, 25, 0);
            Gl.glRotated(90, 1, 0, 0);
            //Gl.glColor3d(.5,.5,.5);

            Glu.gluCylinder(quadric, 5, 5, 12, 8, 8);
            Gl.glPopMatrix();
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, GlUtils.Texture("bulb"));
            Gl.glPushMatrix();

            Gl.glColor3d(1, 1, 1);
            Gl.glTranslated(0, 8, 0);
            Glut.glutSolidSphere(10, 8, 8);
            Gl.glPopMatrix();
            #endregion bombillo;
            Gl.glPushMatrix();
            Gl.glEnable(Gl.GL_BLEND);
            Gl.glColor3d(.98, .58, .35);
            Gl.glClipPlane(Gl.GL_CLIP_PLANE0, plano);
            Gl.glEnable(Gl.GL_CLIP_PLANE0);
            Gl.glLightModeli(Gl.GL_LIGHT_MODEL_TWO_SIDE, 1);
            Glu.gluSphere(quadric, 30, 15, 10);
            Gl.glLightModeli(Gl.GL_LIGHT_MODEL_TWO_SIDE, 0);
            Gl.glPopMatrix();
            Gl.glDisable(Gl.GL_CLIP_PLANE0);
            Gl.glPopMatrix();
            if (cullFace != Gl.GL_FALSE)
            {
                Gl.glEnable(Gl.GL_CULL_FACE);
            }
        }
Example #29
0
    public override void Recompile()
    {
        asient.Recompile();
        foreach (Ortoedro o in patas)
        {
            o.Recompile();
        }
        foreach (Ortoedro o in madesp)
        {
            o.Recompile();
        }

        Gl.glNewList(idVisualizar, Gl.GL_COMPILE);
        Gl.glPushMatrix();
        Gl.glDisable(Gl.GL_CULL_FACE);

        Glu.GLUquadric sph = Glu.gluNewQuadric();
        Glu.gluQuadricOrientation(sph, Glu.GLU_OUTSIDE);
        Gl.glTranslated(madesp[0].Inicio.x, madesp[0].Inicio.y - madesp[0].Alto / 5.0, madesp[0].Inicio.z - asient.Largo + madesp[0].Largo);
        Gl.glColor3fv(asient.Color);
        Gl.glClipPlane(Gl.GL_CLIP_PLANE0, new double[] { 1.0, 0.0, 0, 0.0 });
        Gl.glEnable(Gl.GL_CLIP_PLANE0);


        Glu.gluCylinder(sph, madesp[0].Alto / 5, madesp[0].Alto / 5, asient.Ancho - 2 * madesp[0].Largo, 32, 32);

        sph = Glu.gluNewQuadric();

        Glu.gluDisk(sph, 0, madesp[0].Alto / 5, 32, 32);

        sph = Glu.gluNewQuadric();
        Gl.glTranslated(0, 0, asient.Largo - 2 * madesp[0].Largo);

        Glu.gluDisk(sph, 0, madesp[0].Alto / 5, 32, 32);

        Gl.glPopMatrix();

        Gl.glBegin(Gl.GL_POLYGON);
        Gl.glTexCoord2d(0, 0); Gl.glVertex3d(madesp[0].Inicio.x + 0.05, madesp[0].Inicio.y, madesp[0].Inicio.z - madesp[0].Largo);
        Gl.glTexCoord2d(1, 0); Gl.glVertex3d(madesp[0].Inicio.x + 0.05, madesp[0].Inicio.y - 2 * madesp[0].Alto / 5, madesp[0].Inicio.z - madesp[0].Largo);
        Gl.glTexCoord2d(1, 1); Gl.glVertex3d(madesp[0].Inicio.x + 0.05, madesp[0].Inicio.y - 2 * madesp[0].Alto / 5, madesp[0].Inicio.z - asient.Largo + madesp[0].Largo);
        Gl.glTexCoord2d(0, 1); Gl.glVertex3d(madesp[0].Inicio.x + 0.05, madesp[0].Inicio.y, madesp[0].Inicio.z - asient.Largo + madesp[0].Largo);
        Gl.glEnd();

        Gl.glDisable(Gl.GL_CLIP_PLANE0);
        Gl.glEnable(Gl.GL_CULL_FACE);



        Gl.glEndList();
    }
Example #30
0
        // --- Application Methods ---
        #region Init()
        private static void Init()
        {
            Glu.GLUquadric quadric;
            float[]        materialAmbient   = { 0.5f, 0.5f, 0.5f, 1.0f };
            float[]        materialSpecular  = { 1.0f, 1.0f, 1.0f, 1.0f };
            float[]        materialShininess = { 50.0f };
            float[]        lightPosition     = { 1.0f, 1.0f, 1.0f, 0.0f };
            float[]        modelAmbient      = { 0.5f, 0.5f, 0.5f, 1.0f };

            Gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

            Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_AMBIENT, materialAmbient);
            Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_SPECULAR, materialSpecular);
            Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_SHININESS, materialShininess);
            Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_POSITION, lightPosition);
            Gl.glLightModelfv(Gl.GL_LIGHT_MODEL_AMBIENT, modelAmbient);

            Gl.glEnable(Gl.GL_LIGHTING);
            Gl.glEnable(Gl.GL_LIGHT0);
            Gl.glEnable(Gl.GL_DEPTH_TEST);

            //  Create 4 display lists, each with a different quadric object.  Different drawing
            //  styles and surface normal specifications are demonstrated.
            startList = Gl.glGenLists(4);
            quadric   = Glu.gluNewQuadric();
            Glu.gluQuadricCallback(quadric, Glu.GLU_ERROR, new Glu.QuadricErrorCallback(Error));

            Glu.gluQuadricDrawStyle(quadric, Glu.GLU_FILL); // smooth shaded
            Glu.gluQuadricNormals(quadric, Glu.GLU_SMOOTH);
            Gl.glNewList(startList, Gl.GL_COMPILE);
            Glu.gluSphere(quadric, 0.75, 15, 10);
            Gl.glEndList();

            Glu.gluQuadricDrawStyle(quadric, Glu.GLU_FILL); // flat shaded
            Glu.gluQuadricNormals(quadric, Glu.GLU_FLAT);
            Gl.glNewList(startList + 1, Gl.GL_COMPILE);
            Glu.gluCylinder(quadric, 0.5, 0.3, 1.0, 15, 5);
            Gl.glEndList();

            Glu.gluQuadricDrawStyle(quadric, Glu.GLU_LINE); // all polygons wireframe
            Glu.gluQuadricNormals(quadric, Glu.GLU_NONE);
            Gl.glNewList(startList + 2, Gl.GL_COMPILE);
            Glu.gluDisk(quadric, 0.25, 1.0, 20, 4);
            Gl.glEndList();

            Glu.gluQuadricDrawStyle(quadric, Glu.GLU_SILHOUETTE); // boundary only
            Glu.gluQuadricNormals(quadric, Glu.GLU_NONE);
            Gl.glNewList(startList + 3, Gl.GL_COMPILE);
            Glu.gluPartialDisk(quadric, 0.0, 1.0, 20, 4, 0.0, 225.0);
            Gl.glEndList();
        }