| 775 | }; |
| 776 | |
| 777 | uint32_t CalcIndex(BufferData *data, uint32_t vertID, int32_t baseVertex, uint32_t primRestart) |
| 778 | { |
| 779 | const byte *idxData = data->data() + vertID * sizeof(uint32_t); |
| 780 | if(idxData + sizeof(uint32_t) > data->end()) |
| 781 | return ~0U; |
| 782 | |
| 783 | uint32_t idx = *(const uint32_t *)idxData; |
| 784 | |
| 785 | // check for primitive restart *before* adding base vertex |
| 786 | if(primRestart && idx == primRestart) |
| 787 | return idx; |
| 788 | |
| 789 | // apply base vertex but clamp to 0 if subtracting |
| 790 | if(baseVertex < 0) |
| 791 | { |
| 792 | uint32_t subtract = (uint32_t)(-baseVertex); |
| 793 | |
| 794 | if(idx < subtract) |
| 795 | idx = 0; |
| 796 | else |
| 797 | idx -= subtract; |
| 798 | } |
| 799 | else if(baseVertex > 0) |
| 800 | { |
| 801 | idx += (uint32_t)baseVertex; |
| 802 | } |
| 803 | |
| 804 | return idx; |
| 805 | } |
| 806 | |
| 807 | static int columnGroupRole = Qt::UserRole + 10000; |
| 808 |
no test coverage detected