Пример #1
0
        public void Draw(CustomGLControl glControl)
        {
            Matrix4 worldView = glControl.worldView;

            GL.UniformMatrix4(glControl.matrixID, false, ref worldView);
            Draw(glControl.level.textures);
        }
Пример #2
0
        /*public override void Translate(Vector3 vector)
         * {
         *  for (int i = 0; i < vertexBuffer.Length / 3; i++)
         *  {
         *      SetVertex(i, GetVertex(i) + vector);
         *  }
         *
         *  _position += vector;
         * }
         *
         * public override void Rotate(Vector3 vector)
         * {
         *  float x = vector.X;
         *  float y = vector.Y;
         *  float z = vector.Z;
         *  //Record base position
         *  Vector3 basePosition = GetVertex(0);
         *
         *
         *  for (int i = 0; i < vertexBuffer.Length / 3; i++)
         *  {
         *      //Record vertex position
         *      Vector3 vertex = GetVertex(i);
         *
         *      //Get local position relative to base
         *      Vector3 distance = vertex - basePosition;
         *
         *      //Rotate local position around Z axis
         *      Vector3 rotated1 = new Vector3(
         *          distance.X * fCos(z) - distance.Y * fSin(z),
         *          distance.X * fSin(z) + distance.Y * fCos(z),
         *          distance.Z
         *      );
         *
         *      //Rotate local position around Y axis
         *      Vector3 rotated2 = new Vector3(
         *          rotated1.X * fCos(y) + rotated1.Z * fSin(y),
         *          rotated1.Y,
         *          -rotated1.X * fSin(y) + rotated1.Z * fCos(y)
         *      );
         *
         *      //Rotate local position around X axis
         *      Vector3 rotated3 = new Vector3(
         *          rotated2.X,
         *          rotated2.Y * fCos(x) - rotated2.Z * fSin(x),
         *          rotated2.Y * fSin(x) + rotated2.Z * fCos(x)
         *      );
         *
         *      //Add new local position to base position
         *      Vector3 newPosition = basePosition + rotated3;
         *
         *      //Write new position
         *      SetVertex(i, newPosition);
         *  }
         *  _rotation += vector;
         * }
         *
         * public override void Scale(Vector3 scaleVector)
         * {
         *  //Record base position
         *  Vector3 basePosition = GetVertex(0);
         *
         *  for (int i = 0; i < vertexBuffer.Length / 3; i++)
         *  {
         *      Vector3 vertex = GetVertex(i);
         *      Vector3 distance = vertex - basePosition;
         *      Vector3 scaledDistance = distance * scaleVector;
         *      Vector3 newVertexPosition = basePosition + scaledDistance;
         *
         *      //Write new position
         *      SetVertex(i, newVertexPosition);
         *  }
         *  _scale *= scale;
         * }*/

        public override void Render(CustomGLControl glControl, bool selected = false)
        {
            var worldView = glControl.worldView;

            GL.UniformMatrix4(glControl.matrixID, false, ref worldView);
            GL.Uniform4(glControl.colorID, selected ? selectedColor : normalColor);
            GetVBO();
            GL.DrawArrays(PrimitiveType.LineStrip, 0, vertexBuffer.Length / 3);
        }
Пример #3
0
        public void DrawCol(CustomGLControl glControl)
        {
            Matrix4 worldView = glControl.worldView;

            GL.UniformMatrix4(glControl.matrixID, false, ref worldView);
            GL.Uniform4(glControl.colorID, new Vector4(1, 1, 1, 1));
            GetUBO();
            GetBBO();
            GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line);
            GL.DrawElements(PrimitiveType.Triangles, indBuff.Length, DrawElementsType.UnsignedInt, 0);
            GL.UseProgram(glControl.collisionShaderID);
            GL.UniformMatrix4(glControl.matrixID, false, ref worldView);
            GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill);
            GL.DrawElements(PrimitiveType.Triangles, indBuff.Length, DrawElementsType.UnsignedInt, 0);
        }
Пример #4
0
        public override void Render(CustomGLControl glControl, bool selected = false)
        {
            if (model == null || model.vertexBuffer == null || model.textureConfig.Count == 0)
            {
                return;
            }
            Matrix4 mvp = modelMatrix * glControl.worldView;  //Has to be done in this order to work correctly

            GL.UniformMatrix4(glControl.matrixID, false, ref mvp);
            model.Draw(glControl.level.textures);

            if (selected)
            {
                RenderModelMesh(glControl);
            }
        }
