我需要计算分配给从某个角度在屏幕上绘制给定对象时产生的像素的最小和最大UV值。例如,如果我有UV映射的立方体,但只有正面可见,则应将min(UV)和max(UV)设置为分配给可见面像素的最小和最大UV坐标。获取最小和最大渲染的UV值(Direct3D)
我想使用Direct3D 9着色器(以及尽可能最低的着色器模型)来加速处理。顶点着色器可以像获取每个输入顶点的UV坐标一样简单,并将它们未经修改地传递给像素着色器。另一方面,像素着色器必须采用顶点着色器生成的值,并使用它们来计算最小和最大UV值。
我想知道的是:
- 如何维持像素着色器的调用之间的状态(电流的最大值和最小值)?
- 如何获得着色器生成的最终最小值和最大值到我的程序中?
有没有办法在HLSL中做到这一点,还是我坚持用手工做?如果HLSL不起作用,那么在不使用着色器的情况下最有效的方法是什么?
我需要知道正在采样的UV空间的范围,以便我可以从大纹理图像(对于视频卡要处理的太大)采用矩形部分,并将这些像素复制到足够小以适合的较小纹理视频内存。 – 2010-09-05 21:01:31
为什么不能分割纹理并相应地提前调整UV? – Goz 2010-09-05 21:27:58
我不明白你的意思。如果我不知道要渲染哪个UV空间子集,我将如何知道要复制哪个纹理子集? – 2010-09-05 21:32:43