예제 #1
0
        public void Draw(CCDrawManager drawManager)
        {
            // early out
            if (VertexBuffer == null || VertexBuffer.Count == 0)
            {
                return;
            }

            if (IndexBuffer != null)
            {
                VertexBuffer.UpdateBuffer();
                IndexBuffer.UpdateBuffer();

                drawManager.DrawBuffer(VertexBuffer, IndexBuffer, 0, IndexBuffer.Count / 3);
            }
            else
            {
                drawManager.DrawPrimitives(PrimitiveType, VertexBuffer.Data.Elements, 0, VertexBuffer.Count);
            }
        }
예제 #2
0
        protected override void Draw()
        {
            if (visibleTileRangeDirty)
            {
                UpdateVisibleTileRange();
            }

            if (tileAnimationsDirty)
            {
                UpdateTileAnimations();
            }

            base.Draw();

            CCDrawManager drawManager = Window.DrawManager;

            var alphaTest = drawManager.AlphaTestEffect;

            alphaTest.AlphaFunction  = CompareFunction.Greater;
            alphaTest.ReferenceAlpha = 0;

            drawManager.PushEffect(alphaTest);

            foreach (var drawBufferManager in drawBufferManagers)
            {
                drawManager.BindTexture(drawBufferManager.TileSetInfo.Texture);

                foreach (var buffer in drawBufferManager.Buffers)
                {
                    if (buffer.ShouldDrawBuffer == false || buffer.NumberOfVisibleVertices == 0)
                    {
                        continue;
                    }

                    drawManager.DrawBuffer(buffer.QuadsVertexBuffer, buffer.IndexBuffer, 0,
                                           buffer.NumberOfVisiblePrimitives);
                }
            }

            drawManager.PopEffect();
        }