为什么我的DirectX11游戏中的纹理没有更详细地渲染?

lo

我正在尝试使用DirectX 11用C ++编写一个小型3D游戏。这绝对是我第一次尝试仅使用图形API编写游戏。我一直在关注Rastertek.com网站上的教程,直到有关环境照明的教程9为止。

在为玩家实施移动和碰撞后,我增加了游戏区域的大小。这是当我注意到我的问题时:我在游戏区域的墙壁和地板上使用的纹理没有按照我期望的方式进行渲染。

从关闭墙

从远处的墙

也许您可以说出墙上的线条是如何被奇怪地分解的-我期望它们可以在较大的距离上正确地渲染(例如它们被关闭了)。

不过,对我来说最奇怪的是,可以从远处渲染线条,但只能围绕场景移动相机且仅在墙壁的某些部分上渲染线条站着不动会再次破坏纹理。我尝试在视频上捕获这种效果,但是在将其显示在我使用GeForce Experience拍摄的视频中却没有成功。

我尝试使用DirectX提供的许多设置,例如光栅化器或深度缓冲区描述,尝试启用和禁用VSync,抗锯齿和多重采样,尝试使用各向异性过滤而不是线性过滤...但是没有它有任何作用。

我不知道在哪里看,下一步该怎么做。我是否必须接受我的纹理在任何距离下都看起来很糟糕?

泽赞吉

您需要为加载的纹理生成Mip贴图。检查DDSTextureLoader.h / CPP和WICTextureLoader.h / CPP这里

例如,要使用Mip映射加载.dds图像,请使用:

HRESULT DirectX::CreateDDSTextureFromFileEx( ID3D11Device* d3dDevice,
                                         ID3D11DeviceContext* d3dContext,
                                         const wchar_t* fileName,
                                         size_t maxsize,
                                         D3D11_USAGE usage,
                                         unsigned int bindFlags,
                                         unsigned int cpuAccessFlags,
                                         unsigned int miscFlags,
                                         bool forceSRGB,
                                         ID3D11Resource** texture,
                                         ID3D11ShaderResourceView** textureView,
                                         DDS_ALPHA_MODE* alphaMode )

用法示例:

HRESULT hr = DirectX::CreateDDSTextureFromFileEx(device, context, path.c_str(), 0, D3D11_USAGE_DEFAULT, D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET, 0, D3D11_RESOURCE_MISC_GENERATE_MIPS, 0, reinterpret_cast<ID3D11Resource**>(&pTexture), &pSRV);
THROW_IF_FAILED(hr);

注意标志D3D11_BIND_RENDER_TARGETD3D11_RESOURCE_MISC_GENERATE_MIPS使用。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的代码没有在HTML5游戏中定义渲染?

来自分类Dev

DirectX11 / OpenGL仅渲染一半的纹理

来自分类Dev

为什么我的模板没有渲染

来自分类Dev

DirectX11 2窗口渲染

来自分类Dev

为什么在SpriteKit游戏中SKNode对触摸没有反应?

来自分类Dev

DirectX11中的纹理流,不可变与动态

来自分类Dev

Directx11是否支持ASTC压缩纹理?

来自分类Dev

为什么我的OpenLayers 3地图没有显示在Internet Explorer 11中?

来自分类Dev

尝试渲染3D三角形会使Nvidia驱动程序崩溃!为什么?[C ++ && DirectX11 SDK]

来自分类Dev

为什么我的Java游戏中的if语句不起作用?

来自分类Dev

iAd没有在我批准的游戏中展示广告

来自分类Dev

我上传到Bluestack的游戏中没有鼠标指针

来自分类Dev

为什么在 3D 游戏中,我们需要为静态对象将材质分成这么多纹理?

来自分类Dev

为什么我的指令没有渲染任何绑定的元素?

来自分类Dev

使用C ++的Directx11渲染不起作用

来自分类Dev

为什么在Steam的某些游戏中我只能选择要安装游戏的驱动器?

来自分类Dev

当我的游戏中有两个Rect相交时,如何正确渲染图像?

来自分类Dev

我的纹理渲染有什么问题?

来自分类Dev

为什么我们在OpenGL和DirectX中没有较小的浮点类型?

来自分类Dev

我在 Hangaman 游戏中错过了什么?

来自分类Dev

我的点击器游戏中出现UnbloundLocalError,我不知道为什么

来自分类Dev

我不明白为什么我的石头,剪刀布游戏中的得分不起作用

来自分类Dev

为什么我的内循环在我的猜数游戏中永远不会结束?

来自分类Dev

使用Directx11更新DXT压缩纹理的错误运行时

来自分类Dev

为什么没有角色被渲染

来自分类Dev

为什么我的 URL 没有更改为我的渲染模板名称?

来自分类Dev

为什么在牛与牛游戏中我总是得到错误的公牛数量?

来自分类Dev

为什么我的简单Java OOP游戏中的内部函数返回未定义的状态

来自分类Dev

为什么我的剪刀石头布游戏中的循环无法正常进行?

Related 相关文章

  1. 1

    为什么我的代码没有在HTML5游戏中定义渲染?

  2. 2

    DirectX11 / OpenGL仅渲染一半的纹理

  3. 3

    为什么我的模板没有渲染

  4. 4

    DirectX11 2窗口渲染

  5. 5

    为什么在SpriteKit游戏中SKNode对触摸没有反应?

  6. 6

    DirectX11中的纹理流,不可变与动态

  7. 7

    Directx11是否支持ASTC压缩纹理?

  8. 8

    为什么我的OpenLayers 3地图没有显示在Internet Explorer 11中?

  9. 9

    尝试渲染3D三角形会使Nvidia驱动程序崩溃!为什么?[C ++ && DirectX11 SDK]

  10. 10

    为什么我的Java游戏中的if语句不起作用?

  11. 11

    iAd没有在我批准的游戏中展示广告

  12. 12

    我上传到Bluestack的游戏中没有鼠标指针

  13. 13

    为什么在 3D 游戏中,我们需要为静态对象将材质分成这么多纹理?

  14. 14

    为什么我的指令没有渲染任何绑定的元素?

  15. 15

    使用C ++的Directx11渲染不起作用

  16. 16

    为什么在Steam的某些游戏中我只能选择要安装游戏的驱动器?

  17. 17

    当我的游戏中有两个Rect相交时,如何正确渲染图像?

  18. 18

    我的纹理渲染有什么问题?

  19. 19

    为什么我们在OpenGL和DirectX中没有较小的浮点类型?

  20. 20

    我在 Hangaman 游戏中错过了什么?

  21. 21

    我的点击器游戏中出现UnbloundLocalError,我不知道为什么

  22. 22

    我不明白为什么我的石头,剪刀布游戏中的得分不起作用

  23. 23

    为什么我的内循环在我的猜数游戏中永远不会结束?

  24. 24

    使用Directx11更新DXT压缩纹理的错误运行时

  25. 25

    为什么没有角色被渲染

  26. 26

    为什么我的 URL 没有更改为我的渲染模板名称?

  27. 27

    为什么在牛与牛游戏中我总是得到错误的公牛数量?

  28. 28

    为什么我的简单Java OOP游戏中的内部函数返回未定义的状态

  29. 29

    为什么我的剪刀石头布游戏中的循环无法正常进行?

热门标签

归档