opengl+delphi 鼠标拾取

2021-04-06 05:22

opengl+delphi 鼠标拾取

//------------------------------------------------------------------------
//
// OBJECT PICKING TUTORIAL
// Author: Ben Humphrey -
// Delphi Converter: David "DavesLord" Caouette -
// OpenGL Template Author: Jan Horn - http://www.sulaco.co.za
//
//------------------------------------------------------------------------
program OpenGLApp;

uses
Windows,
Messages,
OpenGL,
Textures;

const
WND_TITLE = 'OpenGL App by Jan Horn';
FPS_TIMER = 1; // Timer to calculate FPS
FPS_INTERVAL = 1000; // Calculate FPS every 1000 ms

SUN = 100;// This is the object ID for the SUN
EARTH = 101;// This is the object ID for the EARTH
PLUTO= 102;// This is the object ID for PLUTO

var
h_Wnd : HWND; // Global window handle
h_DC : HDC; // Global device context
h_RC : HGLRC; // OpenGL rendering context
keys : Array[0..255] of Boolean; // Holds keystrokes
FPSCount : Integer = 0; // Counter for FPS
ElapsedTime : cardinal; // Elapsed time between frames

// Textures
SunTex : glUInt;
EarthTex: glUInt;
PlutoTex: glUInt;

// User variables
pObj: GLUQuadricObj;
SunRotation : single = 90;// This holds our sun's current rotation
EarthRotation : single = 90;// This holds our earth's current rotation
PlutoRotation : single = 90;// This holds pluto's current rotation
g_Fullscreen: boolean;

{$R *.RES}

procedure glBindTexture(target: GLenum; texture: GLuint); stdcall; external opengl32;

{------------------------------------------------------------------}
{ Function to convert int to string. (No sysutils = smaller EXE) }
{------------------------------------------------------------------}
function IntToStr(Num : Integer) : String; // using SysUtils increase file size by 100K
begin
Str(Num, result);
end;


{------------------------------------------------------------------}
{ Function to draw the actual scene }
{------------------------------------------------------------------}
procedure glDraw();
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);// Clear The Screen And The Depth Buffer
glLoadIdentity();// Reset The matrix

// We make our position a bit high and back to view the whole scene

// Position View Up Vector
gluLookAt(0, 3, 6, 0, 0, 0, 0, 1, 0);// This determines where the camera's position and view is

glInitNames();// This clears the name stack so we always start with 0 names.

// This next line is important. If you don't push on at least ONE name,
// The selection won'
t work. Instead of glLoadName()/glEnd() you can use
// glPushName(TheID) and glPopName(); Then you don't need to glPushName(0);

glPushName


opengl+delphi 鼠标拾取.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:神奇的滚筒

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: