コード例 #1
0
 public void apply(bool centerCamera)
 {
     HdpiUtils.glViewport(screenX, screenY, screenWidth, screenHeight);
     camera.viewportWidth  = worldWidth;
     camera.viewportHeight = worldHeight;
     if (centerCamera)
     {
         camera.position = new Vector3(worldWidth / 2, worldHeight / 2, 0);
     }
     camera.update();
 }
コード例 #2
0
        public static Rectangle popScissors()
        {
            var li = scissors.Count - 1;

            Rectangle old = scissors[li];

            scissors.RemoveAt(li);

            if (scissors.Count == 0)
            {
                GL.Disable(EnableCap.ScissorTest);
            }
            else
            {
                Rectangle scissor = scissors[scissors.Count - 1];
                HdpiUtils.glScissor((int)scissor.x, (int)scissor.y, (int)scissor.width, (int)scissor.height);
            }
            return(old);
        }
コード例 #3
0
        public static bool pushScissors(Rectangle scissor)
        {
            fix(scissor);

            if (scissors.Count == 0)
            {
                if (scissor.width < 1 || scissor.height < 1)
                {
                    return(false);
                }
                GL.Enable(EnableCap.ScissorTest);
            }
            else
            {
                // merge scissors
                Rectangle parent = scissors[scissors.Count - 1];
                float     minX   = Math.Max(parent.x, scissor.x);
                float     maxX   = Math.Min(parent.x + parent.width, scissor.x + scissor.width);
                if (maxX - minX < 1)
                {
                    return(false);
                }

                float minY = Math.Max(parent.y, scissor.y);
                float maxY = Math.Min(parent.y + parent.height, scissor.y + scissor.height);
                if (maxY - minY < 1)
                {
                    return(false);
                }

                scissor.x      = minX;
                scissor.y      = minY;
                scissor.width  = maxX - minX;
                scissor.height = Math.Max(1, maxY - minY);
            }
            scissors.Add(scissor);
            HdpiUtils.glScissor((int)scissor.x, (int)scissor.y, (int)scissor.width, (int)scissor.height);
            return(true);
        }