ZHCU955C August 2021 – March 2024 DLPC7540
此命令用于将手动变形表加载到系统中。它具有起始索引和任意点数作为参数。起始索引是一个 16 位数字,表示 2D 变形表中的线性索引。始终假定变形表具有与使用 SetManualWarpControlPoints 命令设置的控制点相同的变形点数量。
每个点会作为两个 13.3 固定点数(表示 X 和 Y 坐标)来传递。由于命令数据包总大小不能超过 512 字节,加载该表时应使用不同的起始索引多次调用命令。如果在手动变形表中传递的点数小于 62×32,则软件会通过输入均匀间隔控制点的变形映射来生成所有 62×32 控制点的变形映射。对于每个 62×32 控制点,它会在均匀间隔变形映射中找到四个最接近的控制点,然后使用双线性插值计算输出位置。
在变形引擎执行任何缩放和梯形校正后应用手动变形映射。
使用此命令之前应设置手动变形控制点。
字节索引 | 值 | 说明 |
---|---|---|
0 | 0x54 | 命令数据包标头(目标 4,长度存在,需要响应) |
1 | 0x34 | 命令操作码 |
2-3 | 0x0031 | 有效载荷中的字节数 (49) |
4-5 | 0x0000 | 表中的起始索引 (0) |
6-7 | 0x0000 | X1 = 0.0 |
8-9 | 0x0000 | Y1 = 0.0 |
10-11 | 0x2800 | X2 = 1280.0 |
12-13 | 0x0640 | Y2 = 200.0 |
14-15 | 0x5000 | X3 = 2560.0 |
16-17 | 0x0640 | Y3 = 200.0 |
18-19 | 0x77F8 | X4 = 3839.0 |
20-21 | 0x0640 | Y4 = 200.0 |
22-23 | 0x0000 | X5 = 0.0 |
24-25 | 0x21C0 | Y5 = 1080.0 |
26-27 | 0x2800 | X6 = 1280.0 |
28-29 | 0x21C0 | Y6 = 1080.0 |
30-31 | 0x5000 | X7 = 2560.0 |
32-33 | 0x21C0 | Y7 = 1080.0 |
34-35 | 0x71C0 | X8 = 3640.0 |
36-37 | 0x21C0 | Y8 = 1080.0 |
38-39 | 0x0000 | X9 = 0.0 |
40-41 | 0x4378 | Y9 = 2159.0 |
42-43 | 0x2800 | X10 = 1280.0 |
44-45 | 0x3D40 | Y10 = 1960.0 |
46-47 | 0x5000 | X11 = 2560.0 |
48-49 | 0x3D40 | X11 = 1960.0 |
50-51 | 0x77F8 | X12 = 3839.0 |
51-52 | 0x4378 | Y12 = 2159.0 |
发送大量变形点的方法
如前所述,一条命令中的字节数不能超过 512。要发送大量的变形点,请发送多个数据包。下面显示了发送 62×32 变形点的示例方法:
命令 1:索引 = 0,后跟 124 对 X、Y(124×2×2 = 496 字节)
命令 2:索引 = 124,后跟下一个 124 对 X、Y
命令 3:索引 = 248,后跟下一个 124 对 X、Y
以此类推:
命令 16:索引 = 930,后跟最后 124 对 X、Y
优化以减少命令接口发送的数据
如果在 62×32 个变形点中,只有一些点发生了变化(例如第 10 点、第 11 点、第 12 点和第 45 点),则可以使用以下方法。
命令 1:索引 = 0,后跟(X10、Y10、X11、Y11、X12、Y12)
命令 2:索引 = 45,后跟(X45、Y45)
命令 3:ApplyManualWarping 命令,启用 = 0
命令 4:ApplyManualWarping 命令,启用 = 1
当任何点发生变化时,可以使用此优化,而不是发送所有 62×32 个变形点。