コード例 #1
0
        //----------------------------------------------------------------------
        #region ** CustomEffect

        /// <summary>
        /// Creates any resources used repeatedly during subsequent rendering calls.
        /// </summary>
        public void Initialize(D2D.EffectContext effectContext, D2D.TransformGraph transformGraph)
        {
            if (_shaderBuffer == null)
            {
                Assembly asm = typeof(WarpEffect).Assembly;
                using (Stream stream = asm.GetManifestResourceStream("BitmapSamples.Resources.WarpEffect.cso"))
                {
                    int length = (int)stream.Length;
                    _shaderBuffer = new byte[length];
                    stream.Read(_shaderBuffer, 0, length);
                }
            }
            effectContext.LoadVertexShader(GUID_WarpVertexShader, _shaderBuffer);

            _vertexBuffer = effectContext.FindVertexBuffer(GUID_WarpVertexBuffer);
            if (_vertexBuffer == null)
            {
                using (var meshStream = GenerateMesh())
                {
                    var props     = new D2D.VertexBufferProperties(1, D2D.VertexUsage.Static, meshStream);
                    var desc      = new D2D.InputElement("MESH_POSITION", 0, DXGI.Format.R32G32_Float, 0, 0);
                    var custProps = new D2D.CustomVertexBufferProperties(_shaderBuffer, new D2D.InputElement[] { desc }, DXUtil.SizeOf <Vector2>());
                    _vertexBuffer = D2D.VertexBuffer.Create(effectContext, GUID_WarpVertexShader, props, custProps);
                }
            }

            transformGraph.SetSingleTransformNode(this);
        }
コード例 #2
0
 /// <summary>
 /// The renderer calls this method to provide the effect implementation with a way to specify its transform graph and transform graph changes.
 /// It is executed when: 1) When the effect is first initialized. 2) If the number of inputs to the effect changes.
 /// </summary>
 public int SetGraph(D2D.TransformGraph transformGraph)
 {
     return(HResult.NotImplemented.Code);
 }