天天看點

ArcEngine開發在globecontrol中使用OpenGL

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之外,其他的盡量自己完成。

繼續閱讀