Как правильно использовать текстуру внутри пиксельного шейдера на Hololens? (окна 10)
Я начинаю с шаблона Hololens по умолчанию ( https://developer.microsoft.com/en-us/windows/holographic/creating_a_holographic_directx_project), и я хотел бы изменить куб так, чтобы вместо интерполированной радуги на его гранях он имеет текстуры.
Я упоминал, что я не знаю C# или DirectX (хотя я знаю Java, Python, WebGL и Java OpenGL)? Так что я довольно озадачен тем, как много примеров исходного кода для устаревших версий Windows API.
В любом случае, я смог создать объект Texture2D, используя код из SharpDX 3.0.2 D3D11 - Как загрузить текстуру из файла и заставить ее работать в шейдере?, (хотя все, в чем я могу быть уверен, это то, что он не разбился и не сломал радужный куб).
Я также нашел пример кода на https://gist.github.com/axefrog/b51b4e149c329608eae6 который заставляет меня поверить, что мне нужно
pixelShader.SetShaderResource(0, textureResourceView)
pixelShader.SetSampler(0, samplerState)
К сожалению
textureResourceView = new ShaderResourceView(device, texture);
конструктор не существует в доступных мне библиотеках (SharpDX.Direct3D11?), и все, что VisualStudio предлагает мне, это
ShaderResourceView(IntPtr nativePtr)
Существует ли пример кода, который показывает, как использовать текстуру в приложении C# с использованием HLSL-шейдеров и на самом деле работает с использованием сокращенных API, поддерживаемых Hololens?
И не говорите мне использовать Unity. Мы уже выставили Unity и Unreal на обочину, потому что у них еще нет функций, которые нам нужны.
1 ответ
Очевидно, что
new ShaderResoruceView(device,texture)
конструктор существует, и что-то в том, как я его набрал в VisualStudio, было неверным и вызвало ошибку, и я неверно истолковал всплывающее окно, в котором упоминалось IntPtr
Конструктор как единственный доступный вместо того, чтобы быть одним из нескольких вариантов.