⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 20010615001.htm

📁 C++Builder教学大全
💻 HTM
📖 第 1 页 / 共 3 页
字号:
        <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 &lt;gl\gl.h&gt; //程序使用OpenGL的核心函数</td>

          </tr>

          </tbody>

        </table>

        <table align=center width=620>

          <tbody> 

          <tr> 

            <td class=a14>#include &lt;gl\glu.h&gt; //程序使用实用库中的函数</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-&gt;Handle中保存有Form的窗口句柄;很多情况下我们希望在一个Panel中输出图形,那么可以用Panel1-&gt;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,&amp;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,&amp;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 + -