【发布时间】:2021-01-01 10:31:48
【问题描述】:
我是相对较新的 C++/DX11 - 尽管我一直在研究这个主题以使自己跟上进度。 无论如何,我的问题是使用默认的 DX11 XAML UWP 模板(我使用的是 VS 2017)- 我无法将纹理应用到网格上。但是,我已经进行了一些挖掘,并在官方 MS 文档中找到了非常有用的资源 我不太确定如何在我的 Sample3DSceneRenderer.cpp 中实现我的纹理加载代码。
// After the vertex shader file is loaded, create the shader and input layout.
auto createVSTask = loadVSTask.then([this](const std::vector<byte>& fileData) {
DX::ThrowIfFailed(
m_deviceResources->GetD3DDevice()->CreateVertexShader(
&fileData[0],
fileData.size(),
nullptr,
&m_vertexShader
)
);
static const D3D11_INPUT_ELEMENT_DESC vertexDesc [] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 0, DXGI_FORMAT_AYUV, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 },
};
DX::ThrowIfFailed(
m_deviceResources->GetD3DDevice()->CreateInputLayout(
vertexDesc,
ARRAYSIZE(vertexDesc),
&fileData[0],
fileData.size(),
&m_inputLayout
)
);
});
我发现通过从特定枚举列表中选择某些值(此处的值设置为“DXGI_FORMAT_AYUV”)我可以更改立方体的颜色,但我知道通常需要这种类型的 UV 映射过程的事情,但我不确定我是否必须定义该过程,或者它是否已经在着色器代码中处理。 (抱歉任何错误信息,我还在学习DX11)
这是我从中获取逻辑的文档: https://docs.microsoft.com/en-us/windows/win32/direct3d11/overviews-direct3d-11-resources-textures-how-to
我专门尝试从文件创建 WIC 纹理。
希望任何熟悉默认 DX11 UWP 模板的人都能看到我来自哪里,欢迎所有贡献!谢谢。
【问题讨论】:
标签: c++ uwp textures loading wic