Hi All
Is is possible to use the above mentioned functions with arrays of pointers?
EG:
Code:
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, lSubMesh.Vertices);
glNormalPointer(GL_FLOAT,0,lSubMesh.Normals);
glTexCoordPointer(3,GL_FLOAT,0,lSubMesh.TexCoords);
glDrawElements(GL_TRIANGLES,Length(lSubMesh.Indices),GL_UNSIGNED_INT,lSubMesh.Indices);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
Where lSubMesh.Vertices, lSubMesh.Normals and lSubMesh.TexCoords are defined as :
Code:
TAVectorArray = Array of TAffineVector;
TPAVectorArray = Array of PAffineVector;
PAVectorArray = ^TAVectorArray;
FTexCoords : TPAVectorArray;
FVertices : TPAVectorArray;
FNormals : TPAVectorArray;
And the Arrays are populated like this:
Code:
procedure TRGLSubMesh.ChangePointerArrays(aVertices, aNormals,
aTexCoords: PAVectorArray);
var
lFace : TRGLFace;
i, lIndex : Integer;
begin
lFace := Faces.Face[Faces.Count - 1];
for i := 0 to 2 do
begin
lIndex := Length(FTexCoords);
SetLength(FTexCoords,Length(FTexCoords) + 1);
SetLength(FVertices,Length(FVertices) + 1);
SetLength(FNormals,Length(FNormals) + 1);
SetLength(FIndices,Length(FIndices) + 1);
FTexCoords[lIndex] := @aTexCoords^[lFace.TextureIndexes[i]];
FNormals[lIndex] := @aNormals^[lFace.NormalIndexes[i]];
FVertices[lIndex] := @aVertices^[lFace.VerticeIndexs[i]];
FIndices[lIndex] := lIndex;
end;
end;
Any help or guidance would be greatly appreciated
Bookmarks