📄 20010615001.htm
字号:
<table align=center width=620>
<tbody>
<tr>
<td class=a14>首先加上两个包含文件:</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>#include <gl\gl.h> //程序使用OpenGL的核心函数</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>#include <gl\glu.h> //程序使用实用库中的函数</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14><b>一、在FormCreate()函数中完成OpenGL的初始化</b></td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>使用OpenGL必须首先进行一些初始化工作,具体包含以下步骤:</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>1、创建DC </td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>hDC=GetDC(Handle); </td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td
class=a14>此句获取一个设备描述表,TForm1->Handle中保存有Form的窗口句柄;很多情况下我们希望在一个Panel中输出图形,那么可以用Panel1->Handle作为此函数的参数。</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>2、创建RC </td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>(1)定义像素格式</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>static PIXELFORMATDESCRIPTOR pfd={</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>sizeof(PIXELFORMATDESCRIPTOR), //此结构的大小</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>1, //此结构的版本</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>PFD_DRAW_TO_WINDOW| //在窗口上绘图(而不是在位图上)</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>PFD_SUPPORT_OPENGL| //在窗口中支持使用OpenGL</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>PFD_DOUBLEBUFFER, //使用双缓冲模式</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>PFD_TYPE_RGBA, //使用RGBA色彩模式</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>24, //存储颜色数据的位数</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>0,0,0,0,0,0,</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>0,0,0,0,0,0,0,</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>32, //深度缓冲区大小</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>0,0,</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>PFD_MAIN_PLANE, //在主平面上绘图</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>0,</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>0,0,0</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>};</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>(2)选择最佳像素格式</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>int iPixelFormat=ChoosePixelFormat(hDC,&pfd);</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>选择一最适合上述pfd结构的像素格式,并把保存索引号。</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td
class=a14>SetPixelFormat(hDC,iPixelFormat,&pfd);</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>按选择的索引号设置设备描述表的像素格式。</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>(3)用DC创建RC</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>hRC=wglCreateContext(hDC); </td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td
class=a14>用指定的设备描述表产生一个图形操作描述表,使它在该设备描述表上绘图,并且有与此设备描述表相同的像素格式。</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>3、指定当前的DC、RC</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>wglMakeCurrent(hDC,hRC); </td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td
class=a14>把产生的图形操作描述表置为当前的,程序此后的所有OpenGL函数都通过此图形操作描述表执行,并将图形绘制在设备描述表引用的设备上。</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td
class=a14>到此就完成了初始化工作,这些步骤基本上是固定的(像素格式的参数设置也是如此),对于一般的应用可以直接使用上述语句。</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14><b>二、在FormDestroy()中作清理工作以释放资源</b></td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>1、清屏</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>glClearColor(0.0,0.0,0.0,1.0); </td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>设置背景色为黑色。</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>glClear(GL_COLOR_BUFFER_BIT); </td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>清屏以防止对以后窗口操作的影响。</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>2、当前DC、RC置空</td>
</tr>
</tbody>
</table>
<table align=center width=620>
<tbody>
<tr>
<td class=a14>wglMakeCurrent(NULL,NULL); </td>
</tr>
</tbody>
</table>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -