示例#1
0
        protected virtual void _CollectMesh(Matrix4 transMat, int w, int h, RenderType rt, List <IPosLight> lights, AddPixelHandler handler)
        {
            Camera camera = Camera.Default;

            if (null == camera)
            {
                return;
            }
            Vertex   vertex1, vertex2;
            Vertex2D point1, point2;
            int      pointCount = _pointList.Count - 1;

            for (int i = 0; i < pointCount; ++i)
            {
                vertex1 = _pointList[i];
                vertex2 = _pointList[i + 1];
                // 将3d坐标投影到2d空间;
                point1 = GraphPragma.BuildVertex2D(vertex1, transMat, camera.Pos, lights, w, h);
                point2 = GraphPragma.BuildVertex2D(vertex2, transMat, camera.Pos, lights, w, h);
                // 计算线段;
                Line.DrawLine(point1, point2, handler, DrawLineType.Bresenham, SoftDevice.Default.ZTest);
            }
            vertex1 = _pointList[_pointList.Count - 1];
            vertex2 = _pointList[0];
            point1  = GraphPragma.BuildVertex2D(vertex1, transMat, camera.Pos, lights, w, h);
            point2  = GraphPragma.BuildVertex2D(vertex2, transMat, camera.Pos, lights, w, h);
            Line.DrawLine(point1, point2, handler, DrawLineType.Bresenham, SoftDevice.Default.ZTest);
        }
示例#2
0
 protected override void _CollectMesh(Matrix4 transMat, int w, int h,
                                      RenderType rt, List <IPosLight> lights, AddPixelHandler handler)
 {
     if (_pointList.Count != VertexNumber)
     {
         return;
     }
     GraphPragma.DrawTriangle(transMat,
                              _pointList[0], _pointList[1], _pointList[2],
                              MaterialName, w, h, rt, lights, handler);
 }
示例#3
0
        protected override void _CollectMesh(Matrix4 transMat, int w, int h, RenderType rt, List <IPosLight> lights, AddPixelHandler handler)
        {
            if (_pointList.Count % 2 != 0)
            {
                return;
            }
            Camera camera = Camera.Default;

            if (null == camera)
            {
                return;
            }
            int pointCount = _pointList.Count - 1;

            for (int i = 0; i < pointCount; i += 2)
            {
                Vertex   v0 = _pointList[i];
                Vertex   v1 = _pointList[i + 1];
                Vertex2D p0 = GraphPragma.BuildVertex2D(v0, transMat, camera.Pos, lights, w, h);
                Vertex2D p1 = GraphPragma.BuildVertex2D(v1, transMat, camera.Pos, lights, w, h);
                Line.DrawLine(p0, p1, handler, DrawLineType.Bresenham, SoftDevice.Default.ZTest);
            }
        }
示例#4
0
        protected bool _HandleOnePoint(Matrix4 transformMat, int w, int h, AddPixelHandler handler)
        {
            int pointCount = _pointList.Count;

            if (pointCount < 2)
            {
                // 只有一个点就画一个点;
                for (int i = 0; i < pointCount; ++i)
                {
                    Vertex vertex = _pointList[i];
                    // 将3d坐标投影到2d空间;
                    Vertex2D point = GraphPragma.ProjectToScreen(vertex.Position, transformMat, (float)w, (float)h);
                    point.color = vertex.Color;
                    // 添加像素点;
                    if (null != handler)
                    {
                        handler(point.x, point.y, 0, vertex.Color);
                    }
                }
                return(true);
            }
            return(false);
        }