问题标签 [directx-10]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
fullscreen - DirectX 10 视频模式切换和性能
在 DirectX 10 应用程序中,在全屏模式和窗口模式之间切换是否会产生任何类型的开销,例如必须重新创建纹理和/或顶点缓冲区?
换句话说,我是否可以构建一个应用程序,该应用程序旨在在窗口模式和全屏模式之间进行“大量”切换,而不必在切换发生时对性能造成影响?
direct3d - Direct3D 10 和着色器管理
我正在使用 DirectX 10 编写 3d 应用程序,我想知道 Shadermanagement 的处理方式如何。
在应用程序启动时预加载所有着色器然后根据需要使用它们是否最有效,或者如果数量增加,这是否训练硬件资源?
另外我想知道通过着色器排序渲染是否是速度考虑因素,以便最小化着色器开关。
directx - D3D10 (DirectX10) 全屏性能问题
我在将我的 DirectX10 (Win32/c++) 应用程序设置为全屏模式时遇到了一点问题。问题是我想让我的应用程序从一开始就全屏运行。这可以通过使用 DXGISwapChain::SetFullScreenState 函数来完成。这可行,但我在 Visualc++ 2008 调试器中收到一个小通知,其中指出:
“DXGI 警告:IDXGISwapChain::Present:由于应用程序未正确使用 IDXGISwapChain::ResizeBuffers、指定 IDXGIOutput::GetDisplayModeList 中不可用的 DXGI_MODE_DESC 或未使用 DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH 而导致全屏演示效率低下。”
这意味着 DirectX 不会完全拥有显卡并将图像从前缓冲区翻转到后缓冲区,而是对它们进行 blit,这要慢得多。
现在,我确实启用了 DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH 并且我确实尝试调整缓冲区的大小,但我完全不知道进入全屏模式的最佳方法是什么。我在 MSDN 上查看过,但他们大多认为您只能通过按 Alt+Enter 进入全屏,以免 DXGI 完成所有工作。如果有人可以发布一些将 DirectX10 带入全屏模式并充分利用“翻转”的代码,那将不胜感激!
对于任何对调整大小使用的代码感兴趣的人:
c++ - directx10 中的精灵和纹理过滤
使用精灵时是否可以设置不同的纹理过滤?
directx - 从 CPU 上的几何着色器读取输出
我正在尝试从使用流输出输出到缓冲区的几何着色器中读取输出。
几何着色器使用的输出缓冲区描述如下:
几何着色器基于单个点创建多个三角形(每个点最多 12 个三角形),如果我正确理解 SDK,我必须创建一个暂存资源,以便从 CPU 上的几何着色器读取输出。
我已经声明了另一个缓冲区资源(这次设置了 STAGING 标志),如下所示:
在应用程序的第一次绘制调用之后,几何着色器完成创建所有三角形并且可以绘制。但是,在第一次绘制调用之后,我希望能够读取几何着色器输出的顶点。
使用缓冲区暂存资源我试图这样做(在第一次绘制调用之后):
这会编译并且在运行时不会给出任何错误。但是,我似乎没有得到任何输出。
几何着色器输出以下内容:
并且 VERTEX_STREAMOUT 声明如下:
我在这里错过了什么吗?
c++ - DirectX 设备大写字母
我在 DirectX 10 文档中阅读了以下内容:
“传统硬件功能位(上限)已被删除,以支持一组丰富的有保证的功能,这些功能针对 Direct3D 10 级硬件(最低)。”
“删除 CAPS 位 - Direct3D 10 的基本功能集得到保证。”
我在哪里可以找到他们谈论的“保证功能/基本功能集”的列表?
例如,在 DirectX 9 下,我可以查看 D3DCAPS9.MaxTextureWidth 以找到最大纹理宽度。我如何知道所有 DirectX 10 设备必须支持的最大尺寸?
keyframe - 如何在 DirectX 10 上加载动画
我是游戏开发的初学者。我不会用 DirectX 10 编写简单的游戏,需要像人打牌一样加载动画。不知道怎么打法。据我所知,我必须创建自己的文件格式并从其他格式转换为它,但我不知道如何。所以请帮助我,如果可能的话,请给出一些代码示例。
directx-10 - 加载动画的最佳 3D 模型文件格式
我是游戏编程的大佬,现在我用 DirectX 10 编写 3D 游戏,可以从网站免费下载。我需要一些用于游戏交友的动画 3D 模型。模型的最佳格式是什么?
谢谢。
visual-studio-2008 - 将 IID_IDXGIDevice 传递给 IUnknown::QueryDevice 时 DXGI 出现链接器错误
我试图在我的渲染框架中将 Swapchain 和 Window 创建与 D3D10 设备创建分开,这意味着我不能真正使用 D3D10CreateDeviceAndSwapChain。我在尝试构建我的测试应用程序时遇到了意外的链接器错误。
我包括 DXGI.h 并链接到 DXGI.lib 以及 D3D10 库,但仅此而已。
问题代码如下:
if(FAILED(hr = pDXGIFactory->QueryInterface(IID_IDXGIDevice, reinterpret_cast(&pDXGIDevice)))) 返回 hr;
我得到的链接器错误与 _IID_IDXGIDevice 是一个未解析的外部符号有关,但我找不到有关我应该链接到哪些附加库的信息。任何建议,将不胜感激。
我正在使用 Win7 x64、VS2008 和最新版本的 DirectX SDK。
directx - 释放顶点/索引缓冲区会导致警告
当释放 (Release()) 一个顶点缓冲区 (ID3D10Buffer / D3D10_BIND_VERTEX_BUFFER) 时,该缓冲区已在前一帧中用于渲染,我收到一个警告说缓冲区已绑定:
D3D10: INFO: ID3D10Device::IASetVertexBuffers: 当前绑定的 VertexBuffer 正在被删除;如此自然,将不再被束缚。[状态设置信息#31:IASETVERTEXBUFFERS_UNBINDDELETINGOBJECT]
有没有办法解绑缓冲区?
谢谢,
雅各布