用Visual ++ 6实现OpenGL编程.docVIP

  • 1
  • 0
  • 约3.13万字
  • 约 9页
  • 2016-10-09 发布于贵州
  • 举报
用Visual6实现OpenGL编程

一、OpenGL简介   众所周知,OpenGL原先是Silicon?Graphics?Incorporated(SGI公司)在他们的图形工作站上开发高质量图像的接 口。但最近几年它成为一个非常优秀的开放式三维图形接口。实际上它是图形软件和硬件的接口,它包括有120多个图形函数,GL是 GRAPHIC?LIBRARY的缩写,意思是“图形库”。OpenGL的出现使大多数的程序员能够在PC机上用C语言开发复杂的三维图形。微软在 Visual?C++?5中已提供了三个OpenGL的函数库(glu32.lib,?glau.lib,OpenGL32.lib),可以使我们方便地 编程,简单、快速地生成美观、漂亮的图形。例如,Windows?NT中的屏幕保护程序中的花篮和迷宫等都给人们留下了深刻的印象。 二、生成OpenGL程序的基本步骤和条件   本文将给出一个例子,这个例子是一个用OpenGL显示图像的Windows程序,通过这个程序我们也可以知道用OpenGL编程的基本要求。我们知 道,GDI是通过设备句柄(Device?Context以下简称DC)来绘图,而OpenGL则需要绘制环境 (Rendering?Context,以下简称RC)。每一个GDI命令需要传给它一个DC,与GDI不同,OpenGL使用当前绘制环境 (RC)。一旦在一个线程中指定了一个当前RC,所有在此线程中的OpenGL命令都使用相同的当前RC。虽然在单一窗口中可以使用多个RC,但在单一线 程中只有一个当前RC。本例将首先产生一个OpenGL?RC并使之成为当前RC,分为三个步骤:设置窗口像素格式;产生RC;设置为当前RC。   1、首先创建工程   用AppWizard产生一个EXE文件,选择工程目录,并在工程名字中输入GLSample1,保持其他的不变;第一步、选单文档(SDI); 第二步、不支持数据库;第三步、不支持OLE;第四步、不选中浮动工具条、开始状态条、打印和预览支持、帮助支持的复选框(选中也可以,本文只是说明最小 要求),选中三维控制(3D?Controls);第五步、选中产生源文件注释并使用MFC为共享动态库;第六步、保持缺省选择。按Finish结束,工 程创建完毕。   2、将此工程所需的OpenGL文件?和库加入到工程中   在工程菜单中,选择Build下的Settings项。单击Link标签,选择General目录,在 Object/Library?Modules的编辑框中输入OpenGL32.lib?glu32.lib?glaux.lib(注意,输入双引号 中的内容,各个库用空格分开;否则会出现链接错误),选择OK结束。然后打开文件stdafx.h,将下列语句插入到文件中(划下划线的语句为所 加语句):   #define?VC_EXTRALEAN?//?Exclude?rarely-used?stuff?from?Windows?headers   #include??//?MFC?core?and?standard?components   #include??//?MFC?extensions   #include?   #include?   #ifndef?_AFX_NO_AFXCMN_SUPPORT   #include??//?MFC?support?for?Windows?95?Common?Controls   #endif?//?_AFX_NO_AFXCMN_SUPPORT   3、改写OnPreCreate函数并给视?类添加成员函数和成员变量   OpenGL需要窗口加上WS_CLIPCHILDREN(创建父窗口使用的Windows风格,用于重绘时裁剪子窗口所覆盖的区域)和 ?WS_CLIPSIBLINGS(创建子窗口使用的Windows风格,用于重绘时剪裁其他子窗口所覆盖的区域)风格。把OnPreCreate改写成 如下所示:   ?BOOL?CGLSample1View::PreCr-?eateWindow(CREATESTRUCT?cs)   {   ?cs.style?|=?(WS_CLIPCHI-?LDREN?|?WS_CLIPSIBLINGS);   ?return?CView::PreCreate-?Window(cs);   }   ?产生一个RC的第一步是定义窗口的像素格式。像素格式决定窗口着所显示的图形在内存中是如何表示的。由像素格式控制的参数包括:颜色深度、缓冲模式 和所支持的绘画接口。在下面将有对这些参数的设置。我们先在CGLSample1View的类中添加一个保护型的成员函数 BOOL?SetWindowPixel-Format(HDC?hDC)(用鼠标右键添加),并编辑其中的代码,见程序1

文档评论(0)

1亿VIP精品文档

相关文档