コード例 #1
0
ファイル: SpriteRenderer.cs プロジェクト: watsoncui/OpenRA
        public void Flush()
        {
            if (nv > 0)
            {
                shader.SetTexture("DiffuseTexture", currentSheet.Texture);
                shader.Render(() =>
                {
                    var vb = renderer.GetTempVertexBuffer();
                    vb.SetData(vertices, nv);
                    renderer.DrawBatch(vb, 0, nv, PrimitiveType.QuadList);
                });

                nv           = 0;
                currentSheet = null;
            }
        }
コード例 #2
0
ファイル: RgbaColorRenderer.cs プロジェクト: cjshmyr/OpenRA
 public RgbaColorRenderer(Renderer renderer, IShader shader)
 {
     this.renderer = renderer;
     this.shader   = shader;
     vertices      = new Vertex[renderer.TempBufferSize];
     renderAction  = () => renderer.DrawBatch(vertices, nv, PrimitiveType.TriangleList);
 }
コード例 #3
0
 public SpriteRenderer(Renderer renderer, IShader shader)
 {
     this.renderer = renderer;
     this.shader   = shader;
     vertices      = new Vertex[renderer.TempBufferSize];
     renderAction  = () => renderer.DrawBatch(vertices, nv, PrimitiveType.QuadList);
 }
コード例 #4
0
 public void DrawVertexBuffer(IVertexBuffer <Vertex> buffer, int start, int length, PrimitiveType type, Sheet sheet, BlendMode blendMode)
 {
     shader.SetTexture("DiffuseTexture", sheet.GetTexture());
     renderer.Device.SetBlendMode(blendMode);
     shader.Render(() => renderer.DrawBatch(buffer, start, length, type));
     renderer.Device.SetBlendMode(BlendMode.None);
 }
コード例 #5
0
        public void Flush()
        {
            if (nv > 0)
            {
                for (var i = 0; i < ns; i++)
                {
                    shader.SetTexture("Texture{0}".F(i), sheets[i].GetTexture());
                    sheets[i] = null;
                }

                renderer.Context.SetBlendMode(currentBlend);
                shader.PrepareRender();
                renderer.DrawBatch(vertices, nv, PrimitiveType.TriangleList);
                renderer.Context.SetBlendMode(BlendMode.None);

                nv = 0;
                ns = 0;
            }
        }
コード例 #6
0
ファイル: LineRenderer.cs プロジェクト: zhangolove/OpenRA
 public LineRenderer(Renderer renderer, IShader shader)
 {
     this.renderer = renderer;
     this.shader   = shader;
     vertices      = new Vertex[renderer.TempBufferSize];
     renderAction  = () =>
     {
         renderer.SetLineWidth(LineWidth);
         renderer.DrawBatch(vertices, nv, PrimitiveType.LineList);
     };
 }
コード例 #7
0
ファイル: QuadRenderer.cs プロジェクト: watsoncui/OpenRA
        public void Flush()
        {
            if (nv > 0)
            {
                shader.Render(() =>
                {
                    var vb = renderer.GetTempVertexBuffer();
                    vb.SetData(vertices, nv);
                    renderer.DrawBatch(vb, 0, nv, PrimitiveType.QuadList);
                });

                nv = 0;
            }
        }
コード例 #8
0
ファイル: VoxelRenderer.cs プロジェクト: zhangolove/OpenRA
        void Render(
            VoxelRenderData renderData,
            float[] t, float[] lightDirection,
            float[] ambientLight, float[] diffuseLight,
            float colorPaletteTextureMidIndex, float normalsPaletteTextureMidIndex)
        {
            shader.SetTexture("DiffuseTexture", renderData.Sheet.GetTexture());
            shader.SetVec("PaletteRows", colorPaletteTextureMidIndex, normalsPaletteTextureMidIndex);
            shader.SetMatrix("TransformMatrix", t);
            shader.SetVec("LightDirection", lightDirection, 4);
            shader.SetVec("AmbientLight", ambientLight, 3);
            shader.SetVec("DiffuseLight", diffuseLight, 3);

            shader.Render(() => renderer.DrawBatch(Game.ModData.VoxelLoader.VertexBuffer, renderData.Start, renderData.Count, PrimitiveType.QuadList));
        }
コード例 #9
0
        void Render(VoxelRenderData renderData,
                    float[] t, float[] lightDirection,
                    float[] ambientLight, float[] diffuseLight,
                    int colorPalette, int normalsPalette)
        {
            shader.SetTexture("DiffuseTexture", renderData.Sheet.Texture);
            shader.SetVec("PaletteRows", (colorPalette + 0.5f) / HardwarePalette.MaxPalettes,
                          (normalsPalette + 0.5f) / HardwarePalette.MaxPalettes);
            shader.SetMatrix("TransformMatrix", t);
            shader.SetVec("LightDirection", lightDirection, 4);
            shader.SetVec("AmbientLight", ambientLight, 3);
            shader.SetVec("DiffuseLight", diffuseLight, 3);

            shader.Render(() => renderer.DrawBatch(Game.modData.VoxelLoader.VertexBuffer, renderData.Start, renderData.Count, PrimitiveType.QuadList));
        }
コード例 #10
0
        public void Flush()
        {
            if (nv > 0)
            {
                shader.Render(() =>
                {
                    var vb = renderer.GetTempVertexBuffer();
                    vb.SetData(vertices, nv);
                    renderer.SetLineWidth(LineWidth * Game.viewport.Zoom);
                    renderer.DrawBatch(vb, 0, nv, PrimitiveType.LineList);
                });

                nv = 0;
            }
        }
コード例 #11
0
 public void Flush()
 {
     if (nv > 0)
     {
         renderer.Device.SetBlendMode(BlendMode.Alpha);
         shader.Render(() =>
         {
             var vb = renderer.GetTempVertexBuffer();
             vb.SetData(vertices, nv);
             renderer.SetLineWidth(LineWidth);
             renderer.DrawBatch(vb, 0, nv, PrimitiveType.LineList);
         });
         renderer.Device.SetBlendMode(BlendMode.None);
         nv = 0;
     }
 }
        void Render(
            ModelRenderData renderData,
            IModelCache cache,
            float[] t, float[] lightDirection,
            float[] ambientLight, float[] diffuseLight,
            float colorPaletteTextureMidIndex, float normalsPaletteTextureMidIndex)
        {
            shader.SetTexture("DiffuseTexture", renderData.Sheet.GetTexture());
            shader.SetVec("PaletteRows", colorPaletteTextureMidIndex, normalsPaletteTextureMidIndex);
            shader.SetMatrix("TransformMatrix", t);
            shader.SetVec("LightDirection", lightDirection, 4);
            shader.SetVec("AmbientLight", ambientLight, 3);
            shader.SetVec("DiffuseLight", diffuseLight, 3);

            shader.PrepareRender();
            renderer.DrawBatch(cache.VertexBuffer, renderData.Start, renderData.Count, PrimitiveType.TriangleList);
        }