DrawIndexedPrimitive之后的d3d9视口坐标

时间:2013-09-23 03:59:07

标签: coordinates viewport directx-9 vertices

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

PIX Window

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

Matt's Webcorner

答案 1 :(得分:1)

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

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

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

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