Beispiel #1
0
        //-------------------------------------
        public override void ConvertPrimitive(I3DPrimitive primitive, SharpGL.OpenGL gl)
        {
            C3DPrimitiveQuad quad = primitive as C3DPrimitiveQuad;

            if (quad == null || quad.Points == null || quad.Points.Length != 4)
            {
                return;
            }
            for (int nTmp = 0; nTmp < 2; nTmp++)
            {
                if (nTmp == 0)
                {
                    gl.PolygonMode(OpenGL.FRONT_AND_BACK, OpenGL.FILL);
                    gl.Color(GetComposantsCouleur(quad.Couleur));
                }
                else
                {
                    gl.PolygonMode(OpenGL.FRONT_AND_BACK, OpenGL.LINE);
                    gl.Color(0.0f, 0.0f, 0.0f, 1.0f);
                }

                gl.Material(OpenGL.FRONT_AND_BACK, OpenGL.SPECULAR, GetComposantsCouleur(quad.Couleur));
                gl.Material(OpenGL.FRONT_AND_BACK, OpenGL.SHININESS, 100.0f);

                gl.Begin(OpenGL.QUADS);
                //Fond
                //gl.Normal3f(0f, 0f, -1.0f);
                for (int n = 0; n < 4; n++)
                {
                    gl.Vertex(quad.Points[n].X, quad.Points[n].Y, quad.Points[n].Z);
                }

                gl.End();
            }
        }
Beispiel #2
0
        public static void CreateOpenGL(I3DPrimitive primitive, SharpGL.OpenGL gl)
        {
            CConvertisseurOpenGL convertisseur = null;

            if (m_dicConvertisseurs.TryGetValue(primitive.GetType(), out convertisseur))
            {
                convertisseur.ConvertPrimitive(primitive, gl);
            }
        }
Beispiel #3
0
        //-------------------------------------
        public override void ConvertPrimitive(I3DPrimitive primitive, SharpGL.OpenGL gl)
        {
            C3DPrimitiveLigne ligne = primitive as C3DPrimitiveLigne;

            if (ligne == null || ligne.Points == null || ligne.Points.Length < 2)
            {
                return;
            }

            gl.Begin(OpenGL.LINES);
            for (int n = 0; n < ligne.Points.Length; n++)
            {
                gl.Vertex(ligne.Points[n].X, ligne.Points[n].Y, ligne.Points[n].Z);
            }

            gl.End();
        }
Beispiel #4
0
 public abstract void ConvertPrimitive(I3DPrimitive primitive, SharpGL.OpenGL gl);
