扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:wyb_star 来源:CSDN 2007年10月31日
关键字:
const S=1.0; D=5.0; ... glBegin(GL_TRIANGLES); glVertex3f( -S, 0, D); glVertex3f(S, 0, D); glVertex3f(0, S, D); glEnd; |
FILE: Tri.pas unit Tri; interface uses OpenGL, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormPaint(Sender: TObject); private procedure Draw; //Draws an OpenGL scene on request public end; var Form1: TForm1; implementation {$R *.DFM} procedure setupPixelFormat(DC:HDC); const pfd:TPIXELFORMATDESCRIPTOR = (nSize:sizeof(TPIXELFORMATDESCRIPTOR); // size nVersion:1; // version dwFlags:PFD_SUPPORT_OPENGL or PFD_DRAW_TO_WINDOW or PFD_DOUBLEBUFFER; // support double-buffering iPixelType:PFD_TYPE_RGBA; // color type cColorBits:24; // preferred color depth cRedBits:0; cRedShift:0; // color bits (ignored) cGreenBits:0; cGreenShift:0; cBlueBits:0; cBlueShift:0; cAlphaBits:0; cAlphaShift:0; // no alpha buffer cAccumBits: 0; cAccumRedBits: 0; // no accumulation buffer, cAccumGreenBits: 0; // accum bits (ignored) cAccumBlueBits: 0; cAccumAlphaBits: 0; cDepthBits:16; // depth buffer cStencilBits:0; // no stencil buffer cAuxBuffers:0; // no auxiliary buffers iLayerType:PFD_MAIN_PLANE; // main layer bReserved: 0; dwLayerMask: 0; dwVisibleMask: 0; dwDamageMask: 0; // no layer, visible, damage masks ); var pixelFormat:integer; begin pixelFormat := ChoosePixelFormat(DC, @pfd); if (pixelFormat = 0) then exit; if (SetPixelFormat(DC, pixelFormat, @pfd) <> TRUE) then exit; end; procedure GLInit; begin // set viewing projection glMatrixMode(GL_PROJECTION); glFrustum(-0.1, 0.1, -0.1, 0.1, 0.3, 25.0); // position viewer glMatrixMode(GL_MODELVIEW); glEnable(GL_DEPTH_TEST); end; procedure TForm1.FormCreate(Sender: TObject); var DC:HDC; RC:HGLRC; i:integer; begin DC:=GetDC(Handle); //Actually, you can use any windowed control here SetupPixelFormat(DC); RC:=wglCreateContext(DC); //makes OpenGL window out of DC wglMakeCurrent(DC, RC); //makes OpenGL window active GLInit; //initialize OpenGL end; procedure TForm1.Draw; const S=1.0; D=5.0; begin glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); glLoadIdentity; glTranslatef(0.0, 0.0, -12.0); glBegin(GL_TRIANGLES); glVertex3f( -S, 0, D); glVertex3f(S, 0, D); glVertex3f(0, S, D); glEnd; SwapBuffers(wglGetCurrentDC); end; procedure TForm1.FormPaint(Sender: TObject); begin Draw; end; end. FILE: Tri.dfm object Form1: TForm1 BorderStyle = bsDialog Caption = 'BASIC OpenGL Program' ClientHeight = 318 ClientWidth = 373 OnCreate = FormCreate OnPaint = FormPaint end |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者