Проблемное рисование с помощью sharpdx
Я пытаюсь рисовать прямоугольники, треугольники и текст с помощью SharpDx. Документация кажется мне очень расплывчатой, и на нескольких примерах я придумал код, который не могу понять, почему он не работает.
Что я уже пробовал:
Мой код до сих пор таков:
using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using SharpDX.Direct3D9; using SharpDX.Mathematics.Interop; using SharpDX.Windows; using Device = SharpDX.Direct2D1.Device; using Font = SharpDX.Direct3D9.Font; namespace SharpDxDrawing { class Program { static void Main(string[] args) { var form = new RenderForm("SharpDX - Direct3D9 Font Sample"); int width = form.ClientSize.Width; int height = form.ClientSize.Height; var device = new SharpDX.Direct3D9.Device(new Direct3D(), 0, DeviceType.Hardware, form.Handle, CreateFlags.HardwareVertexProcessing, new PresentParameters(width, height) { PresentationInterval = PresentInterval.One }); // Initialize the Font FontDescription fontDescription = new FontDescription() { Height = 72, Italic = false, CharacterSet = FontCharacterSet.Ansi, FaceName = "Arial", MipLevels = 0, OutputPrecision = FontPrecision.TrueType, PitchAndFamily = FontPitchAndFamily.Default, Quality = FontQuality.ClearType, Weight = FontWeight.Bold }; var font = new Font(device, fontDescription); var displayText = "Direct3D9 Text!"; // Measure the text to display var fontDimension = font.MeasureText(null, displayText, new RawRectangle(0, 0, width, height), FontDrawFlags.Center | FontDrawFlags.VerticalCenter); int xDir = 1; int yDir = 1; RenderLoop.Run(form, () => { RawColorBGRA red; red.R = 255; red.G = 0; red.B = 0; red.A = 1; RawColorBGRA black; black.R = 1; black.G = 1; black.B = 1; black.A = 1; device.Clear(ClearFlags.Target, black, 1.0f, 0); device.BeginScene(); // Make the text boucing on the screen limits if ((fontDimension.Right + xDir) > width) xDir = -1; else if ((fontDimension.Left + xDir) <= 0) xDir = 1; if ((fontDimension.Bottom + yDir) > height) yDir = -1; else if ((fontDimension.Top + yDir) <= 0) yDir = 1; fontDimension.Left += (int)xDir; fontDimension.Top += (int)yDir; fontDimension.Bottom += (int)yDir; fontDimension.Right += (int)xDir; // Draw the text font.DrawText(null, displayText, fontDimension, FontDrawFlags.Center | FontDrawFlags.VerticalCenter, red); device.EndScene(); device.Present(); }); } } }
Выход-это просто черное окно (что и ожидалось), но я не получаю свой текст, нарисованный там.