- void C3D_StaticTerrain::RenderImmediate(void)
- {
- // Buffer erzeugen
- SVertex3f* pvCoords = NULL;
- pvCoords = new SVertex3f[usBlockRes * usBlockRes];
- if(pvCoords == NULL)
- {
- delete[] pvCoords;
- return;
- }
- float fx = -fSmallestBlockSize * 0.5f;
- float fz;
- float fstep = fSmallestBlockSize / float(usBlockRes);
- unsigned short x, z, i=0;
- for(x=0; x<usBlockRes; ++x)
- {
- fz = -fSmallestBlockSize * 0.5f;
- for(z=0; z<usBlockRes; ++z)
- {
- pvCoords[i].x = fx;
- pvCoords[i].y = 0.0f;
- pvCoords[i].z = fz;
- fz += fstep;
- ++i;
- }
- fx += fstep;
- }
- // Rendern
- glBegin(GL_TRIANGLE_STRIP);
- for(x=0; x<usBlockRes-1; ++x)
- {
- z = 0;
- i = x*usBlockRes;
- glVertex3fv((float*) &pvCoords[i]);
- glVertex3fv((float*) &pvCoords[i]);
- i += usBlockRes;
- glVertex3fv((float*) &pvCoords[i]);
- for(z=1; z<usBlockRes; ++z)
- {
- i -= usBlockRes -1;
- glVertex3fv((float*) &pvCoords[i]);
- i += usBlockRes;
- glVertex3fv((float*) &pvCoords[i]);
- }
- glVertex3fv((float*) &pvCoords[i]);
- }
- glEnd();
- delete[] pvCoords;
- }