ArcEngine開發在globecontrol中使用OpenGL
1、聲明IGlobeDisplayEvents_Event變量,此為OpenGL繪制的入口事件變量
protected IGlobeDisplayEvents_Event globeDisplayEvent = null;
2、執行個體化,并建立監聽事件
globeDisplayEvent = this.pSceneControl.GlobeDisplay as IGlobeDisplayEvents_Event;
if (globeDisplayEvent != null)
{
globeDisplayEvent.AfterDraw += new IGlobeDisplayEvents_AfterDrawEventHandler(globeDisplayEvent_AfterDraw);
}
3、實作事件内容,在函數中繪制OpenGL内容即可
public void globeDisplayEvent_AfterDraw(ISceneViewer pViewer)
{
}
4、注意
(1) GlobeControl中地球半徑為1.,注意使用OpenGL時進行scale放縮(1/地球半徑)
(2) Globe中坐标為标準經緯度,也就是說地球是一個規則标準的球體。不存在投影的問題。
(3) 盡量不要使用AE的一些投影轉換,因為投影都是依據橢球體,轉換後在Globe上會有很大偏差。
(4) 在globe中使用OpenGL繪圖時一切坐标使用标準經緯度(或者使用轉成的opengl坐标)一切轉角從底層自己算起,包括長度使用球體的一些知識全部自己完成。可以避免出現很多不可預知的問題。
(5) 總之一句話,Globe中使用OpenGL,除了顯示地圖使用AE之外,其他的盡量自己完成。