- procedure TgloPlane.Render(RenderModes: TRenderModes = []);
- var
- len, i: Integer;
- error: glEnum;
- begin
- inherited Render(RenderModes);
- if (rmLight in RenderModes) then
- glNormal3f(0, 1, 0);
- fVBO.Bind;
- fIDArray.Bind;
- glEnableClientState(GL_VERTEX_ARRAY);
- glVertexPointer(3, GL_FLOAT, 20, Pointer(0));
- if rmTexture in RenderModes then begin
- glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- glTexCoordPointer(2, GL_FLOAT, 20, Pointer(12));
- end;
- glEnableClientState(GL_INDEX_ARRAY);
- glIndexPointer(GL_UNSIGNED_INT, 0, nil);
- len := Length(fIndexArr) div 2;
- glMultiDrawElements(GL_QUAD_STRIP, @(fIndexArr[0]), GL_UNSIGNED_INT, @(fIndexArr[len]), len);
- error := glGetError();
- LogMsg(IntToStr(error));
- //for i := 0 to len-1 do
- // glDrawElements(GL_QUAD_STRIP, fIndexArr[i], GL_UNSIGNED_INT, Pointer(fIndexArr[len+i]));
- glDisableClientState(GL_VERTEX_ARRAY);
- glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- glDisableClientState (GL_INDEX_ARRAY);
- fIDArray.Unbind;
- fVBO.Unbind;
- end;