标签: sharpdx

SharpDX vs SlimDX用于游戏开发?

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

c# slimdx sharpdx

13
推荐指数
1
解决办法
9883
查看次数

SharpFX 2.5在WPF中的DirectX11中

我正在尝试使用SharpDX 2.5将DirectX 11实现到WPF中.可悲的是http://directx4wpf.codeplex.com/http://sharpdxwpf.codeplex.com/无法与SharpDX 2.5一起使用.我也无法将WPFHost DX10示例移植到DX11,并且此示例的完整代码包已关闭:http://www.indiedev.de/wiki/DirectX_in_WPF_integrieren

有人可以提出另一种实施方式吗?

c# wpf xaml directx-11 sharpdx

12
推荐指数
1
解决办法
6643
查看次数

从Process Explorer解释GPU信息

我正试图在Sharpdx/DirectX应用程序中寻找可能的内存泄漏.

我从流程资源管理器中获取以下信息,我不知道如何解释.

在此输入图像描述

  1. 什么是专用GPU内存?
  2. 什么是系统GPU内存?
  3. 什么是Comitted GPU内存?

directx memory-leaks gpu process-explorer sharpdx

11
推荐指数
1
解决办法
3296
查看次数

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

Xna不受支持,不幸的是我最近开始游戏编程(约9个月).什么是更好的选择,DirectX或OpenGl.

现在,我不认为DirectX或OpenGl有C#的官方库,那么对于新手来说哪一个会更好?

我听说过像Mono,SharpDx和SlimDx这样的东西..但是DirectX相比OpenGl有什么优势,反之亦然.

另外,这些Mono,SharpDx和SlimDx被称为什么?他们有一定的名字吗?

c# xna slimdx sharpdx

10
推荐指数
1
解决办法
760
查看次数

如何使用SharpDX绘制透明表面?

(这个问题是基于进一步调查这个其他的问题,但不相同的问题,这是关于绘画的问题非常具体的问题.)

我正在尝试在目标窗口上绘制一个重叠的透明表面,问题是我不知道如何将其涂成透明的,所以到目前为止我的表面是黑色的,我看不清楚正确的方法来清除黑色下面代码中该表面的颜色.

我读过有关pixelformats和alphamodes的内容,但是,似乎我不能使用AlphaMode.Straight所谓的允许透明度.

我知道一个可以做到这一点的免费软件应用程序,它的名字是TurboHUD(一个在游戏客户端的窗口上绘制透明表面以绘制对象的应用程序,即HUD).说实话,也许是荒谬的:我试图从两年多前开始做到这一点,我仍然不知道如何通过做透明度来开始这样做,我需要开始在透明表面上绘制物体.

我做错了什么?这个示例代码是用VB.NET编写的,但我在C#中也接受了一个解决方案.

Imports SharpDX
Imports SharpDX.Direct2D1
Imports SharpDX.Direct3D
Imports SharpDX.DXGI
Imports SharpDX.Mathematics.Interop
Imports SharpDX.Windows

