Tag: slimdx

使用SlimDX时剪辑和3D投影不正确

我正在开发一个简单的项目,我希望使用SlimDX在WinForms应用程序中显示一个3D对象。 我已经创建了一个小项目,但我遇到的问题是我渲染的对象被剪切在0.0f和-1.0f之间。 我看了一个朋友的类似项目的代码(他们没有这个问题),并且无法弄清楚它为什么会发生。 我必须将对象的大小限制在-0.1f – > 0.1f的范围内,以便我能够看到它。 延伸我的远程飞机什么也没做。 我朋友正在使用的项目可以加载超过我的500倍的对象,没有剪切问题。 有没有人有什么建议? (请参阅下面的屏幕截图和代码) 表格代码 namespace TestOfTheTest { using System.Drawing; using System.Windows.Forms; using SlimDX; using SlimDX.Direct3D9; using MathHelper = Microsoft.Xna.Framework.MathHelper; public struct VertexPositionColor { private static VertexDeclaration sDeclaration; public static VertexElement[] Elements = { new VertexElement(0, 0, DeclarationType.Float3, DeclarationMethod.Default, DeclarationUsage.Position, 0), new VertexElement(0, sizeof(float) * 3, DeclarationType.Float4, DeclarationMethod.Default, […]

编组C#结构为DX11 cbuffers

我有一些问题(我认为)在C#中打包我的结构并将它们传递给我在HLSL中注册的cbuffers。 当我以一种方式打包我的结构时,信息似乎能够传递到着色器: [StructLayout(LayoutKind.Explicit, Size = 16)] internal struct TestStruct { [FieldOffset(0)] public Vector3 mEyePosition; [FieldOffset(12)] public int type; } 当我创建这个结构并将其设置为我在C#中的常量缓冲区时,它似乎工作正常。 我得到了我期望的颜色: cbuffer PerFrame : register(b0) { Vector3 eyePos; int type; } float3 GetColour() { float3 returnColour = float(0.0f, 0.0f, 0.0f); switch(type) { case 0: returnColour = float3(1.0f, 0.0f, 0.0f); break; case 1: returnColour = float3(0.0f, […]

多重采样不能在独占模式下工作

我想在绘制三角形时启用多重采样,如下图所示: 我在另一个问题中找到了一种与SlimDX有关的方法,但它不能在独占模式下工作。 这是我的代码: void Form1_Load(object sender, EventArgs e) { Direct3D d3d = new Direct3D(); PresentParameters presentParams; presentParams.Windowed = false; presentParams.BackBufferFormat = Format.X8R8G8B8; presentParams.BackBufferWidth = 800; presentParams.BackBufferHeight = 600; presentParams.FullScreenRefreshRateInHertz = 60; presentParams.SwapEffect = SwapEffect.Copy; presentParams.BackBufferCount = 1; presentParams.PresentationInterval = PresentInterval.One; int multisampleQuality; Result result; if (d3d.CheckDeviceMultisampleType(adaptor, DeviceType.Hardware, Format.X8R8G8B8, false, MultisampleType.FourSamples, out multisampleQuality, out result)) { […]

通过XAudio2播放窦

我正在使用XAudio2制作音频播放器。 我们以640字节的数据包流式传输数据,采样率为8000Hz,采样深度为16字节。 我们正在使用SlimDX来访问XAudio2。 但是在播放声音时,我们注意到声音质量很差。 例如,这是一个3KHz的正弦曲线,用Audacity捕获。 我已经将音频播放器浓缩到了基础,但音频质量仍然不好。 这是XAudio2,SlimDX或我的代码中的错误,还是仅仅是从8KHz到44.1KHz时出现的伪像? 最后一个似乎是不合理的,因为我们还生成了由Windows Media Player完美播放的PCM wav文件。 以下是基本实现,它生成断开的正弦。 public partial class MainWindow : Window { private XAudio2 device = new XAudio2(); private WaveFormatExtensible format = new WaveFormatExtensible(); private SourceVoice sourceVoice = null; private MasteringVoice masteringVoice = null; private Guid KSDATAFORMAT_SUBTYPE_PCM = new Guid(“00000001-0000-0010-8000-00aa00389b71”); private AutoResetEvent BufferReady = new AutoResetEvent(false); private PlayBufferPool […]

WPF控件中的SlimDX视口

我正在从WinForms / XNA过渡到WPF / SlimDX,因为: a)WPF相对于WinForms的所有好处(但学习曲线=哎哟!) b)我想将多个SlimDX视口附加到Panels。 XNA有1个“游戏”屏幕。 c,最后和最小)DirectX 10支持 我之前的所有XNA代码都在C#中。 我无法弄清楚如何在高级别上将其移植到SlimDX和WPF。 我疯了似的搜索。 我发现的最接近的是: 1) http://www.gamedev.net/community/forums/topic.asp?topic_id=507941许多文章指出了这个讨论,但它不完整,我无法弄清楚XAML,我得到设备错误附加所有遗漏的_slimDXDevice和Window1事件。 2) http://www.codeproject.com/KB/WPF/D3DImage.aspx本文假设用户正在移植C ++。 我正在移植非常接近MDX代码的XNA代码。 如果我能够获得一个带有自定义SlimDX驱动视口的WPF表单只是一个蓝色框,我可以从那里开始。 在XNA中,我渲染了许多单独的RenderTargets并将它们全部放在屏幕上,现在我想将它们附加到控件上。 但首先,只有一个蓝盒子! :d 有任何想法吗? 我觉得这很简单,或者有一些我不知道的“千篇一律”代码。 非常感激!

SlimDX:在Visual Studio 2010中看不到Direct3D调试输出

我已经安装了2010年6月的SDK 在DirectX控制面板中启用调试运行时 将调试输出级别设置为最大值(更多) 启用非托管代码调试。 结果:缺少Direct3D的调试输出 但是,如果我从外部启动应用程序并使用dbgview.exe,则会显示输出。 可能是什么原因?

在C#/ WPF中加速L-System渲染器

lsys是一个用CoffeeScript编写的超快 L-System渲染器。 下面是C#和WPF中的简单渲染器。 渲染此示例是硬编码的。 运行时的结果如下: 在窗口中单击鼠标将调整angleGrowth变量。 重新计算GeometryGroup以及构建Canvas通常需要不到十分之一秒。 但是,实际的屏幕更新似乎需要更长的时间。 有关如何更快或更高效的任何建议? 它目前比CoffeeScript / JavaScript版本慢…… 🙂 using System; using System.Collections.Generic; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Diagnostics; namespace WpfLsysRender { class DrawingVisualElement : FrameworkElement { public DrawingVisual visual; public DrawingVisualElement() { visual = new DrawingVisual(); } protected override int VisualChildrenCount { get { return 1; […]

Direct2D / GDI +和慢速Windows表格绘图 – 可以做什么?

我正在使用Visual Studio 2008,.NET C#2.0-3.5和Windows Forms进行大量工作,我注意到,就像我之前的许多人一样,GDI +在绘制控件时非常慢。 请注意 ,我不会非常处理图像(JPG,GIF等)。 图像仅在某些地方作为图标。 这实际上是控件/表格/等,绘制速度很慢。 问题在于您可以看到正在绘制的控件,并且可能需要几秒钟才能绘制一组看似简单的控件。 即,它的滞后和可怕。 我已经进行了测试,我只是在表格上放了一些标签(40-50),按F5运行并且必须等待它们被绘制。 再次,滞后,而不是一个非常好的经验。 那么,WPF可能会解决这个问题,但我/我们还没有准备好转向WPF。 所以我正在寻找解决方法或修复方法,我偶然发现了Direct2D,并在阅读其他一些库时。 让我有点困惑,因此这些问题: 1)首先,我想要的是一个相当简洁的方法,用更快的速度和硬件加速方法替换 GDI +。 是否可以在不转到WPF且无需重写所有Windows窗体代码的情况下执行此操作? 每当我在Direct2D上阅读任何内容时,我都会看到通常可怕的C ++代码的长块,告诉我如何手动编写代码来绘制。 我不要那个。 2)在网上阅读时,我偶然发现了SlimDX,但我无法弄清楚如何使用它(我承认,我写作时并没有尝试过)。 可以说我已经有了一个GUI应用程序(Windows窗体,标准C#代码) – 我可以以某种方式使用SlimDX(或类似的东西)来“替换”GDI +而不需要太多的重写吗? 我的问题是我找不到任何示例或告诉我是否可以在我已经创建的Windows窗体软件中使用SlimDX,Direct2D或其他类似的东西,如果可能的话 – 如何做到这一点。 希望我不要太模糊=) ==编辑== 2010-09-22 我在我的真实应用程序中进行了一些测试,并将其中一个缓慢的事情分离出来: 当我向UserControl中的某些标签添加文本时,控件会自行resize以适合文本。 例如,包含GroupControl的位会适应刚刚添加到标签的.Text属性的文本的大小。 大约有10个Label控件。 第一次更新标签,从而更改尺寸时,整个过程大约需要500毫秒。 标签第二次更新, 没有大小更改,大约需要0毫秒。 ==编辑2 == 2010-09-22 发现其中一个减速。 然后将一个String添加到Text-property,如果正在添加的文本的字符串长度与更新之前的文本不同,则它很慢。 我使用DevExpress库,LabelControls可以设置为AutoSizeMode。 如果我将其设置为“无”,则在添加长度与前一文本不同的文本时,滞后将消失。 我猜这个问题对于普通的Label-control是相同的,因为它也有一个AutoSize = true / false设置。 然而,它是一个“解决方法”,但仍然certificate了我的观点 […]

SharpDX vs SlimDX用于游戏开发?

其中哪一个提供了最佳的游戏开发API? 哪个库更易于使用,速度更快,文档更多?

既然Xna不受支持,那么更好的选择是什么?

Xna不受支持,不幸的是我最近开始游戏编程(约9个月)。 什么是更好的选择,DirectX或OpenGl。 现在,我不认为DirectX或OpenGl有C#的官方库,那么对于新手来说哪个更好呢? 我听说过像Mono,SharpDx和SlimDx这样的东西..但是DirectX相比OpenGl有什么优势,反之亦然。 另外,这些Mono,SharpDx和SlimDx被称为什么? 他们有一定的名字吗?