| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- {: Synthetic terrain demo.
- This demo covers use of TGLCustomHDS to supply custome elevation info
- to the terrain engine as well as per-tile texturing. It also showcases
- use of simple 1D texturing as an alternative to per-vertex coloring.
- If you're after "nice" terrain rendering, check the "terrain" demo instead,
- this one is more about understanding "what goes inside" than obtaining a
- beautiful output - though obtaining beautiful output without understanding
- may not be that easy ;)
- All you need to understand to use TGLCustomHDS is what goes on in the
- OnStartPreparingData. You can have a quick look at the FormCreate, but there
- is nothing special: it setups initial camera position and prepares 3 1D
- textures for use in the terrain rendering.
- When implementing OnStartPreparingData, keep in mind that this event is a
- request from the terrain rendering engine, it asks for elevation and texture
- data for a new tile that comes in visibility range (or was marked directy
- and rhas new data, f.i. in the case of dynamic terrain). The engine requires
- its data in a specific format, the code revolving around DataType is there
- for that purpose If you are in an application specific context, this phase
- may be unnecessary (just prepare the data in the format you were asked).
- The TGLHeightData you receive is empty, meaning you've got to allocate it first
- (with the Allocate method), and then fill it using one of the various properties
- (see TGLHeightData).
- The material is specified by the MaterialName property (the material library
- being linked at the TGLTerrainRenderer level). Materials used can be dynamic
- between frames, but must remain coherent throughout a frame, and for as long
- as the TGLHeightData where you specified the material remains alive.
- }
- program SynthTerrainD;
- uses
- Forms,
- fSynthTerrainD in 'fSynthTerrainD.pas' {FormSynthTerrain};
- {$R *.RES}
- begin
- Application.Initialize;
- Application.CreateForm(TFormSynthTerrain, FormSynthTerrain);
- Application.Run;
- end.
|