Public NotInheritable Class Form1 : Inherits Form

    Private factory As New Direct2D1.Factory(Direct2D1.FactoryType.SingleThreaded)
    Private render As WindowRenderTarget
    Private renderProps As HwndRenderTargetProperties
    Private renderThread As Thread = Nothing

    Private Sub Form1_Load() Handles MyBase.Shown

        Dim hwnd As IntPtr = Process.GetProcessesByName("notepad").Single().MainWindowHandle

        Me.renderProps = New HwndRenderTargetProperties()
        Me.renderProps.Hwnd = hwnd
        Me.renderProps.PixelSize = New Size2(1920, 1080)
        Me.renderProps.PresentOptions = PresentOptions.None

        Me.render = New WindowRenderTarget(Me.factory, New …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net directx sharpdx

10
推荐指数
1
解决办法
1200
查看次数

使用SharpDX和EasyHook捕获全屏DX11程序的屏幕截图

在任何人提到它之前,我参考了这个链接,找出我需要将后备缓冲区复制到位图.

现在的情况

  • 我被注入目标进程
  • 目标进程'FeatureLevel = Level_11_0
  • 目标SwapChain正在使用DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH标志.
  • SwapChain :: Present函数被挂钩.
  • 屏幕截图显示黑色和目标进程崩溃.没有截图进程运行正常.

期望的情况

正确制作屏幕截图,让目标进程继续正常执行.

注意Hook类与链接中的相同.我只添加了一个UnmodifiableHook版本,它的名字就是这么说的.我遗漏了所有不重要的位.

TestSwapChainHook.cs

using System;
using System.Runtime.InteropServices;

namespace Test
{
    public sealed class TestSwapChainHook : IDisposable
    {
        private enum IDXGISwapChainVirtualTable
        {
            QueryInterface = 0,
            AddRef = 1,
            Release = 2,
            SetPrivateData = 3,
            SetPrivateDataInterface = 4,
            GetPrivateData = 5,
            GetParent = 6,
            GetDevice = 7,
            Present = 8,
            GetBuffer = 9,
            SetFullscreenState = 10,
            GetFullscreenState = 11,
            GetDesc = 12,
            ResizeBuffers = 13,
            ResizeTarget = …
Run Code Online (Sandbox Code Playgroud)

c# directx-11 sharpdx easyhook

10
推荐指数
1
解决办法
2181
查看次数

SharpDX在WPF中呈现

我想尽快画出线条.出于这个原因,我使用InteropBitmap实现了一个方法.这非常有效.下一步是与ShardDX进行比较.基本上我想要做的是:在BackgroundWorker中运行以下代码.这确实告知WPF有关WIC的更新.我发现这个代码(创建ShapeDX和绘制线所需的所有代码)比使用InteropBitmap做同样的代码要花费大约10ms.

我现在的问题很简单,如何加快速度?我可以以某种方式更改代码,我只需要调用BeginDraw,创建行和EndDraw,而不是总是执行所有这些图像编码/解码的东西吗?还是有更好的方法?

var wicFactory = new ImagingFactory();
var d2dFactory = new SharpDX.Direct2D1.Factory();

const int width = 800;
const int height = 200;

var wicBitmap = new Bitmap(wicFactory, width, height, SharpDX.WIC.PixelFormat.Format32bppBGR, BitmapCreateCacheOption.CacheOnLoad);

var renderTargetProperties = new RenderTargetProperties(RenderTargetType.Default, new PixelFormat(Format.Unknown, AlphaMode.Unknown), 0, 0, RenderTargetUsage.None, FeatureLevel.Level_DEFAULT);

var d2dRenderTarget = new WicRenderTarget(d2dFactory, wicBitmap, renderTargetProperties);

var solidColorBrush = new SharpDX.Direct2D1.SolidColorBrush(d2dRenderTarget, SharpDX.Color.White);

d2dRenderTarget.BeginDraw();
//draw whatever you want
d2dRenderTarget.EndDraw();

// Memorystream.
MemoryStream ms = new MemoryStream();
var stream = new WICStream(wicFactory, ms);
// JPEG encoder
var encoder …
Run Code Online (Sandbox Code Playgroud)

c# wpf sharpdx

9
推荐指数
2
解决办法
1万
查看次数

我可以用C#编写Windows 8 RT游戏吗?

是否可以使用C#编写Windows 8 RT和/或Windows 8 Phone游戏?

c# xna monogame windows-runtime sharpdx

7
推荐指数
1
解决办法
2502
查看次数

在SharpDX中调整DXGI资源或Texture2D的大小

我想调整使用SharpDX中的桌面复制API捕获的屏幕.我正在使用SharpDX Samples存储库中Screen Capture示例代码,相关部分如下:

SharpDX.DXGI.Resource screenResource;
OutputDuplicateFrameInformation duplicateFrameInformation;

// Try to get duplicated frame within given time
duplicatedOutput.AcquireNextFrame(10000, out duplicateFrameInformation, out screenResource);

if (i > 0)
{
    // copy resource into memory that can be accessed by the CPU
    using (var screenTexture2D = screenResource.QueryInterface<Texture2D>()) 
    device.ImmediateContext.CopyResource(screenTexture2D, screenTexture);

    // Get the desktop capture texture
    var mapSource = device.ImmediateContext.MapSubresource(screenTexture, 0, MapMode.Read, MapFlags.None);

    System.Diagnostics.Debug.WriteLine(watch.Elapsed);

    // Create Drawing.Bitmap
    var bitmap = new System.Drawing.Bitmap(width, height, PixelFormat.Format32bppArgb);
    var boundsRect = new System.Drawing.Rectangle(0, 0, width, …
Run Code Online (Sandbox Code Playgroud)

directx-11 sharpdx

7
推荐指数
2
解决办法
4250
查看次数

具有透明背景的Windows窗体,可以单击

介绍

使用C#或VB.NET.我正在尝试使表单的背景透明; 这个表单将叠加到其他窗口,它将是最顶层的窗口,因此透明表单(及其控件)必须具有不能获得焦点的能力,并且必须可以单击它们,这意味着如果例如我在透明背景上执行左键单击,然后在该背景上的窗口(在Z顺序窗口中)是必须接收单击的窗口.

笔记:

为了避免焦点,我正在覆盖这里CreateParams所解释的财产.

为了使我的形式透明,我打电话的Win32 DwmExtendFrameIntoClientArea函数,并且还使用SharpDX库作为解释在这里.但我认为这与问题本身无关.

问题

我将展示我使用图像的意思.下面是与文本编辑器程序窗口重叠的表单图像(没有透明度,只是为了简化理解); 请注意,我的表单没有获得焦点.好吧,问题是当我点击表单的背景(或其中一个控件)时,背景上的窗口(文本编辑器窗口)仍然具有焦点但它无法接收到点击.

在此输入图像描述

这是上面相同的图像,但是透明的形式:

在此输入图像描述

研究

我不确定要调查什么,所以我试图通过覆盖透明窗体的Window过程(WndProc)来测试相关的窗口消息,例如WM_NCHITEST或者试图在试错阶段找到有用的东西.WM_MOUSEACTIVATE消息如下所述:

.net c# vb.net winforms sharpdx

7
推荐指数
1
解决办法
704
查看次数