Beispiel #5
0
        //-------------------------------------
        public override void ConvertPrimitive(I3DPrimitive primitive, SharpGL.OpenGL gl)
        {
            C3DPrimitiveCube cube = primitive as C3DPrimitiveCube;

            if (cube == null)
            {
                return;
            }
            for (int nTmp = 0; nTmp < 2; nTmp++)
            {
                if (nTmp == 0)
                {
                    gl.PolygonMode(OpenGL.FRONT_AND_BACK, OpenGL.FILL);
                    gl.Color(GetComposantsCouleur(cube.Couleur));
                }
                else
                {
                    gl.PolygonMode(OpenGL.FRONT_AND_BACK, OpenGL.LINE);
                    gl.Color(0.0f, 0.0f, 0.0f, 1.0f);
                }

                gl.Material(OpenGL.FRONT_AND_BACK, OpenGL.SPECULAR, GetComposantsCouleur(cube.Couleur));
                gl.Material(OpenGL.FRONT_AND_BACK, OpenGL.SHININESS, 100.0f);

                gl.Begin(OpenGL.QUADS);
                //Fond
                gl.Normal3f(0f, 0f, -1.0f);
                gl.Vertex(cube.Position.X, cube.Position.Y, cube.Position.Z);
                gl.Vertex(cube.Position.X, cube.Position.Y + cube.Size.Height, cube.Position.Z);
                gl.Vertex(cube.Position.X + cube.Size.With, cube.Position.Y + cube.Size.Height, cube.Position.Z);
                gl.Vertex(cube.Position.X + cube.Size.With, cube.Position.Y, cube.Position.Z);

                //Gauche
                gl.Normal(new float[] { -100.0f, 0.0f, 0.0f });
                gl.Vertex(cube.Position.X, cube.Position.Y, cube.Position.Z);
                gl.Vertex(cube.Position.X, cube.Position.Y, cube.Position.Z + cube.Size.Depth);
                gl.Vertex(cube.Position.X, cube.Position.Y + cube.Size.Height, cube.Position.Z + cube.Size.Depth);
                gl.Vertex(cube.Position.X, cube.Position.Y + cube.Size.Height, cube.Position.Z);

                //Dessus
                //gl.Normal(new float[] { 0.0f, 1.0f, 0.0f });
                gl.Vertex(cube.Position.X, cube.Position.Y + cube.Size.Height, cube.Position.Z);
                gl.Vertex(cube.Position.X, cube.Position.Y + cube.Size.Height, cube.Position.Z + cube.Size.Depth);
                gl.Vertex(cube.Position.X + cube.Size.With, cube.Position.Y + cube.Size.Height, cube.Position.Z + cube.Size.Depth);
                gl.Vertex(cube.Position.X + cube.Size.With, cube.Position.Y + cube.Size.Height, cube.Position.Z);

                //Dessous
                gl.Normal(new float[] { 0.0f, -1.0f, 0.0f });
                gl.Vertex(cube.Position.X, cube.Position.Y, cube.Position.Z);
                gl.Vertex(cube.Position.X + cube.Size.With, cube.Position.Y, cube.Position.Z);
                gl.Vertex(cube.Position.X + cube.Size.With, cube.Position.Y, cube.Position.Z + cube.Size.Depth);
                gl.Vertex(cube.Position.X, cube.Position.Y, cube.Position.Z + cube.Size.Depth);

                //Droite
                gl.Normal(new float[] { 1.0f, 0.0f, 0.0f });
                gl.Vertex(cube.Position.X + cube.Size.With, cube.Position.Y, cube.Position.Z);
                gl.Vertex(cube.Position.X + cube.Size.With, cube.Position.Y + cube.Size.Height, cube.Position.Z);
                gl.Vertex(cube.Position.X + cube.Size.With, cube.Position.Y + cube.Size.Height, cube.Position.Z + cube.Size.Depth);
                gl.Vertex(cube.Position.X + cube.Size.With, cube.Position.Y, cube.Position.Z + cube.Size.Depth);

                //Avant
                gl.Normal(new float[] { 0f, 0f, 1.0f });
                gl.Vertex(cube.Position.X, cube.Position.Y, cube.Position.Z + cube.Size.Depth);
                gl.Vertex(cube.Position.X + cube.Size.With, cube.Position.Y, cube.Position.Z + cube.Size.Depth);
                gl.Vertex(cube.Position.X + cube.Size.With, cube.Position.Y + cube.Size.Height, cube.Position.Z + cube.Size.Depth);
                gl.Vertex(cube.Position.X, cube.Position.Y + cube.Size.Height, cube.Position.Z + cube.Size.Depth);

                gl.End();

                /*if (nTmp == 0)
                 * {
                 *  //Gauche
                 *
                 *  gl.Normal(new float[] { -100.0f, 0.0f, 0.0f });
                 *  for (int nY = 0; nY <= cube.Size.Height; nY += cube.Size.Height / 50)
                 *  {
                 *      gl.Begin(OpenGL.QUAD_STRIP);
                 *      gl.Vertex(cube.Position.X, cube.Position.Y + nY, cube.Position.Z);
                 *      gl.Vertex(cube.Position.X, cube.Position.Y + nY + cube.Size.Height / 50, cube.Position.Z);
                 *
                 *      for (int nZ = 0; nZ <= cube.Size.Depth; nZ += cube.Size.Depth / 50)
                 *      {
                 *          gl.Vertex(cube.Position.X, cube.Position.Y + nY, cube.Position.Z + nZ);
                 *          gl.Vertex(cube.Position.X, cube.Position.Y + nY + cube.Size.Height / 50, cube.Position.Z + nZ + cube.Size.Depth / 50);
                 *      }
                 *  }
                 *
                 *  gl.End();
                 * }*/
            }
        }