You can download my code from http://decopter.sf.net. How it works:
- load “landscape.png”
- create heightmap from it
- create patches of size 65*65
- create vertex array from heightmap for every patch
- sort faces by textures
- glLockArraysEXT
- for every texture: glDrawElements
- glUnlockArraysEXT
When i remove Lock/Unlock - framerate doesn’t drop! But now I am drawing only single-pass, no multitexturing (lighting is based on normals, I will fix it later).