标签: sharpdx

调试HLSL for Windows 8应用程序

我目前正在使用SharpDX(托管的c#directx包装器)创建Windows 8应用程序.但是我遇到了一个着色器的问题,我想知道它是否可以调试这些应用程序.PIX似乎不适用于directX应用程序,因为可执行文件不喜欢直接打开,并且当我尝试捕获有关我的会话的任何信息时,VS2012中的新视觉工作室图形调试工具包始终指出"无法启动实验".

谢谢!

debugging directx hlsl sharpdx

5
推荐指数
1
解决办法
805
查看次数

创建新的Texture2D时如何选择像素格式?

我正在使用SharpDX Toolkit,我正在尝试以编程方式创建Texture2D,因此我可以手动指定所有像素值.我不确定用它创建什么像素格式.

SharpDX甚至没有记录工具包的PixelFormat类型(他们有另一个PixelFormat类的文档,但它适用于WIC,而不是工具包).我确实找到了它包装的DirectX枚举,DXGI_FORMAT,但它的文档没有给我如何选择格式的任何有用的指导.

我习惯于使用每个颜色通道8位加8位alpha的旧32位位图格式,这对我来说已经足够了.所以我猜最简单的选择是R8G8B8A8或B8G8R8A8.我选择哪个重要?它们都将在所有硬件上得到完全支持吗?

甚至一旦我选择了其中之一,我就需要进一步指定它是SInt,SNorm,Typeless,UInt,UNorm还是UNormSRgb.我不需要sRGB色彩空间.我不明白Typeless应该是什么.UInt似乎是最简单的 - 只是一个普通的无符号字节 - 但事实证明它不起作用; 我没有收到错误,但我的纹理不会在屏幕上绘制任何内容.UNorm有效,但文档中没有任何内容可以解释为什么UInt没有.所以现在我很偏执,因为它可能无法在其他视频卡上运行.

这是我得到的代码,如果有人想看到的话.下载SharpDX完整包,打开SharpDXToolkitSamples项目,转到SpriteBatchAndFont.WinRTXaml项目,打开SpriteBatchAndFontGame类,并在指示的位置添加代码:

// Add new field to the class:
private Texture2D _newTexture;

// Add at the end of the LoadContent method:
_newTexture = Texture2D.New(GraphicsDevice, 8, 8, PixelFormat.R8G8B8A8.UNorm);
var colorData = new Color[_newTexture.Width*_newTexture.Height];
_newTexture.GetData(colorData);
for (var i = 0; i < colorData.Length; ++i)
    colorData[i] = (i%3 == 0) ? Color.Red : Color.Transparent;
_newTexture.SetData(colorData);

// Add inside the Draw method, just before the call to spriteBatch.End():
spriteBatch.Draw(_newTexture, new Vector2(0, …
Run Code Online (Sandbox Code Playgroud)

directx pixelformat sharpdx

5
推荐指数
1
解决办法
4644
查看次数

WP8视频流与Media Foundation

我希望将H264视频流式传输到Windows Phone 8应用程序.那么我怎么能用ShardDX做到这一点?(或者也许是Media Foundation的原生功能).

我找到了用于播放视频的MediaEngine类,但我需要"手动"解析帧并将它们转换为解码器或播放器,或其他内容.

media-player h.264 sharpdx ms-media-foundation windows-phone-8

5
推荐指数
1
解决办法
1037
查看次数

如何调试这个C#崩溃?

我的C#应用​​程序崩溃了这个窗口.它是使用SharpDX的DirectX应用程序.

我甚至不知道从哪里开始调试这个?有小费吗?

在此输入图像描述

当我启用本机代码的调试时,崩溃看起来像这样:

在此输入图像描述

并且堆栈是:

ntdll.dll!77d1f8b1()    
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll] 
ntdll.dll!77d1f8b1()    
KernelBase.dll!7658149d()   
kernel32.dll!75c51194()     
kernel32.dll!75c51194()     
ntdll.dll!77d5b459()    
ntdll.dll!77d5b42b()    
ntdll.dll!77d5b3ce()    
ntdll.dll!77d10133()    
XAudio2_7.dll!61fb6b43()    
XAudio2_7.dll!61fa7fa2()    
XAudio2_7.dll!61fa79e9()    
XAudio2_7.dll!61fa8bb8()    
XAudio2_7.dll!61fa9492()    
[External Code] 
SharpDX.XAudio2.dll!SharpDX.XAudio2.Voice.DestroyVoice() Line 916 + 0x34 bytes  C#
Run Code Online (Sandbox Code Playgroud)

c# directx pinvoke visual-studio sharpdx

5
推荐指数
1
解决办法
542
查看次数

通过sharpdx API绘制并填充4个顶点(2D中的位置)的多边形

我有4个浮点(2D中的位置),我想使用sharpdx在2D中绘制和填充多边形(在这4个位置具有顶点).有人可以指导我吗?我搞不清楚了.作为newbee的示例代码对我来说会更好,在此先感谢

c# directx sharpdx

5
推荐指数
1
解决办法
2047
查看次数

使用SharpDX在WPF中滚动图像时生涩的动画

我试图在WPF应用程序中通过SharpDX使用DirectX11在窗口中平滑地滚动一些图像.

一点背景:

图像是信号返回,随时间变化,从文件加载并作为纹理数组加载到D3D中,图像本身呈现为一系列纹理四边形(一系列相邻的矩形,在很长的水平线上) ).设置视口,使左右边缘表示时间偏移,并且信号显示在这些时间之间的时间段内.DirectX实现非常简单; 四个顶点生成一次,一个非常小的每帧缓冲区包含一个简单的2D世界视图变换,根据当前可见范围/缩放等更新缩放和平移.据我所知,D3D实现不是我遇到的问题的一部分 - 它确实是一个非常简单的设置,并且似乎渲染非常快(应该如此),虽然我确实有一些更好的东西(根据需要从磁盘传输纹理),但我有禁用所有这些并运行非常简单(小)纹理,而我尝试解决我遇到的问题..

问题:

当可见时间范围被动画化时,图像的滚动不平滑.图像在很多时候"抖动",坦率地看起来很糟糕(当它不抖动时,它看起来很棒).

设置:

DirectX渲染到D3DImage,在幕后进行一些工作以使DX11工作 - 此代码取自https://sharpdxwpf.codeplex.com/

有多个D3DImages(最多总共4个),排列在一个网格中(我已经测试了两个,两个都包含相同时间段的信号并一起动画).

这些D3DImages由DrawingVisual(由自定义FrameworkElement托管)绘制,它们被用作ImageBrush的源.frameworkelement对象根据需要触发渲染,绘图视觉处理D3D渲染调用并绘制一个矩形以使用D3DImage画笔填充控件.

使用WPF DoubleAnimation动画时间范围值.当前显示的视觉效果通过INotifyPropertyChanged绑定到此值,并在每次更改时触发渲染(通过InvalidateVisual).

DrawingVisual呈现代码,由"位置"值(可见时间范围的开始)的更改触发:

// update scene per-frame buffer first, with world-view transform
using (DrawingContext dc = RenderOpen()
{
    _scene.Renderer.Render(_draw_args);
    _image.Invalidate();

    dc.DrawRectangle(_brush, null, new Rect(viewer.RenderSize));
}
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

我已经尝试过很多东西(并经过大量搜索)来尝试确定问题是由于抖动渲染请求计时,还是问题是否进一步进入渲染过程.

  1. 挂钩到CompositionTarget.Rendering首先通过CompositionTarget.Rendering驱动位置值的更新,并将剩余的进程保持原样(即元素对此值的更改做出反应):

(不用说,这是非常"测试"代码):

Stopwatch rsw;
long last_time = 0;
void play()
{
    rsw = new Stopwatch();
    last_time = 0;
    rsw.Start();
    CompositionTarget.Rendering += rendering;
}

void rendering(object sender, EventArgs e)
{
    double update_distance = rsw.ElapsedMilliseconds - last_time;
    Position += …
Run Code Online (Sandbox Code Playgroud)

wpf directx-11 managed-directx sharpdx

5
推荐指数
1
解决办法
887
查看次数

保存到SharpDx中的png

我在Direct2D下使用SharpDx开发Metro应用程序.我用了一些图片deviceContext.如何将我的图片保存到png文件?

directx png image direct2d sharpdx

4
推荐指数
1
解决办法
2933
查看次数

D3DImage 和 SharpDX 在慢速硬件上闪烁

我将 SharpDX.WPF 项目用于 WPF 功能,与 SharpDX 附带的工具包(具有相同的问题!)相比,它似乎是一个易于理解的低开销库

首先:我使用以下方法修复了最新 SharpDX 的 SharpDX.WPF 项目: https

然后我对 DXElement.cs 进行了以下 hacky 调整,这里也完成一个解决方案:

private Query queryForCompletion;
    public void Render()
    {
        if (Renderer == null || IsInDesignMode)
            return;

        var test = Renderer as D3D11;
        if (queryForCompletion == null)
        {

            queryForCompletion = new Query(test.Device,
                new QueryDescription {Type = QueryType.Event, Flags = QueryFlags.None});
        }

        Renderer.Render(GetDrawEventArgs());

        Surface.Lock();
        test.Device.ImmediateContext.End(queryForCompletion);
        // wait until drawing completes
        Bool completed;
        var counter = 0;
        while (!(test.Device.ImmediateContext.GetData(queryForCompletion, out completed)
                 && completed)) …
Run Code Online (Sandbox Code Playgroud)

wpf multithreading flicker sharpdx d3dimage

4
推荐指数
1
解决办法
2519
查看次数

使用 HelixToolkit 为点云中的每个点应用颜色

我在HelixToolKit中创建了一个点云。我需要为每个点应用颜色。当我使用PointVisual3D时,没有为每个点设置颜色的选项。它为整个点云设置颜色。当我在 Helix 工具包中使用PointGeometryModel3D(使用 SharpDX)时,我也无法为每个点设置颜色。可以为点云中的每个点设置颜色。

谢谢...

c# helix point-clouds sharpdx helix-3d-toolkit

4
推荐指数
1
解决办法
2285
查看次数

列出Windows 10 Universal App中安装的字体名称

我正在使用C#构建一个Windows 10通用应用程序,它必须列出系统上已安装字体的名称.该应用程序是一个地铁/现代ui/windows 8.1应用程序,我使用SharpDX'技巧'来获取名称.

对于Windows 10 UAP,SharpDX不可用(但是?),因此不再适用.

有没有其他方法来实现我的目标?我应该考虑所描述的字体名称的固定列表这里在推荐的字体?例如,在桌面上这似乎相当有限.

提前致谢!

c# fonts sharpdx win-universal-app windows-10

4
推荐指数
1
解决办法
2490
查看次数