Esempio n. 1
0
        public Sprite( ITexture2D texture, IEffect effect )
        {
            if ( effect == null )
            {
                if ( baseSpriteEffect == null )
                    baseSpriteEffect = new SpriteEffect ();
                effect = baseSpriteEffect;
            }

            if ( projectionMatrix == null )
                projectionMatrix = new OrthographicOffCenterProjection ( 0, 800, 600, 0, 0.001f, 1000.0f );

            Effect = effect;

            if ( vertexDeclaration == null )
            {
                vertexDeclaration = Core.GraphicsDevice.CreateVertexDeclaration ( Utilities.CreateVertexElementArray<SpriteVertex> () );
            }
            indexReference++;

            vertexBuffer = Core.GraphicsDevice.CreateBuffer ( BufferType.VertexBuffer, typeof ( SpriteVertex ), 4 );

            textureArgument = new SamplerState ( texture, Graphics.TextureFilter.Nearest, TextureAddressing.Clamp, 0 );
            Reset ( texture );

            innerWorld = new World2();
        }
Esempio n. 2
0
        public void SetSampler(int slot, SamplerState sampler)
        {
            SharpDX.Direct3D9.Device device = GraphicsDevice.Handle as SharpDX.Direct3D9.Device;
            device.SetSamplerState ( slot, SharpDX.Direct3D9.SamplerState.MinFilter, ChangeFilter ( sampler.Filter ) );
            device.SetSamplerState ( slot, SharpDX.Direct3D9.SamplerState.MagFilter, ChangeFilter ( sampler.Filter ) );

            device.SetSamplerState ( slot, SharpDX.Direct3D9.SamplerState.AddressU, ChangeAddress ( sampler.Addressing ) );
            device.SetSamplerState ( slot, SharpDX.Direct3D9.SamplerState.AddressV, ChangeAddress ( sampler.Addressing ) );

            device.SetSamplerState ( slot, SharpDX.Direct3D9.SamplerState.MaxAnisotropy, sampler.AnisotropicLevel );

            device.SetTexture ( slot, sampler.Texture.Handle as SharpDX.Direct3D9.Texture );
            device.SetTextureStageState ( slot, SharpDX.Direct3D9.TextureStage.TexCoordIndex, slot );
        }
Esempio n. 3
0
        public void SetSampler( int slot, SamplerState sampler )
        {
            GL.ActiveTexture ( TextureUnit.Texture0 + slot );

            TextureTarget target = ( sampler.Texture is ITexture2D ) ? TextureTarget.Texture2D :
                       ( ( sampler.Texture is ITexture1D ) ? TextureTarget.Texture1D :
                       ( sampler.Texture is ITexture3D ) ? TextureTarget.Texture3D : 0 );

            GL.BindTexture ( target, ( int ) sampler.Texture.Handle );

            GL.TexParameter ( target, TextureParameterName.TextureMinFilter, GetFilter ( sampler.Filter ) );
            GL.TexParameter ( target, TextureParameterName.TextureMagFilter, GetFilter ( sampler.Filter ) );

            GL.TexParameter ( target, TextureParameterName.TextureWrapS, GetAddressing ( sampler.Addressing ) );
            GL.TexParameter ( target, TextureParameterName.TextureWrapT, GetAddressing ( sampler.Addressing ) );

            GL.TexParameter ( target, ( TextureParameterName ) ExtTextureFilterAnisotropic.TextureMaxAnisotropyExt, sampler.AnisotropicLevel );
        }
Esempio n. 4
0
        public override void Intro( params object [] args )
        {
            Core.GraphicsDevice.ImmediateContext.CullMode = CullMode.ClockWise;

            contentManager = new ResourceTable ( FileSystemManager.GetFileSystem ( "ManifestFileSystem" ) );
            contentManager.AddDefaultContentLoader ();

            texture1 = contentManager.Load<ITexture2D> ( "Resources/Terrain/terrain_02.png" );
            texture2 = contentManager.Load<ITexture2D> ( "Resources/Terrain/terrain_01.png" );
            Color [] colours = texture2.Buffer;
            effect = contentManager.Load<IEffect> ( "Resources/Terrain/TerrainShader.xml" );

            textureArgs = new SamplerState ( texture1, TextureFilter.Anisotropic, TextureAddressing.Clamp,
                Core.GraphicsDevice.Information.MaximumAnisotropicLevel );

            vertexBuffer = Core.GraphicsDevice.CreateBuffer ( BufferType.VertexBuffer, typeof ( TerrainVertex ), texture2.Width * texture2.Height );
            vertexDeclaration = Core.GraphicsDevice.CreateVertexDeclaration ( Utilities.CreateVertexElementArray<TerrainVertex> () );
            numOfIndices = ( texture2.Width - 1 ) * ( texture2.Height - 1 ) * 2;
            indexBuffer = Core.GraphicsDevice.CreateBuffer ( BufferType.IndexBuffer, typeof ( TerrainIndex ), numOfIndices );

            TerrainVertex [] vertices = new TerrainVertex [ texture2.Width * texture2.Height ];
            int index = 0;
            for ( int x = 0; x < texture2.Height; x++ )
            {
                for ( int z = 0; z < texture2.Width; z++ )
                {
                    int location = x * texture2.Width + z;
                    vertices [ index ] = new TerrainVertex ()
                    {
                        Position = new Vector3 (
                            ( x - texture2.Height / 2 ) * 5.0f,
                            colours [ location ].RedValue * 5.0f / 3,
                            ( z - texture2.Width / 2 ) * 5.0f
                        ),
                        UV = new Vector2 (
                            z / ( float ) texture2.Width,
                            x / ( float ) texture2.Height
                        )
                    };
                    ++index;
                }
            }
            vertexBuffer.SetBufferDatas<TerrainVertex> ( vertices );

            TerrainIndex [] indices = new TerrainIndex [ numOfIndices ];
            index = 0;
            for ( int z = 0; z < texture2.Height - 1; z++ )
            {
                for ( int x = 0; x < texture2.Width - 1; x++ )
                {
                    indices [ index ]._0 = z * texture2.Width + x;
                    indices [ index ]._1 = z * texture2.Width + ( x + 1 );
                    indices [ index ]._2 = ( z + 1 ) * texture2.Width + x;
                    ++index;
                    indices [ index ]._0 = ( z + 1 ) * texture2.Width + x;
                    indices [ index ]._1 = z * texture2.Width + ( x + 1 );
                    indices [ index ]._2 = ( z + 1 ) * texture2.Width + ( x + 1 );
                    ++index;
                }
            }
            indexBuffer.SetBufferDatas<TerrainIndex> ( indices );

            proj = new PerspectiveFieldOfViewProjection ( 3.141592f / 4, 4 / 3f, 1, 10000 );
            look = new LookAt ( new Vector3 ( 1000, 2000, 1000 ), new Vector3 ( 0, 0, 0 ), new Vector3 ( 0, 1, 0 ) );
            world = new World3 ();

            sprite = new Sprite ( null );
            spriteWorld = new World2 ();

            Add ( new FpsCalculator () );

            base.Intro ( args );
        }
Esempio n. 5
0
 public void SetSampler(int slot, SamplerState sampler)
 {
 }