在创建了一个三维地形的程序中
render()函数的内容如下:
void RenderScene()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
// 设置摄像机位置和方向
g_Camera.Look();
// 渲染地形
RenderHeightMap(g_HeightMap);
// 绘制天空包围盒
CreateSkyBox(500, 0, 500, 2000, 2000, 2000);
// 获得当前摄像机的位置
CVector3 vPos = g_Camera.Position();
CVector3 vNewPos = vPos;
// 判断摄像机是否低于地平面
if(vPos.y < Height(g_HeightMap, (int)vPos.x, (int)vPos.z ) + 10)
{
// 设置新的位置
vNewPos.y = (float)Height(g_HeightMap, (int)vPos.x, (int)vPos.z ) + 10;
// 获得y方向的差
float temp = vNewPos.y - vPos.y;
// 获得当前摄像机的方向
CVector3 vView = g_Camera.View();
vView.y += temp;
// 设置新的摄像机位置
g_Camera.PositionCamera(vNewPos.x, vNewPos.y, vNewPos.z,
vView.x, vView.y, vVie