C# Sharpdx D3D9无抽头

C# Sharpdx D3D9无抽头,c#,sharpdx,C#,Sharpdx,我试着在github上学习他们的例子,我只想画一条线。但是当窗口打开时,只有一个黑屏。我不知道我做错了什么 这是我的源代码。 谢谢你的帮助 static void Main() { var form = new RenderForm("Test"); int width = form.ClientSize.Width; int height = form.ClientSize.Height

我试着在github上学习他们的例子,我只想画一条线。但是当窗口打开时,只有一个黑屏。我不知道我做错了什么

这是我的源代码。 谢谢你的帮助

static void Main()
        {
            var form = new RenderForm("Test");
            int width = form.ClientSize.Width;
            int height = form.ClientSize.Height;
            var device = new Device(new Direct3D(), 0, DeviceType.Hardware, form.Handle, CreateFlags.HardwareVertexProcessing, new PresentParameters(width, height) { PresentationInterval = PresentInterval.One });

            Line line = new Line(device);
            
            RawVector2[] vertices =
            {
                new RawVector2(10, 10),
                new RawVector2(10, 10)
            };
            

            RenderLoop.Run(form, () =>
            {
                
                device.Clear(ClearFlags.Target, new RawColorBGRA(0, 0, 0, 1), 1.0f, 0);
                device.BeginScene();

                line.Width = 10;
                line.GLLines = true;
                line.Antialias = false;
                line.Draw(vertices, new RawColorBGRA(254, 254, 254, 1));

                device.EndScene();
                device.Present();
            });
        }

这可能不是你的错误,但对事情没有帮助,因为即使没有错误,你也看不到什么。我使用它,但只在窗口上下文中,我遵循,因为我来自C++虚幻,原始DX9,和C团结,XNA框架。 顶点正在绘制一个1像素点,因为需要在不同位置绘制两个向量才能绘制一条线

[ 新的RawVector210,10, 新的RawVector210,10 ] 也就是说从x:10y:10到x:10y:10抽签

尝试:

[ 新的RawVector210,10, 新RawVector230,30 ] 所以,为了更好地解释画一个三角形,你需要3个点和3条线,但要画每一条线,你需要在你的排序中有点

[
new RawVector2(10, 10),
new RawVector2(10, 30),
new RawVector2(30, 30),
new RawVector2(10, 10)
]
这就是从10,10到10,30,然后到30,30,最后回到10,10

需要注意的是,这就是为什么游戏引擎不通过点数组工作的原因,它们是指向点的指针数组,所以你在内存中只有一次点对象,你只使用指向它们的指针

static void Main()
        {
            var form = new RenderForm("Test");
            int width = form.ClientSize.Width;
            int height = form.ClientSize.Height;
            var device = new Device(new Direct3D(), 0, DeviceType.Hardware, form.Handle, CreateFlags.HardwareVertexProcessing, new PresentParameters(width, height) { PresentationInterval = PresentInterval.One });

            Line line = new Line(device);
            
            RawVector2[] TrianglePoints=
            {
                new RawVector2(10, 10),
                new RawVector2(10, 30),
                new RawVector2(30, 30)
            };
            
            RawVector2[] vertices = {
                TrianglePoints[0],
                TrianglePoints[1],
                TrianglePoints[2],
                TrianglePoints[0]
            }

            RenderLoop.Run(form, () =>
            {
                
                device.Clear(ClearFlags.Target, new RawColorBGRA(0, 0, 0, 1), 1.0f, 0);
                device.BeginScene();

                line.Width = 10;
                line.GLLines = true;
                line.Antialias = false;
                line.Draw(vertices, new RawColorBGRA(254, 254, 254, 1));

                device.EndScene();
                device.Present();
            });
        }

您是否尝试将第二条直线的顶点坐标更改为与10,10不同的坐标?是的,我尝试了,但没有任何更改我没有使用SharpDX,主要是SlimDX,但我认为在尝试显示任何内容之前,您需要为场景设置投影矩阵。正交投影可以用来显示2d对象。我是视频游戏开发的新手,我不知道怎么做!最后一篇参考资料还展示了如何使用device.SetTransform方法设置正交投影。感谢您的回复,但不幸的是,黑屏仍然存在。您已将RawColorRGB更改为类似read的内容,以查看它是否正在这样做。可能是您的DirectDraw上下文根本不起作用。