@@ -58,7 +58,15 @@ struct vtxContainer {
5858};
5959
6060struct cmdContainer {
61+ int list_id;
62+ int cmd_id;
6163 int count;
64+ int vtxOffset;
65+ int idxOffset;
66+ int vtxCount;
67+ int idxCount;
68+ int vtxBase;
69+ int idxBase;
6270 float rectX, rectY, rectZ, rectW;
6371};
6472
@@ -109,31 +117,44 @@ void getFrameRaw(void *data, void **raw_data, int *size) {
109117 }
110118 }
111119
112- int idx_offset = 0 ;
113120 short *data_idx_ptr = (short *)data_vtx_ptr;
114121 for (int cmd_id = 0 ; cmd_id < draw_data->CmdListsCount ; ++cmd_id) {
115122 const auto cmd_list = draw_data->CmdLists [cmd_id];
123+ auto &cmd = cmd_list->CmdBuffer [cmd_id];
116124
117125 for (auto const &idx : cmd_list->IdxBuffer ) {
118- *data_idx_ptr = idx + ( short )idx_offset ;
126+ *data_idx_ptr = idx;
119127 data_idx_ptr++;
120128 }
121-
122- idx_offset += cmd_list-> VtxBuffer . size ();
129+ // Before we move to the next Cmd, we need to offset all the
130+ // Vtx offset
123131 }
124132
125133 cmdContainer *data_cmd_ptr = (cmdContainer *)data_idx_ptr;
126- for (int cmd_id = 0 ; cmd_id < draw_data->CmdListsCount ; ++cmd_id) {
127- const auto cmd_list = draw_data->CmdLists [cmd_id];
128-
129- for (auto const &cmd : cmd_list->CmdBuffer ) {
134+ int vtxBase = 0 ;
135+ int idxBase = 0 ;
136+ for (int list_id = 0 ; list_id < draw_data->CmdListsCount ; ++list_id) {
137+ const auto cmd_list = draw_data->CmdLists [list_id];
138+
139+ for (int cmd_id = 0 ; cmd_id < cmd_list->CmdBuffer .size (); ++cmd_id) {
140+ const auto cmd = cmd_list->CmdBuffer [cmd_id];
141+ data_cmd_ptr->list_id = list_id;
142+ data_cmd_ptr->cmd_id = cmd_id;
130143 data_cmd_ptr->count = cmd.ElemCount ;
144+ data_cmd_ptr->vtxOffset = cmd.VtxOffset ;
145+ data_cmd_ptr->idxOffset = cmd.IdxOffset ;
146+ data_cmd_ptr->vtxCount = cmd_list->VtxBuffer .size ();
147+ data_cmd_ptr->idxCount = cmd_list->IdxBuffer .size ();
148+ data_cmd_ptr->vtxBase = vtxBase;
149+ data_cmd_ptr->idxBase = idxBase;
131150 data_cmd_ptr->rectX = cmd.ClipRect .x ;
132151 data_cmd_ptr->rectY = cmd.ClipRect .y ;
133152 data_cmd_ptr->rectZ = cmd.ClipRect .z ;
134153 data_cmd_ptr->rectW = cmd.ClipRect .w ;
135154 data_cmd_ptr++;
136155 }
156+ vtxBase += cmd_list->VtxBuffer .size ();
157+ idxBase += cmd_list->IdxBuffer .size ();
137158 }
138159
139160 *size = buffer_size;
0 commit comments