示例#1
0
        public void Render( ModelShader shader )
        {
            if ( !VertexBuffer.DataSet )
                return;

            GeometrySectionData geo = myGeometry[ 0 ];
            foreach ( MaterialSplit mat in geo.MaterialSplits )
            {
                if ( mat.Material.TextureCount > 0 )
                {
                    TextureSectionData tex = mat.Material.Textures[ 0 ];
                    if ( tex.Texture != null )
                        shader.SetTexture( "tex_diffuse", tex.Texture );
                    if ( tex.Mask != null )
                    {
                        shader.SetTexture( "tex_mask", tex.Mask );
                        //shader.AlphaMask = true;
                    }
                    else
                        shader.AlphaMask = false;

                    shader.Colour = mat.Material.Colour;
                    GL.DrawElements( BeginMode.TriangleStrip, mat.VertexCount, DrawElementsType.UnsignedShort, mat.Offset * sizeof( UInt16 ) );
                }
            }
        }
示例#2
0
        public override void Render( ModelShader shader, RenderLayer layer )
        {
            float rx, rz;
            for ( int x = 0; x < myGridWidth; ++x ) for ( int z = 0; z < myGridDepth; ++z )
            {
                ExteriorBlock blk = myInstGrid[ x, z ];

                rx = blk.CenterPos.X - shader.Camera.Position.X;
                rz = blk.CenterPos.Y - shader.Camera.Position.Z;

                if ( ( rx * rx + rz * rz ) < shader.Camera.ViewDistance2 + blk.Radius2 )
                    blk.Render( shader, layer );
            }
        }
示例#3
0
        public override void OnEnter( bool firstTime )
        {
            base.OnEnter( firstTime );

            GL.ClearColor( Color4.CornflowerBlue );

            CursorVisible = !myCaptureMouse;

            if ( firstTime )
            {
                myCamera = new Camera( MathHelper.Pi / 3.0f, (float) Width / (float) Height, stViewDists[ myCurViewDist ] );
                myShader = new ModelShader();
                myShader.Camera = myCamera;
                myShader.FogColour = Color4.CornflowerBlue;
                myCell = ItemManager.GetCell( 0 );
                myTexDict = ResourceManager.LoadTextureDictionary( "ballyswater" );
            }
        }
示例#4
0
        public void Render( ModelShader shader )
        {
            float dist2 = ( shader.Camera.Position - Position ).LengthSquared;

            if ( ( Object.DrawDist >= 300.0f && !HasLOD && dist2 < shader.Camera.ViewDistance2 ) ||
                dist2 < Object.DrawDist2 )
            {
                Culled = false;

                if ( !Object.Loaded && !Object.ModelRequested )
                    Object.RequestModel();

                if ( Object.Model != null )
                {
                    shader.ModelPos = Position;
                    shader.ModelRot = Rotation;
                    shader.BackfaceCulling = !Object.HasFlags( ObjectFlag.NoBackCull );

                    shader.Render( Object.Model );
                }
                else if ( HasLOD )
                    LOD.Render( shader );
            }
            else
            {
                Culled = true;

                if ( HasLOD )
                    LOD.Render( shader );
            }
        }
示例#5
0
 public abstract void Render( ModelShader shader, RenderLayer layer );
示例#6
0
 public override void Render( ModelShader shader, RenderLayer layer )
 {
     foreach ( Instance inst in myInstances )
         inst.Render( shader );
 }