0

当我运行 PIX 时,它会在我的 pimitives 绘制在“屏幕”上的视口窗口中显示我。

像素窗口

在 d3d9 代理 dll 中,我调用 DrawIndexPrimitive 常规:

DrawIndexedPrimitive(PrimitiveType,BaseVertexIndex,MinVertexIndex,NumVertices,startIndex,primCount)

在此之后如何访问我的图元的“视口”点?

4

2 回答 2

1

也许这个网站可以帮助你一点。

在那里,他编写了一个很棒的 DirectX 拦截 DLL。

马特的网络角

于 2013-09-23T04:02:46.317 回答
1

对您的问题的简单回答是 ,一旦将垂直信息发送到 GPU,就无法从 GPU 中恢复它。 GPU 将顶点和缓冲区加载到它的超高速 GDDR 内存中,CPU 无法访问这些内存。有一个 DX 函数可以将渲染缓冲区检索回普通内存(但这很慢),实际上 GPU 只是想将渲染目标发送到屏幕。

看星际争霸博客... http://graphics.stanford.edu/~mdfisher/GameAIs.html

这就是为什么博主创建了一个镜像驱动程序,可以在 DX 调用到达 GPU 时对其进行捕获,因此他知道发送到 GPU 的内容,并将其保存在正常内存中。

然后,正如他在标题为“顶点着色器模拟”的部分中描述的那样,他解释了如何获得 GPU 着色器的重复 CPU 版本(注意它们在 CPU 上运行速度会慢得多)。然后,他在 CPU 上运行模拟 GPU vert 程序已经完成的工作,因此他可以让视口空间中的 verts 成为正常内存。我认为他只运行顶点着色器,而不是曲面细分或像素着色器,因为在你的问题中你只要求顶点。

于 2013-09-23T05:13:38.497 回答