
11.04.2008, 19:37
|
 |
Новичок
|
|
Регистрация: 26.11.2006
Адрес: РК г. Талдыкорган
Сообщения: 67
Репутация: 15
|
|
Цитата:
Сообщение от zip000
AXS, приведите ВЕСЬ код процедуры, т.к. ошибка у вас явно не в этом месте. У меня этот код не вызывает никаких исключений.
|
Код библиотеки:
Код:
library sdcfunc;
uses
dglOpenGL, Windows, ShareMem;
procedure SetDCPixelFormat(dc: HDC); stdcall;
var
pfd:TPixelFormatDescriptor;
nPixelFormat:Integer;
begin
FillChar(pfd,SizeOf(pfd),0);
with pfd do
begin
nSize := sizeof(pfd);
nVersion := 1;
dwFlags := PFD_DRAW_TO_WINDOW or
PFD_SUPPORT_OPENGL or
PFD_DOUBLEBUFFER;
iPixelType:= PFD_TYPE_RGBA;
cColorBits:= 24;
cDepthBits:= 64;
iLayerType:= PFD_MAIN_PLANE;
end;
nPixelFormat:=ChoosePixelFormat(DC,@pfd);
SetPixelFormat(DC,nPixelFormat,@pfd);
end;
procedure Initiate(var DC:HDC; var RC:HGLRC; Hndl:HWND; W,H,OrtZoom:Integer;
Persp, Mat, AAlias: Boolean); stdcall;
begin
InitOpenGL;
DC:=GetDC(Hndl);
SetDCPixelFormat(DC);
RC:=wglCreateContext(DC);
ActivateRenderingContext(DC, RC);
wglMakeCurrent(DC,RC);
glClearColor(1.0,1.0,1.0,1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
if Persp then
gluPerspective(40.0,W/H,1,12)
else
glOrtho(-OrtZoom/(H/W), OrtZoom/(H/W), -OrtZoom, OrtZoom, -4500, 4500);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
if mat then
glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
glEnable (GL_DEPTH_TEST);
glEnable( GL_AUTO_NORMAL);
glEnable (GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
if AAlias then
begin
glEnable(GL_POLYGON_SMOOTH);
glEnable(GL_LINE_SMOOTH);
glEnable(GL_POLYGON_OFFSET_FILL);
glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
end;
end;
procedure Finish(DC:HDC; RC:HGLRC; Hndl:HWND); stdcall;
begin
wglMakeCurrent(0,0);
DeactivateRenderingContext;
wglDeleteContext(RC);
ReleaseDC(Hndl,DC);
DeleteDC(DC);
end;
exports
Initiate,
Finish;
begin
end.
|