<div dir="ltr"><div class="gmail_extra">Okay. Thanks. Just FYI here is my use case.</div><div class="gmail_extra"><br></div><div class="gmail_extra">{ User defined vertex type }</div><div class="gmail_extra"><br></div><div class="gmail_extra">type</div><div class="gmail_extra">  TColorLitVertex = record</div><div class="gmail_extra">    Position: TVec3;</div><div class="gmail_extra">    Normal: TVec3;</div><div class="gmail_extra">    Color: TVec4;</div><div class="gmail_extra">  end;</div><div class="gmail_extra"><br></div><div class="gmail_extra">{ Contiguous data to be fed to an opengl vertex shader attribute }</div><div class="gmail_extra"><br></div><div class="gmail_extra">var</div><div class="gmail_extra">  VertexData: TArray<TColorLitVertex>;</div><div class="gmail_extra"><br></div><div class="gmail_extra">It would be nice to have both of these types of functionality supported: </div><div class="gmail_extra"><br></div><div class="gmail_extra">VertexData[I].Color.Alpha := 0.5; // you can only write to record fields if the container is an array<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">and ..</div><div class="gmail_extra"><br></div><div class="gmail_extra">VertexData.Sort(SortZOrder); // you can only have methods on arrays using record helpers, but not generic arrays<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">and later provide a reference to the first color location to opengl (array types make this easiest) ...</div><div class="gmail_extra"><br></div><div class="gmail_extra">glVertexAttribPointer(ColorAttribute, 4, GL_FLOAT, GL_FALSE, SizeOf(TColorLitVertex), @VertexData[0].Color);</div></div>