저는 DirectX 및 SharpDX (ver.2.6.2 사용)를 연구 중입니다.SharpDX 코드의 Texture2D.FromMemory() 예외
이제 Texture2D.FromMemory() 메서드를 사용하여 바이트 배열에서 텍스처를 만들려고합니다. 샘플 코드는 다음과 같습니다.
using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using SharpDX;
using SharpDX.D3DCompiler;
using SharpDX.Direct3D;
using SharpDX.Direct3D11;
using SharpDX.DXGI;
using SharpDX.Windows;
using Buffer = SharpDX.Direct3D11.Buffer;
using Device = SharpDX.Direct3D11.Device;
using MapFlags = SharpDX.Direct3D11.MapFlags;
namespace HLSLTest
{
static class Program
{
[STAThread]
static void Main()
{
Form1 form = new Form1();
form.Text = "D3DRendering - Test";
form.Width = 640;
form.Height = 480;
Device device;
SwapChain swapChain;
var desc = new SwapChainDescription()
{
BufferCount = 1,
ModeDescription = new ModeDescription(form.ClientSize.Width, form.ClientSize.Height, new Rational(60, 1), Format.R8G8B8A8_UNorm),
IsWindowed = true,
OutputHandle = form.Handle,
SampleDescription = new SampleDescription(1, 0),
SwapEffect = SwapEffect.Discard,
Usage = Usage.RenderTargetOutput
};
Device.CreateWithSwapChain(
SharpDX.Direct3D.DriverType.Hardware,
DeviceCreationFlags.None,
new[] {
SharpDX.Direct3D.FeatureLevel.Level_11_0,
SharpDX.Direct3D.FeatureLevel.Level_10_1,
SharpDX.Direct3D.FeatureLevel.Level_10_0,
},
desc,
out device,
out swapChain
);
// It's Ok, no error
//var texture = Texture2D.FromFile<Texture2D>(device, "GeneticaMortarlessBlocks.jpg");
// "An unhandled exception of type 'SharpDX.SharpDXException' occurred in SharpDX.dll"
// "Additional information: HRESULT: [0x80004005], Module: [General], ApiCode: [E_FAIL/Unspecified error]"
byte[] texArray = new byte[8];
var texture = Texture2D.FromMemory(device, texArray);
var textureView = new ShaderResourceView(device, texture);
}
}
}
그러나 내 코드는 다음 예외를 발생시킵니다.
An unhandled exception of type 'SharpDX.SharpDXException' occurred in SharpDX.dll
Additional information: HRESULT: [0x80004005], Module: [General], ApiCode:[E_FAIL/Unspecified error], Message: エラーを特定できません
웹에서 동일한 문제 또는 해결책을 검색하지만 찾을 수 없습니다.
제게 조언 해주세요. 당신은이 같은 메모리 블록에서 텍스처를 만들 수 없습니다
귀하의 도움에 감사드립니다. Texture2DDescription으로 코드를 수정하려고합니다. – yamamo2