public void Initialize() { Disposed = false; _shader = new BlockShader(); _shader.Model = Matrix4.Identity; _textureDictionary = _textureAtlasProvider(); _chunkVertexArrayProvider = new ChunkVertexArrayProvider(_chunk, _textureAtlasProvider); Logger.GetLogger <ChunkRenderer>().Info($"Initalized {_chunk.X}, {_chunk.Z}"); GenerateMeshes(); }
internal void InitializeWithShader(BlockShader shader) { Disposed = false; _shaderOwner = false; _shader = shader; /*_shader.Model = Matrix4.Identity;*/ _textureDictionary = _textureAtlasProvider(); _chunkVertexArrayProvider = new ChunkVertexArrayProvider(_chunk, _textureAtlasProvider); //Logger.GetLogger<ChunkRenderer>().Info($"Initalized {_chunk.X}, {_chunk.Z}"); }
protected override void OnBeforeInitalizers(object sender, EventArgs e) { _atlases = _textureBuilder.Build(); _chunk.GenerateMeshes(_atlases); _boxObj.GenerateMeshes(); _texShader = new Tex2dShader(); _colShader = new Col2dShader(); GL.Enable(EnableCap.DepthTest); GL.LineWidth(2F); CenterPlayer(); base.OnBeforeInitalizers(sender, e); }
protected override void OnBeforeInitalizers(object sender, EventArgs e) { var assets = _resource.GetAssets().Where(asset => asset.Type == AssetType.Texture && asset.NamedIdentifier.Name.StartsWith("block/") && asset.NamedIdentifier.Name.EndsWith(".png")); var textureBuilder = new TextureAtlasBuilder(); var i = 0; foreach (var asset in assets) { using var stream = asset.OpenRead(); Logger.GetLogger <MainWindow>().Info(asset.NamedIdentifier.FullName); var bImg = new Image(stream); var isSingle = bImg.FrameCount == 1; var q = 0; foreach (var image in bImg) { textureBuilder.Add(isSingle ? asset.NamedIdentifier.FullName : $"{asset.NamedIdentifier.FullName}{{{q}}}", image); i++; q++; if (i == 4096) { break; } } if (i == 4096) { break; } } _atlases = textureBuilder.Build(); GL.ClearColor(Color4.CornflowerBlue); GL.Enable(EnableCap.DepthTest); GL.LineWidth(2F); base.OnBeforeInitalizers(sender, e); }
public void Calculate(ITexture2DAtlas fontTexture) { var vert = new List <HudVertex>(); var ind = new List <uint>(); int line = 0; float pixel = 0; uint indArrow = 0; var font = _tho.RenderFont; var color = _tho.Color; lock (_tho) { foreach (char c in _tho.Text) { //enter if (c == '\n') { line++; pixel = 0; continue; } //parse char var chri = font.GetChar(c); if (chri == null && (chri = font.GetChar('\0')) == null) { continue; } var chr = chri.Value; Vector2 size = ((chr.x2 - chr.x1) / (chr.y2 - chr.y1), 1) * _tho.FontScale; //auto enter if (_tho.MultiLineWidth > 0 && pixel + size.X > _tho.MultiLineWidth) { line++; pixel = 0; } var box = fontTexture[chr.file]; var x1 = box.Min.X + box.Size.X * chr.x1; var y1 = box.Min.Y + box.Size.Y * (1 - chr.y2); var x2 = box.Min.X + box.Size.X * chr.x2; var y2 = box.Min.Y + box.Size.Y * (1 - chr.y1); //vertices int arrow = 0; for (int i = 0; i < 4; i++) { var vertex = new HudVertex { X = pixel + Vertices[arrow++] * size.X, Y = (line + Vertices[arrow++]) * size.Y, R = color.R, G = color.G, B = color.B, A = color.A, U = Vertices[arrow++] == 0F ? x1 : x2, V = Vertices[arrow++] == 0F ? y1 : y2 }; vert.Add(vertex); } //indices for (int i = 0; i < 6; i++) { ind.Add(Indices[i] + indArrow); } indArrow += 4; pixel += size.X; } } _vert = vert.ToArray(); _ind = ind.ToArray(); }
public void Initialize() { _container.RenderClientSizeChanged += Container_RenderClientSizeChanged; _fontTexture = _fontTextureProvider(); _shader = new HudShader(); }