unsafe void EncodeText(bgfx.Encoder *encoder, ushort viewId, ref MeshBGFX mesh, ref float4x4 tx, ref TextMaterialBGFX mat, int startIndex, int indexCount, uint depth, byte flipCulling) { bgfx.set_state(mat.state, 0); fixed(float4x4 *p = &tx) bgfx.encoder_set_transform(encoder, p, 1); mesh.SetForSubmit(encoder, startIndex, indexCount); // material uniforms setup fixed(TextMaterialBGFX *pmat = &mat) { bgfx.encoder_set_uniform(encoder, m_TextShader.m_clipRect, &pmat->constClipRect, 1); bgfx.encoder_set_uniform(encoder, m_TextShader.m_maskSoftness, &pmat->constMaskSoftness, 1); } bgfx.encoder_set_texture(encoder, 0, m_TextShader.m_mainTex, mat.texAtlas, UInt32.MaxValue); bgfx.encoder_submit(encoder, viewId, m_TextShader.m_prog, depth, (byte)bgfx.DiscardFlags.All); }
unsafe void SubmitTextDirect(ushort viewId, ref MeshBGFX mesh, ref float4x4 tx, ref TextMaterialBGFX mat, int startIndex, int indexCount, uint depth, byte flipCulling) { bgfx.Encoder *encoder = bgfx.encoder_begin(false); EncodeText(encoder, viewId, ref mesh, ref tx, ref mat, startIndex, indexCount, depth, flipCulling); bgfx.encoder_end(encoder); }