2
我試圖從內存中的數據創建一個SharpDX.Direct3D11.Texture2D但總是得到SharpDXException(HRESULT:80070057,「參數是不正確的。」)。爲了這個目的,我使用了一個Texture1D,然後可以在沒有問題的情況下創建它。SharpDX:從數據流初始化一個Texture2D失敗(雖然Texture1D正常工作)
我的代碼減小到這個樣品仍產生了異常:
using (var device = new Device(DriverType.Hardware, DeviceCreationFlags.Debug)) {
// empty stream sufficient for example
var stream = new DataStream(16 * 4, true, true);
var description1D = new Texture1DDescription() {
Width = 16,
ArraySize = 1,
Format = Format.R8G8B8A8_UNorm,
MipLevels = 1,
};
using (var texture1D = new Texture1D(device, description1D, new[] { new DataBox(stream.DataPointer) })) {
// no exception on Texture1D
}
var description2D = new Texture2DDescription() {
Width = 8,
Height = 2,
ArraySize = 1,
MipLevels = 1,
Format = Format.R8G8B8A8_UNorm,
SampleDescription = new SampleDescription(1, 0),
};
using (var texture2D = new Texture2D(device, description2D, new[] { new DataBox(stream.DataPointer) })) {
// HRESULT: [0x80070057], Module: [Unknown], ApiCode: [Unknown/Unknown], Message: The parameter is incorrect.
}
}
創建質感,而沒有經過數據的正常工作。有人可以告訴我如何修復Texture2D初始化?
謝謝你,現在的工作:)其實有沒有相應的構造函數,只有'新的數據箱(datapointer,rowPitch,slicePitch)' 。我假設slicePitch是紋理數組,應該設置爲紋理的大小? –
第三個參數用於Texture3D(它表示Z切片的字節大小),對於Texture2D應該設置爲0。 Texture1D不關心這些參數,因爲整個信息已經存儲在Texture1DDescription中(它只是使用width * sizeof(pixelFormat))。這在MSDN文檔中進行了解釋:http://msdn.microsoft.com/en-us/library/windows/desktop/ff476182%28v=vs.85%29.aspx – xoofx
我想我已經掌握了一切(包括差異DataRectangle和DataBox之間)。感謝您的支持和SharpDX! –