当我运行PIX时,它会在视口窗口中显示我在“屏幕”上绘制我的pimitives。
在d3d9代理dll中,我调用DrawIndexPrimitive常规:
DrawIndexedPrimitive(PrimitiveType,BaseVertexIndex,MinVertexIndex,NumVertices,startIndex,primCount)
如何在此之后访问我的原语的“视口”点?
答案 0 :(得分:1)
答案 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顶点程序已经完成的工作,因此他可以在视口空间中具有正常内存的顶点。我认为他只运行垂直着色器,而不是曲面细分或像素着色器,因为在你的问题中你只是要求顶点。