问题标签 [direct3d10]

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.

0 投票
1 回答
3055 浏览

directx - DX10 天空盒着色器

我正在尝试使用以下 HLSL 代码在 DX10 中编写天空盒着色器:

这给出了错误“DX-9 样式内在函数在不处于 dx9 兼容模式时被禁用”。在第 46 行:

有没有 texCUBE 的替代品?如何在不启用 dx9 兼容模式的情况下解决此问题?

0 投票
1 回答
380 浏览

directx - 第一次网格后缺少深度信息

我将 SlimDX 用于 Direct3D 10 应用程序。在应用程序中,我将 2 个加载到更多网格,图像加载为纹理并使用 fx 代码进行着色器。代码是根据 SlimDX 的示例“SimpleModel10”修改的

我将绘制调用、着色器设置代码移动到管理 1 个网格、着色器(效果)和绘制调用的类中。然后我初始化这个类的2个副本,然后依次调用draw函数。

输出,无论我如何更改网格的 Z 位置,稍后绘制的将始终保持在顶部。后来,当我使用 PIX 调试绘图调用时,我发现第二个网格没有深度,而第一个网格有深度。我试过 3 个网格,第 2 个和第 3 个网格也没有深度。有趣的是,所有这些都是从同一个类中实例化的,使用相同的绘图调用。

什么可能导致这样的问题?

以下是该类的绘制函数中的部分代码,我省略了其余部分,因为它涉及到几个类。我保留了样本的现有 OnRenderBegin() 和 OnRenderEnd():

编辑:经过大量调试和代码隔离,我发现罪魁祸首Font.Draw()在我的DrawString()函数中

注释掉 Font.Draw 解决问题。也许它会自动设置一些导致下一次网格绘制丢弃深度的状态。现在查看 SlimDX 的源代码。

0 投票
1 回答
814 浏览

c++ - 创建 DirectX 10 设备和交换链的问题

我在使用 D3D10CreateDeviceAndSwapChain 创建有效的 DirectX 10 设备和交换链时遇到了一些问题。我认为可能是我的窗口创建出了问题,因为它说提供的 SwapChainDesc 中的 OutputWindow 未使用=??? (或随机的 int 值)

这个问题一直困扰着我,因为我似乎无法找出项目代码有什么问题

我知道它在 CDirect3D.cpp 的第 193 行失败

如果有人可以看一下代码,我将不胜感激。我已经在http://dl.dropbox.com/u/3605545/files/LearningEngine.zip上传了项目及其来源

(不是一个庞大的代码库,到目前为止只有 4 个类)

该项目在 VS2010 中,我从 2010 年 6 月开始使用 DirectX SDK

0 投票
1 回答
3837 浏览

com - 检测 Ref 计数 COM 对象上的内存泄漏(Addref without Release)

我正在编写 Direct3D 10 应用程序并希望确保没有 COM 对象泄漏。

是的,我正在用 CComPtr 包装接口,但我还是想要一个泄漏检查,出于同样的原因,即使 RAII 和智能指针保证不会有泄漏,我仍然使用普通的堆分配泄漏检测器:有时(尤其是在连接时对于像 Direct3D 这样的 C 库),您必须退回到较低的抽象级别并使用原始指针、new、delete,并且您会犯错误。(更不用说一些对 Release() 的调用在程序结束时不会返回 0)

在包含 atlbase.h 之前,我已经 #defined _ATL_DEBUG_INTERFACES,但在输出窗口中什么也没有出现!我还需要做些什么来让 _ATL_DEBUG_INTERFACES 工作吗?

0 投票
1 回答
348 浏览

textures - 如何从 d3d10 texture2d 中获取 MipMap 表面列表

在 D3D10 中,我可以使用一种方法从具有一个 mipmap lvl 的 Texture2D 中获取单个表面。

但这不适用于具有多个 mipmap 的纹理,那么我怎样才能从 mipmap 链中取回所有表面?

0 投票
1 回答
640 浏览

c++ - ID3D10Device::RSSetState 每帧都被调用?

我正在尝试使用 direct3D10 创建一个 ID3D10RasterizerState,然后调用

与适当的信息。但是,每当窗口重新缩放或应用程序进入全屏状态时,rasterizerstate 似乎会重置为默认状态。我试图用 WM_SIZE 消息设置状态,但尴尬的是,似乎什么也没发生......

当我每帧调用 RSSetState() 时它可以正常工作,但这似乎效率很低。

有谁知道解决这个问题?在 msdn 上似乎没有很好的记录。

代码:


WndProc:

0 投票
1 回答
1004 浏览

c++ - 用于投影的 D3DX 矢量数学函数?

是否有一个 D3DX10 vector3 数学函数来计算一个 D3DXVECTOR3 到另一个的投影?

0 投票
1 回答
971 浏览

layout - Direct3D 10,创建输入布局失败

当我尝试在 direct3D 10 中创建顶点布局时,我的应用程序一直无法编译。代码如下:

它失败了CreateInputLayout(),我的印象HR()也是为了捕捉这些问题并在这些情况下提出建议,但它似乎没有这样做。尽管与许多情况一样,我可能完全错了。出现的提示是:

CourseworkApp.exe 中 0x757fd36f 处的未处理异常:0x0000087A:0x87a。

我认为这主要与指针错误有关,但我不确定。任何帮助将非常感激。

0 投票
3 回答
478 浏览

c++ - 奇怪的访问冲突错误

我收到了一个(对我来说)奇怪的运行时访问冲突错误。我有一个类 GUI,它包含指向另一个类 Crosshair 的实例的原始指针。但是,当我尝试访问该指针时,会出现运行时错误!我说的是访问指针,我什至不必取消引用它来获取错误。

这是错误:

错误返回到这一行:在下面提供int a = (int)m_pCrosshair;GUI::Draw()方法中。


编辑:

我发现了问题。它发生在我向你们隐藏的代码中,同时试图隐藏尽可能多的不相关代码......问题是这样的:

换句话说,纯粹的愚蠢……对不起!我没有编写该方法的第一部分,所以我不知道返回值,因为我在初始化自己的东西时从不使用它......


老的:

代码:

十字准线.h


十字准线.cpp


图形用户界面.h


图形用户界面.cpp

错误返回到这一行:int a = (int)m_pCrosshair;

当我删除这一行时:它将中断 m_pCrosshair->Draw(info.pDevice, info.clientWidth,info.clientHeight);

有错误: Unhandled exception at 0x001fc49a in GPEngine.exe: 0xC0000005: Access violation reading location 0x00000004


以下是在我的应用程序中实例化 GUI 实例的方式:

(请不要问我为什么有一个 InitGame() 方法,我们必须这样做才能让我们的老师开心 [lol])

最后,WinMain:


谁能告诉我是什么导致了这个问题?如果您仍然需要更多代码,请在评论中询问:)

谢谢

0 投票
0 回答
260 浏览

c++ - 每个基于 DirectX SDK 的应用程序运行缓慢

不知从何而来,我运行的每个 directx 应用程序项目只给我 4fps,我不知道为什么会发生这种情况......?所有的示例、网站上的教程、基本的 directx 程序(例如在单个项目中初始化设备)都给了我相同的结果。

我仍然可以正常玩零售游戏,只是我使用directx sdk从visual studio运行的任何东西都运行异常。

我在 W7 64bit、GTX460m (DX11) 上运行最新的图形驱动程序、DX SDK(2010 年 6 月)、8gb 的 RAM、i7 cpu......

如果有人可以提供帮助,我将不胜感激。