Показать сообщение отдельно
  #11  
Старый 11.04.2008, 19:37
Аватар для AXS
AXS AXS вне форума
Новичок
 
Регистрация: 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.
Ответить с цитированием