最近,我一直在为在C#中创建和使用计算着色器和Monogame/XNA开发一个小助手。我的最终目标只是让计算机着色器在C#中工作。
我的主要问题是:
var result = SharpDX.D3DCompiler.ShaderBytecode.CompileFromFile(filepath, "CSMain", "cs_5_0", ShaderFlags.Debug);
if (result.ResultCode.Failure)
throw new Exception($"HLSL Compilation failed wi
我一直在阅读弗兰克·D·露娜( Frank .露娜)的书“用DirectX 10进行3D编程入门”(Introduction to 3D programming with DirectX 10),问题之一是如何避免使用
D3DXCOLOR颜色(128位)
调至UINT颜色(32位)
大概要使用的格式代码是: DXGI_FORMAT_R8G8B8A8_UNORM。
在我看来,这意味着您有一个变量,它在字节级别上以确切的顺序包含有关通道的信息: RGBA (这是正确的解释吗?-因为我确信我已经读过,当您想要RGBA时,确实需要一个代码,比如: A#R#G#B#,其中首先指定了alpha通道。)
总
有没有可能下拉到DX10而不是DX10.1支持。我有一个客户,他的计算机只支持DX10,所以他们不能利用Direct2D,因为似乎FM只支持10.1
我曾尝试修改源代码以使用DX10 (FMX.Canvas.D2D和FMX.Context.DX10),并进行了另一次切换以下拉到DX10,但一个调用似乎失败了。
我已经修改了创建共享设备的方式
if not Assigned(FSharedDevice) then
begin
SaveClearFPUState;
try
Flags := {$ifdef DXDEBUG}D3D10_CREATE_DEVICE_DEBUG{$else}0{$en
我的WPF应用程序中有一个图像,它使用D3DImage来呈现DirectX内容。在DirectX方面,我使用SharpDX ( C# DirectX包装器)将所有内容呈现给Texture2D,但我不知道如何将呈现的纹理转换为D3DImage。
我找到了D3DImage.SetBackBuffer(D3DResourceType backBufferType, IntPtr backBuffer)方法,但这需要纹理是一个DXGI曲面。下面是我正在使用的代码:
// renderTexture is a Texture2D that serves as the renderTarget for t
目前正在用纯C++/Direct3D开发Windows Phone 8应用程序。我们现在需要访问设备制造商的名称,但它似乎只在C#下可用,根据我的研究,它不能从这种类型的应用程序中访问。
这个页面列出了我想要使用的一些调用:。
// If only I could call this line from C++
DeviceStatus.DeviceManufacturer;
有没有办法在不将应用程序重构为XAML/C++混合应用程序的情况下获得这些信息,从而允许基础应用程序是C#。