Direct3D地图像素黑色

用户名

我试图使用direct3d将像素数据作为字节数组映射到动态纹理,由于某种原因,生成的像素数据为黑色,并且没有被传输。我之前直接使用updatesubresource转换了此代码,但是现在我使用了map / unmap。

ID3D11Texture2D* d3dtex = (ID3D11Texture2D*)textureHandle;
assert(d3dtex);

ID3D11DeviceContext* ctx = NULL;
m_Device->GetImmediateContext(&ctx);
D3D11_MAPPED_SUBRESOURCE mappedResource;
ZeroMemory(&mappedResource, sizeof(D3D11_MAPPED_SUBRESOURCE));

//    Disable GPU access to the vertex buffer data.
ctx->Map(d3dtex, 0, D3D11_MAP_WRITE, 0, &mappedResource);
//    Update the vertex buffer here.
memcpy(mappedResource.pData, dataPtr, textureWidth * textureHeight * 4);
//    Reenable GPU access to the vertex buffer data.
ctx->Unmap(d3dtex, 0);
死的

您没有检查函数HRESULT返回ID3D11DeviceContext::Map值。可能无法映射纹理。D3D11中的纹理可能不可映射的原因有很多,最明显的是它不是使用D3D11_CPU_ACCESS_WRITE访问标志创建的(当您D3D11_MAP_WRITE在调用中使用Map)。如果强制D3D11调试层,则调试输出将打印出有关失败的详细消息。

如果您依赖于映射内部创建的Unity纹理,则不应假定它是可映射的。UpdateSubresource无论您使用了什么标志来创建纹理,使用(就像您以前使用的一样)具有更广泛的兼容性。您可以CPUAccessFlags使用来查询纹理上的ID3D11Texture2D::GetDesc,并确定要使用的更新方法(映射/更新)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Direct3D 和 DXGI 的区别

来自分类Dev

在Direct3D游戏中强制Direct3D抗锯齿?

来自分类Dev

如何在Direct3D 11中将附近的像素数据发送到Pixel-Shader?

来自分类Dev

Direct3D 12窗口模式强制vsync

来自分类Dev

Direct3D编程的新手:11 vs 12

来自分类Dev

Direct3D纹理资源生命周期

来自分类Dev

C ++ Direct3D多屏幕捕获

来自分类Dev

Direct3D 9.0返回到固定功能管道

来自分类Dev

Oracle Virtual Box如何启用Direct3D

来自分类Dev

Windows XP VirtualBox VM上的Direct3D加速

来自分类Dev

Direct3D(v10)多个世界转换

来自分类Dev

在Visual Studio中安装Directx和Direct3D

来自分类Dev

使用QueryInterface方法的目的是什么?(Direct3D)

来自分类Dev

为Direct3D初始化获取HWND

来自分类Dev

如何查找支持的 Direct3D 功能级别

来自分类Dev

从Direct2D渲染目标获取Direct3D设备

来自分类Dev

Direct3D 11 / HLSL Texture3D <float3>错误错误?

来自分类Dev

Direct3D 11 / HLSL Texture3D <float3>错误错误?

来自分类Dev

unity3d,多个渲染目标-Direct3D / OpenGl中的不同行为

来自分类Dev

如何通过删除黑色像素(即[0,0,0])在Python中从图像的3D数组中获取2D数组

来自分类Dev

随黑色图像移动的绿色闪烁像素

来自分类Dev

如何去除字符图像内的黑色像素

来自分类Dev

用黑色像素掩盖图像的某个区域

来自分类Dev

Python:查找图像中黑色像素的数量

来自分类Dev

如何在Direct3D 11中从CPU访问帧缓冲区?

来自分类Dev

CUDA Direct3D互操作性已弃用?

来自分类Dev

OpenGL和Direct3D:从程序员的角度来看,它们代表什么?

来自分类Dev

Tesla k20m与Direct3D 11的互操作性

来自分类Dev

Direct3D 11中具有不同数量图元的图形对象

Related 相关文章

热门标签

归档