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 ) ); } } }
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 ); } }
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" ); } }
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 ); } }
public abstract void Render( ModelShader shader, RenderLayer layer );
public override void Render( ModelShader shader, RenderLayer layer ) { foreach ( Instance inst in myInstances ) inst.Render( shader ); }