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

📄 114871.htm

📁 在天极网上发布的各类delphi原码及技巧文档
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<html xmlns="http://www.w3.org/TR/xhtml1/strict">   <head>      <title>天极网</title>      <meta http-equiv="Content-Type" content="text/html; charset=gb2312"></meta>      <meta http-equiv="Pragma" content="no-cache"></meta>      <meta http-equiv="expires" content="Mon,12 May 1998 00:36:05 GMT"></meta>      <link rel="stylesheet" href="/xslimages/css/cpcw.css"></link>   </head>   <style>.nava {  font-size: 9pt}.font1{font-size: 10.5pt}</style>   <body bgcolor="#FFFFFF" topmargin="2"><table width="760" border="0" cellspacing="0" cellpadding="0" align="center"><tr><td width="20%" rowspan="3" valign="top" align="center"><table width="95%" border="1" cellspacing="0" cellpadding="0" height="60" bordercolorlight="#CCCCCC" bordercolordark="#FFFFFF"><tr valign="middle" align="center"><td><div align="center"><span class="nava">天极硬件,新闻及时<br>资料详尽,敬请关注<br><a href="/33554432/35651584/yingjian.htm">www.myhard.com</a></span></div></td></tr></table></td><td width="57%" valign="bottom" rowspan="3" align="center"><div align="center"><script language="JavaScript" src="http://ad.cpcw.com/js/school.js"></script></div></td><td width="20%" valign="top" rowspan="3" align="center"><table width="95%" border="1" cellspacing="0" cellpadding="0" height="60" bordercolorlight="#CCCCCC" bordercolordark="#FFFFFF"><tr valign="middle" align="center"><td><div align="center"><span class="nava">好又多电子商务<br>让您一点动心<br><a href="http://www.hoyodo.com">www.hoyodo.com</a></span></div></td></tr></table></td></tr><tr></tr><tr></tr></table><table width="760" border="0" cellspacing="0" cellpadding="0" height="70" align="center"><tr><td width="145" valign="bottom" rowspan="3"><img src="/xslimages/content/logo.gif" width="140" height="60"></img></td><td colspan="3" width="100%" height="33" align="center"><a href="/" target="_blank">首页</a>|    <a href="/33554432/36700160/news.htm" target="_blank">新闻中心</a>|     <a href="/33554432/50331648/business.htm" target="_blank">企业中心</a>|	 <a href="/33554432/41943040/caijing.htm" target="_blank">财经中心</a>|  	 <a href="/33554432/39845888/fashion.htm" target="_blank">时尚中心</a>| 	 <a href="/33554432/35651584/yingjian.htm" target="_blank">硬件中心</a>| 	 <a href="/33554432/34603008/school.htm" target="_blank">学习中心</a>| 	 <a href="/33554432/37748736/game.htm" target="_blank">游戏中心</a>| 	 <a href="/33554432/38797312/ziyuan.htm" target="_blank">资源中心</a>| 		 <a href="http://www.hoyodo.com/" target="_blank">社区</a>| 	 <a href="http://training.yesky.com/" target="_blank">网校</a></td></tr><tr><td colspan="3" width="78%" height="20" align="right"><b>中心栏目:<a href="http://www.mydown.com" target="_blank"><font color="#FF0000"><u>红辣椒软件下载</u></font></a></b><a href="http://soft.yesky.com" target="_blank">       软件之窗 </a><a href="http://desktop.yesky.com" target="_blank">天极桌面网 </a><a href="http://art.yesky.com" target="_blank">美工教室       </a><a href="http://itdreamer.yesky.com" target="_blank">程序方舟 </a><a href="http://homepage.yesky.com" target="_blank">网页陶吧       </a><a href="http://safe.yesky.com" target="_blank">安全之路</a><a href="http://soft.yesky.com" target="_blank"></a></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" width="760"><tbody><tr bgcolor="#333333"><td colspan="2" height="1"></td></tr><tr><td bgcolor="#ff9900" height="16" valign="bottom" width="72%"><font color="#000000"><b><font color="#ffffff">学 习 中 心</font></b></font></td><td bgcolor="#6699cc" height="16" width="28%"><div align="center"><font face="Arial, Helvetica, sans-serif"><b><font color="#ffffff">N         E T S C H O O L</font></b></font></div></td></tr><tr bgcolor="#333333"><td colspan="2" height="1"></td></tr></tbody></table><table align="center" border="0" cellpadding="0" cellspacing="0" width="760" bgcolor="#eeeeee"><td colspan="2" height="28"><div align="center"><a href="/33554432/34603008/34635776/34636800/34636832/schoolinverse1.htm" target="_blank"><font color="#000000">HTML</font></a><font color="#000000"> _</font><a href="/33554432/34603008/34635776/34636800/34636864/schoolinverse1.htm" target="_blank"><font color="#000000">JavaScript</font></a><font color="#000000"> _</font><a href="/33554432/34603008/34635776/34636800/34636928/schoolinverse1.htm" target="_blank"><font color="#000000">CSS</font></a><font color="#000000">               _              <a href="/33554432/34603008/34635776/34637824/34637952/schoolinverse1.htm" target="_blank"><font color="#000000">                  PHP                </font></a><font color="#000000">                 _              </font></font><a href="/33554432/34603008/34635776/34637824/34637888/schoolinverse1.htm" target="_blank"><font color="#000000">ASP</font></a><font color="#000000"> _</font><a href="http://www.yesky.com/33554432/34603008/34635776/34637824/34637920/schoolinverse1.htm" target="_blank"><font color="#000000">Perl</font></a><font color="#000000"> _</font><a href="/33554432/34603008/34635776/34638848/34638880/schoolinverse1.htm" target="_blank"><font color="#000000">Dreamweaver</font></a><font color="#000000"> _</font><a href="/33554432/34603008/34635776/34639872/34639904/schoolinverse1.htm" target="_blank"><font color="#000000">XML</font></a><font color="#000000"> _</font><a href="http://www.yesky.com/33554432/34603008/34734080/schoolinverse2.htm" target="_blank"><font color="#000000">病毒</font></a><font color="#000000"> _</font><a href="http://www.yesky.com/67108864/68157440/68419584/inverse2.htm" target="_blank"><font color="#000000">程序开发</font></a><font color="#000000"> _</font><a href="http://www.yesky.com/33554432/34603008/34799616/34800640/schoolinverse1.htm" target="_blank"><font color="#000000">Email</font></a><font color="#000000"> _</font><a href="http://www.yesky.com/33554432/34603008/34897920/34898944/schoolinverse1.htm" target="_blank"><font color="#000000">Windows 9x</font></a><font color="#000000"> _</font><a href="/33554432/34603008/34897920/34900992/schoolinverse1.htm" target="_blank"><font color="#000000">Linux</font></a><font color="#000000"> _</font><a href="/33554432/34603008/34963456/34966528/schoolinverse1.htm" target="_blank"><font color="#000000">WPS</font></a><font color="#000000"> _</font><a href="http://www.yesky.com/33554432/34603008/34963456/34964480/schoolinverse1.htm" target="_blank"><font color="#000000">Word</font></a></div></td></table><table width="760" border="0" cellspacing="0" cellpadding="0" height="30" align="center"><tr><td align="left" valign="bottom"><span class="nava"><span class="nava"><a href="/index.htm">首页</a>→              <a href="/33554432/34603008/school.htm">学习中心</a>→              <a href="/33554432/34603008/34668544/schoolinverse2-pro.htm">程序方舟</a>→              <a href="/33554432/34603008/34668544/34672640/schoolinverse2.htm">技巧经验</a>→              <a href="/33554432/34603008/34668544/34672640/34672672/schoolinverse1.htm">DELPHI技巧</a>→              </span></span></td><td width="2%"></td></tr></table><table width="760" border="0" cellspacing="0" cellpadding="0" align="center"><tr><td colspan="3" valign="top" width="75%"><table width="98%" border="0" cellspacing="1" cellpadding="1" bgcolor="#000000"><tr bgcolor="#FFFFFF"><td width="100%" colspan="4" align="left"><table width="95%" align="center"><tr><td class="font1"><p align="center"><br><font size="3">做一个OpenGL控件</font><br><span class="nava"><font color="#CC9933">2000-09-18·						  品雪·delhpi技术网</font></span></p><p>  OpenGL是一个独立于窗口的图形库,而图形最终是在窗口系统里绘制出来的,那么OpenGL的绘图命令是怎么在窗口里生成输出的呢?<br>  这就是各个系统上的OpenGL实现者需要做的工作了。在Windows里是通过wgl库完成的,在X-Windows里是通过glx服务器来完成的,至于这些OpenGL实现具体是怎么工作的,请参考sgi发布的sample implement源码,不过那个代码是用C写的。<br>  在MS-Windows里,wgl库负责将OpenGL的绘制设备RenderContext与GDI的DeviceContext联系起来,使得发到OpenGL的RC里的命令生成的位图能够在GDI DC里绘制出来,你可以把它想象成OpenGL在RC里有一个FrameBuffer,记录着生成的图案,而wgl则负责把FrameBuffer的内容BitBlt到DC上。当然,这并不是它实际的工作方法,如果想了解更多请参考SGI发布的SDK资料或联系MS公司。<br>  为了使GDI DC能够接受OpenGL RC的输出,必须为DC选定特别的像素格式,然后建立RC,再用wglMakeCurrent把当前要使用的RC和DC联系起来。此后我们就可以用OpenGL命令正常工作了。在一个程序里可以创建多个RC和多个DC,程序中的OpenGL命令会发到被wglMakeCurrent指定为当前的那一组合中。<br>  我并不认为这个初始化过程是个很有意思的工作,这个世界上有很多聪明的程序员也这么想,所以他们发明了glaux库和glut库。glaux是在著名的OpenGL Programmer Guide里提出的,这本书是OpenGL编程的官方文档,因为它的封皮是红色的,所以通常简称为RedBook。故名思意,glaux是一套输助库,它使得你无须关心在具体窗口系统里初始化、消息响应的细节,而是使用传统的c/dos程序风格编制OpenGL程序。</p><p><br><br>int main(int argc, char** argv) <br>{ auxInitDisplayMode( AUX_SINGLE|AUX_RGB|AUX_DEPTH16);//使用单缓冲、RGB彩色模式、16位浓度 <br>auxInitPosition(0,0,250,250); <br>auxInitWindow("Title");//以上两行在(0,0)片建立了一个大小为250X250的窗口,其标题为"Title"。 <br>myinit();//建立OpenGL透视投影环境 <br>auxReshapeFunc(myReshape);//指定窗口大小变化的响应函数 <br>auxMainLoop(display);//指定绘制函数 <br>return 0; }</p><p><br>  由于glaux是为教学目的开发的,所以实用价值很限,所以又有程序员开发了glut,这套库被广泛使用,它的工作方式与glaux极为类似,但功能完善得多,特别是对交互、全屏等的支持要理想得多,所以许多的OpenGL演示程序使用它,比如SGI网站上提供的多数演示程序都需要使用它。同时这套库已经被移植到多种平台上,所以要是想用简单的方法开发在windows/macos/os2/xwindows等系统上都能使用的程序,那么应该选择这套库。<br>  我并不认为一个Delphi程序员会喜欢glaux或glut,因为那意味着你不能利用Delphi的可视开发能力,另外任何真正实用的Delphi程序想直接在其它操作系统上编译运行好象也不现实,即glut的跨平台能力也没有什么吸引力。我们应该开发一个VCL控件,把初始化工作封装起来。<br>  我认为从TCustomPanel派生一个子类比较方便,让我们称它为TGLPanel吧。初始化过程要在WMCreate里完成,之所以要放在这里是因为这个时候Window Handle已经建立,但还没启用。<br>  在WMCreate中会<br>  ①调用initDC完成DC调整工作,initDC会以本窗口使用的DC调用PreparePixelFormat,而PixelFormat则真正完成像素格式调整。<br>  ②然后WMCreate会调用InitGL完成OpenGL透视投影环境的设定。<br>  ③最后调用OnInit给用户一个调整透视投影环境的机会。 <br>注意,如果要在MDI环境中的子窗体中使用OpenGL,还有些附加工作要做,这就是给窗口类的Params.Style加上WS_CLIPCHILDREN和WS_CLIPSIBLINGS属性,这得在Window Handle建立之前就完成,因此要写在CreateParams里。由于SDI应用并不需要该代码,所以应该定义OnPreInit事件,让用户在需要的时候自己加上,在Create里调用OnPreInit。以下代码定义了OnPreInit,但并没有定义CreateParams,如果需要自己加上吧。<br>  在TGLPanel类中实际所做工作的详细说明(按成员可见性组织):<br>私有<br>1、加入DC/RC/Pal私有变量<br>2、定义初始化DC/RC的私有方法</p><p>保护:<br>3、加入FOnPaint,FOnResize,FOnInit,FOnPreInit四个事件响应变量。<br>4、继承/重载虚方法CreateParams,Paint,Resize<br>5、响应以下消息<br>WM_CREATE, TWMCreate, WMCreate<br>WM_DESTROY, TWMDestroy, WMDestroy<br>WM_PALETTECHANGED, TWMPaletteChanged, WMPaletteChanged<br>WM_QUERYNEWPALETTE, TWMQueryNewPalette, WMQueryNewPalette<br>WM_ERASEBKGND, TWMEraseBkgnd, WMEraseBkgnd</p><p>公开:<br>6、定义建构与析构方法<br>7、定义必要的其它方法以提供各种特性</p><p>发布:<br>8、以下继承来的属性<br>__property Alignment;<br>__property Align;<br>__property DragCursor;<br>__property DragMode;<br>__property Enabled;<br>__property ParentFont;<br>__property ParentShowHint;<br>__property PopupMenu;<br>__property ShowHint;<br>__property TabOrder;<br>__property TabStop;<br>__property Visible;<br>9、以下继承来的方法<br>__property OnClick;<br>__property OnDblClick;<br>__property OnDragDrop;<br>__property OnDragOver;<br>__property OnEndDrag;<br>__property OnEnter;<br>__property OnExit;<br>__property OnMouseDown;<br>__property OnMouseMove;<br>__property OnMouseUp;<br>__property OnStartDrag;<br>10、加入以下事件<br>//初始化OpenGL状态<br>__property TNotifyEvent OnInit = {read=FOnInit,write=FOnInit};<br>//专用于修改显示BPP模式<br>__property TNotifyEvent OnPreInit = {read=FOnPreInit,write=FOnPreInit};<br>11、重载以下事件<br>__property TNotifyEvent OnResize = {read=FOnResize,write=FOnResize};<br>__property TNotifyEvent OnPaint = {read=FOnPaint,write=FOnPaint};<br>12、将消息与其响应函数连接起来(Delphi中这一步是在定义函数时指定的) <br>源代码<br>unit GLPanel;</p><p>interface</p><p>uses<br>

⌨️ 快捷键说明

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