- const
- DATASize = 4096;
- VBOSize = 64;
- procedure TMap.InitVBO;
- var
- Data : array[0..DATASize] of TVertex2V;
- iData : array[0..DATASize] of GLShort;
- mverts, datasize, pos, x, y : Integer;
- begin
- pos := 0;
- glGenBuffers(1, @VBO);
- glBindBuffer(GL_ARRAY_BUFFER, VBO);
- mverts := VBOSize+1;
- datasize := mverts*mverts*2*sizeof(GLFLOAT);
- for y := 0 to mverts do
- for x := 0 to mverts do begin
- data[pos].x := x;
- data[pos].z := y;
- inc(pos);
- end;
- glBufferData(GL_ARRAY_BUFFER, datasize, @data, GL_STATIC_DRAW);
- glGenBuffers(1, @IBO);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IBO);
- datasize := mverts*mverts*2*sizeof(GLshort);
- pos := 0;
- for y := 0 to VBOSize do
- for x := 0 to VBOSize do begin
- idata[pos] := (x+0) + (y+0) * mverts;
- idata[pos] := (x+0) + (y+1) * mverts;
- idata[pos] := (x+1) + (y+1) * mverts;
- idata[pos] := (x+1) + (y+1) * mverts;
- idata[pos] := (x+1) + (y+0) * mverts;
- idata[pos] := (x+0) + (y+0) * mverts;
- end;
- glBufferData(GL_ELEMENT_ARRAY_BUFFER, datasize, @idata, GL_STATIC_DRAW);
- end;