Пример #1
0
        protected Effect(Effect cloneSource)
        {
            GraphicsDevice = cloneSource.GraphicsDevice;

            // Send the parsed data to be cloned and recompiled by MojoShader
            glEffect = GraphicsDevice.GLDevice.CloneEffect(
                cloneSource.glEffect
            );

            // Double the ugly, double the fun!
            INTERNAL_parseEffectStruct();

            // The default technique is whatever the current technique was.
            for (int i = 0; i < cloneSource.Techniques.Count; i += 1)
            {
                if (cloneSource.Techniques[i] == cloneSource.CurrentTechnique)
                {
                    CurrentTechnique = Techniques[i];
                }
            }

            // Pin the state changes so .NET doesn't move it around
            stateChanges = new MojoShader.MOJOSHADER_effectStateChanges();
            stateChanges.render_state_change_count = 0;
            stateChanges.sampler_state_change_count = 0;
            stateChanges.vertex_sampler_state_change_count = 0;
            stateChangesHandle = GCHandle.Alloc(stateChanges, GCHandleType.Pinned);
        }
Пример #2
0
        public Effect(GraphicsDevice graphicsDevice, byte[] effectCode)
        {
            GraphicsDevice = graphicsDevice;

            // Send the blob to the GLDevice to be parsed/compiled
            glEffect = graphicsDevice.GLDevice.CreateEffect(effectCode);

            // This is where it gets ugly...
            INTERNAL_parseEffectStruct();

            // The default technique is the first technique.
            CurrentTechnique = Techniques[0];

            // Pin the state changes so .NET doesn't move it around
            stateChanges = new MojoShader.MOJOSHADER_effectStateChanges();
            stateChanges.render_state_change_count = 0;
            stateChanges.sampler_state_change_count = 0;
            stateChanges.vertex_sampler_state_change_count = 0;
            stateChangesHandle = GCHandle.Alloc(stateChanges, GCHandleType.Pinned);
        }