コード例 #1
0
        /// <summary>
        /// Конструктор данных о рендеринге для примитива
        /// </summary>
        /// <param name="parRectX">Координата X</param>
        /// <param name="parRectY">Координата Y</param>
        /// <param name="parRectWidth">Ширина</param>
        /// <param name="parRectHeight">Высота</param>
        /// <param name="parColor">Цвет</param>
        /// <param name="parDepth">Глубина</param>
        /// <param name="parRotationDegreesAngle">Поворот в градусах</param>
        /// <param name="parPivotX">Точка опоры для поворота, координата X</param>
        /// <param name="parPivotY">Точка опоры для поворота, координата Y</param>
        public RenderingData(double parRectX, double parRectY, double parRectWidth, double parRectHeight, Color parColor,
                             double parDepth, double parRotationDegreesAngle = 0, double parPivotX = 0, double parPivotY = 0)
        {
            Depth = parDepth;

            OpenGlScreenNormalizedRect normalizedRectData =
                OpenGlWindowDisplay.Instance.GetCurrentRenderingModeNormalizedRect(parRectX, parRectY,
                                                                                   parRectWidth, parRectHeight);

            OpenGlScreenNormalizedRect normalizedPivotData =
                OpenGlWindowDisplay.Instance.GetCurrentRenderingModeNormalizedRect(parPivotX, parPivotY, 1, 1);

            RenderingTask task = new RenderingTask();

            task.Vertices = new SpVector3[]
            {
                new SpVector3(normalizedRectData.X1, normalizedRectData.Y1),
                new SpVector3(normalizedRectData.X2, normalizedRectData.Y1),
                new SpVector3(normalizedRectData.X2, normalizedRectData.Y2),
                new SpVector3(normalizedRectData.X1, normalizedRectData.Y2),
            };

            Angle.RotateAroundPivot(parRotationDegreesAngle, ref task.Vertices,
                                    new SpVector3(normalizedPivotData.X1, normalizedPivotData.Y1));

            task.RenderingDataType = ERenderingTaskType.Primitive;

            task.GlTexture         = 0;
            task.BlendColor        = parColor;
            task.TexVertices       = null;
            task.RenderingDataType = ERenderingTaskType.Primitive;

            RenderingTasks = new[] { task };
        }
コード例 #2
0
        /// <summary>
        /// Конструктор данных о рендеринге для спрайта
        /// </summary>
        /// <param name="parRenderingSprite">Спрайт</param>
        public RenderingData(RenderingSprite parRenderingSprite)
        {
            Depth = parRenderingSprite.Depth;

            OpenGlScreenNormalizedRect normalizedRectData =
                OpenGlWindowDisplay.Instance.GetCurrentRenderingModeNormalizedRect(parRenderingSprite.X,
                                                                                   parRenderingSprite.Y,
                                                                                   parRenderingSprite.Sprite.Width * parRenderingSprite.ScaleX,
                                                                                   parRenderingSprite.Sprite.Height * parRenderingSprite.ScaleY);

            RenderingTask task = new RenderingTask();

            task.Vertices = new SpVector3[]
            {
                new SpVector3(normalizedRectData.X1, normalizedRectData.Y1),
                new SpVector3(normalizedRectData.X2, normalizedRectData.Y1),
                new SpVector3(normalizedRectData.X2, normalizedRectData.Y2),
                new SpVector3(normalizedRectData.X1, normalizedRectData.Y2),
            };

            OpenGlScreenNormalizedRect normalizedPivotData =
                OpenGlWindowDisplay.Instance.GetCurrentRenderingModeNormalizedRect(parRenderingSprite.PivotX,
                                                                                   parRenderingSprite.PivotY, 1, 1);

            Angle.RotateAroundPivot(parRenderingSprite.RotationDegrees, ref task.Vertices,
                                    new SpVector3(normalizedPivotData.X1, normalizedPivotData.Y1));


            task.BlendColor        = parRenderingSprite.BlendColor;
            task.GlTexture         = parRenderingSprite.Sprite.LinkedAssetDataTexture.GlTextureId;
            task.RenderingDataType = ERenderingTaskType.Sprite;
            task.TexVertices       = new SpVector3[]
            {
                new SpVector3(parRenderingSprite.Sprite.OpenTkTextureRect.X1, parRenderingSprite.Sprite.OpenTkTextureRect.Y1),
                new SpVector3(parRenderingSprite.Sprite.OpenTkTextureRect.X2, parRenderingSprite.Sprite.OpenTkTextureRect.Y1),
                new SpVector3(parRenderingSprite.Sprite.OpenTkTextureRect.X2, parRenderingSprite.Sprite.OpenTkTextureRect.Y2),
                new SpVector3(parRenderingSprite.Sprite.OpenTkTextureRect.X1, parRenderingSprite.Sprite.OpenTkTextureRect.Y2)
            };
            RenderingTasks = new[] { task };
        }