VC、OpenGL、ArcGIS Engine开发的二维三维结合的GIS系统
2009-01-16 19:39:17 来源:WEB开发网#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glaux.lib")
#include <gl"gl.h>
#include <gl"glu.h>
#include <gl"glaux.h>
2、在具体的实现过程中,由于OpenGL函数通过“绘制场景”(Rendring ContextRC)完成三维图形的绘制。Windows下的窗口和设备场景支持位图格式属性,该属性与RC存在位图结构上的一致。只要在创建RC时将它与一个DC(Device Context)相关联(RC只能由一个已经建立了位图格式的DC来创建),OpenGL的函数就可以通过RC对应的DC绘制到相应的显示设备上,相应的步骤如下:
1)设置显示设备DC的位图格式属性。通过填写一个PIXELFORMATDESCRIPTOR的结构来完成,该结构决定了OpenGL绘图的物理设备属性,另外,DC有可能只支持部分位图格式,因此首先使用函数ChoosePixelFormat选择与DC支持的指定位图格式最接近的位图格式,然后使用函数SetPixelFormt设置DC的位图格式。
2)创建绘制环境RC与DC的联系,利用DC创建绘制场景RC(wglCreateContext),以便在DC与RC之间创建关联,此时需要使用函数wglMakeContexte。
3)调用OpenGL函数进行绘制。
4)释放相关内存。绘图完备后,需要调用函数wglMakeContext设置当前线程的RC为NULL,从而断开当前线程和该RC的关联,并由此断开与DC的关联。
一般地,在使用单个RC的应用程序中,相应的WM_CREATE消息时创建RC,当WM_CLOSE或WM_DESTROY到来时再删除它。在使用OpenGL命令往窗口中绘制图形之前,必须先建立一个RC,并使之成为现行RC。OpenGL命令无需提供RC,OpenGL将简单地忽略所有的绘图命令。
更多精彩
赞助商链接