C# Sharpdx D3D9无抽头
我试着在github上学习他们的例子,我只想画一条线。但是当窗口打开时,只有一个黑屏。我不知道我做错了什么 这是我的源代码。 谢谢你的帮助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
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上下文根本不起作用。