Пример #5
0
        public override void Render(CustomGLControl glControl, bool selected = false)
        {
            GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line);
            Matrix4 mvp = modelMatrix * glControl.worldView;

            GL.UniformMatrix4(glControl.matrixID, false, ref mvp);
            GL.Uniform4(glControl.colorID, selected ? selectedColor : normalColor);

            GL.BindBuffer(BufferTarget.ArrayBuffer, VBO);
            GL.BindBuffer(BufferTarget.ElementArrayBuffer, IBO);

            GL.VertexAttribPointer(0, 3, VertexAttribPointerType.Float, false, 0, 0);

            GL.DrawElements(PrimitiveType.Triangles, cubeElements.Length, DrawElementsType.UnsignedShort, 0);
            GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill);
        }
Пример #6
0
        public override void Render(Vector3 position, CustomGLControl control)
        {
            GetVBO();

            Matrix4 modelMatrix = Matrix4.CreateTranslation(position);
            var     mvp         = modelMatrix * control.worldView;

            GL.UniformMatrix4(control.matrixID, false, ref mvp);

            GL.Uniform4(control.colorID, new Vector4(1, 0, 0, 1));
            GL.DrawArrays(PrimitiveType.Triangles, 0, 3);

            GL.Uniform4(control.colorID, new Vector4(1, 0, 0, 1));
            GL.DrawArrays(PrimitiveType.Triangles, 3, 3);

            GL.Uniform4(control.colorID, new Vector4(1, 0, 0, 1));
            GL.DrawArrays(PrimitiveType.Triangles, 6, 3);

            GL.Uniform4(control.colorID, new Vector4(1, 0, 0, 1));
            GL.DrawArrays(PrimitiveType.Triangles, 9, 3);


            GL.Uniform4(control.colorID, new Vector4(0, 1, 0, 1));
            GL.DrawArrays(PrimitiveType.Triangles, 12, 3);

            GL.Uniform4(control.colorID, new Vector4(0, 1, 0, 1));
            GL.DrawArrays(PrimitiveType.Triangles, 15, 3);

            GL.Uniform4(control.colorID, new Vector4(0, 1, 0, 1));
            GL.DrawArrays(PrimitiveType.Triangles, 18, 3);

            GL.Uniform4(control.colorID, new Vector4(0, 1, 0, 1));
            GL.DrawArrays(PrimitiveType.Triangles, 21, 3);


            GL.Uniform4(control.colorID, new Vector4(0, 0, 1, 1));
            GL.DrawArrays(PrimitiveType.Triangles, 24, 3);

            GL.Uniform4(control.colorID, new Vector4(0, 0, 1, 1));
            GL.DrawArrays(PrimitiveType.Triangles, 27, 3);

            GL.Uniform4(control.colorID, new Vector4(0, 0, 1, 1));
            GL.DrawArrays(PrimitiveType.Triangles, 30, 3);

            GL.Uniform4(control.colorID, new Vector4(0, 0, 1, 1));
            GL.DrawArrays(PrimitiveType.Triangles, 33, 3);
        }
Пример #7
0
        public override void Render(Vector3 position, CustomGLControl control)
        {
            GetVBO();

            Matrix4 modelMatrix = Matrix4.CreateTranslation(position);
            var     mvp         = modelMatrix * control.worldView;

            GL.UniformMatrix4(control.matrixID, false, ref mvp);

            GL.Uniform4(control.colorID, new Vector4(1, 0, 0, 1));
            GL.DrawArrays(PrimitiveType.LineStrip, 0, 2);

            GL.Uniform4(control.colorID, new Vector4(0, 1, 0, 1));
            GL.DrawArrays(PrimitiveType.LineStrip, 2, 2);

            GL.Uniform4(control.colorID, new Vector4(0, 0, 1, 1));
            GL.DrawArrays(PrimitiveType.LineStrip, 4, 2);
        }
Пример #8
0
        public void RenderModelMesh(CustomGLControl glControl)
        {
            if (model == null || model.vertexBuffer == null || modelMatrix == null)
            {
                return;
            }

            GL.UseProgram(glControl.colorShaderID);
            Matrix4 mvp = modelMatrix * glControl.worldView;

            GL.Uniform4(glControl.colorID, new Vector4(1, 1, 1, 1));
            GL.UniformMatrix4(glControl.matrixID, false, ref mvp);
            model.GetVBO();
            model.GetIBO();
            GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line);
            GL.DrawElements(PrimitiveType.Triangles, model.indexBuffer.Length, DrawElementsType.UnsignedShort, 0);
            GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill);
            GL.UseProgram(glControl.shaderID);
        }
Пример #9
0
 public override void Render(CustomGLControl glControl, bool selected)
 {
     throw new NotImplementedException();
 }
Пример #10
0
 public abstract void Render(Vector3 position, CustomGLControl control);
Пример #11
0
 public abstract void Render(CustomGLControl glControl, bool selected);