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

📄 20000925002.htm

📁 C++Builder教学大全
💻 HTM
字号:
<HTML>

<HEAD>

 

<TITLE>全屏幕OpenGL程序</TITLE>



<META content="MSHTML 5.00.2314.1000" name=GENERATOR>

</HEAD>

<BODY aLink=#FF0000 bgColor=#ffffff leftMargin=0 link=#187800 topMargin=0 

vLink=#990099>



<div align="center">

  <table width="744" border="0" cellspacing="0" cellpadding="0" height="76">

    <tr> 

      <td> 

        <p align="center"> <br>

          <font size="3"><b>全屏幕OpenGL程序</b></font></p>

        <p>其实在BCB中实现全屏幕OpenGL的原理是很简单的,只要在窗口OpenGL程序的基础上做一个小小的改动即可:只要将窗口属性修改为WS_POPUP就可以了。</p>

        <p>具体如下:</p>

        <blockquote> 

          <ol>

            <li>在窗口类的CreateParam()成员函数中加入如下语句:<br>

              Params.Style=WS_POPUP|WS_CLIPCHILDREN|WS_CLIPSIBLINGS;<br>

              将相应窗口修改成WS_POPUP型窗口,另两个是为支持OpenGL为设的。 

            <li>仍在窗口类的CreateParam()成员函数,加入如下语句:<br>

              ChangeResolution(800,600);<br>

              Params.Width=800;<br>

              Params.Height=600;<br>

              Params.X=Params.Y=0;<br>

              第一句将屏幕分辨率设定为800X600(可以是显示卡支持的任意值)<br>

              然后修改窗体大小使之占满全屏。 

            <li>ChangeResolution()是一个自编的小函数,其原理如下: 

              <blockquote> 

                <ol>

                  <li>用WINAPI:EnumDisplaySettings()查询并取得所需的显示模式 

                  <li>用WINAPI:ChangeDisplaySettings()修改显示模式。 </li>

                </ol>

              </blockquote>

            <li>ChangeResolution()的完整代码:<br>

              <br>

              BOOL ChangeResolution(DWORD w, DWORD h) {<br>

              DEVMODE devMode;<br>

              LONG modeSwitch;<br>

              LONG i;<br>

              CHAR buf[256];<br>

              i = 0;<br>

              do {<br>

              modeSwitch = EnumDisplaySettings(NULL, i, &amp;devMode);<br>

              i++;<br>

              } while(( (devMode.dmBitsPerPel!=16)<br>

              ||(devMode.dmPelsWidth != w)<br>

              ||(devMode.dmPelsHeight != h) )<br>

              &amp;&amp; (modeSwitch) );<br>

              /* Okay see if we found a mode */<br>

              if (!modeSwitch) { }<br>

              else {<br>

              modeSwitch = ChangeDisplaySettings(&amp;devMode, 0);<br>

              if (modeSwitch!=DISP_CHANGE_SUCCESSFUL)<br>

              {<br>

              //Might be running in Windows95, let's try without the hertz change<br>

              devMode.dmBitsPerPel = 16;<br>

              devMode.dmPelsWidth = w;<br>

              devMode.dmPelsHeight = h;<br>

              devMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;<br>

              modeSwitch = ChangeDisplaySettings(&amp;devMode, 0);<br>

              }<br>

              }<br>

              return TRUE;<br>

              } 

            <li><a 

          href="download/fullscreen.zip">样本程序</a> 

            <li>说明:通常这个程序运行时会看到屏幕底部有道白线,这是任务栏造成的,如果你将它的总在最前面(always on 

              top)去掉或者将本程序窗口作成Always On Top型就不会再看到它了。</li>

          </ol>

        </blockquote>

    </td>

    </tr>

  </table>

 

</div>

</BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -