我正在尝试用Direct3D替换我的GDIPlus渲染。我正在渲染一些大的图像(10K x 10K),并且GDI的速度非常慢。我现在使用Direct3D将图像作为纹理渲染到Quad上。图像会渲染,但在缩小图像时质量确实关闭。
我正在使用以下过滤器。
m_pDevice3D->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
m_pDevice3D->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
//m_pDevice3D->SetSamplerState(0, D3DSAMP_MAXANISOTROPY, 4);
m_pDevice3D->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);
我已经尝试使用各向异性过滤器进行渲染但没有显着改进。
答案 0 :(得分:1)
您不能在质量好的小表面上渲染大图像,而无需付出大量过滤的代价。
这是一个名为别名的信号处理问题。要重现信号,您需要一种分辨率至少为两倍的介质,否则光谱会折叠。
在3D渲染中,典型的方法是生成一个mipchain。它由图像的预过滤版本组成,将分辨率除以2,直到达到1x1的大小。然后GPU可以选择正确的版本。
如果您的图像是动态的,并且您知道显示区域,则您更喜欢运行时过滤,但要使用GPU进行此操作,您必须使用着色器最近直接x版本或使用临时屏幕外表面来打乒乓逐步减少。