Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2008, 02:31   #1
Nadjuha
Пользователь
 
Регистрация: 27.05.2008
Сообщений: 17
По умолчанию

Народ обьясните как подключть OpenGL и начать с ним работу.
И что за процедура glBindTexture

Народ пожалуйста помогите исправить ошыбку, вот код:




Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, OpenGL, ExtCtrls,
  Dialogs, Menus, ComCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
   private
  DC:HDC;
  hrc:HGLRC;
  Angle:GLfloat;

  procedure SetPixFormat;

  protected
  procedure WMPaint(var Msg:TWMPaint); message WM_PAINT;
  published
  end;

  var
  Form1: TForm1;

  implementation


uses unit2;
var
 x:PTAUX_RGBImageRec;  // Ошыбку выбрасывает здесь: 
[Error] Unit1.pas(36): Undeclared identifier: 'PTAUX_RGBImageRec'

 procedure glBindTexture(target: GLenum; texture: GLuint); stdcall;
   external OpenGL32;
 {$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Angle:=0;
DC:=GetDC(Handle);
SetPixFormat;
hrc:=wglCreateContext(DC);
wglMakeCurrent(DC, hrc);
glMatrixMode(GL_MODELVIEW);
Timer1.Enabled:=True;
GLShadeModel(GL_SMOOTH);

glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glEnable(Gl_LIGHT0);
glEnable(GL_NORMALIZE);

x:=auxDIBImageLoadA('img.bmp');

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEARest);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEARest);
glTexImage2D(GL_TEXTURE_2D, 0, 3, x.sizeX, x.sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, x.data);

end;
procedure TForm1.SetPixFormat;
var
nPixelFormat:integer;
pfd:TPixelFormatDescriptor;
begin
FillChar(pfd, SIZEOF_RFPO_DATA(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:=32;
iLayerType:=PFD_MAIN_PLANE;
end;

Последний раз редактировалось Stilet; 10.06.2008 в 08:07.
Nadjuha вне форума Ответить с цитированием
Старый 10.06.2008, 06:06   #2
Nadjuha
Пользователь
 
Регистрация: 27.05.2008
Сообщений: 17
По умолчанию

Код:
procedure TForm1.WMPaint(var Msg: TWMPaint);
var
ps: TPaintStruct;
begin
BeginPaint(HANDLE, ps);
glClearColor(0,0.4,0.7,2);
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glLoadIdentity;
glRotatef(Angle/(random(1)+1),0.0, 1.0, 0.0);
glEnable(GL_TEXTURE_2D);
glBegin(GL_QUADS);

glNormal(0,0,2);
glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 2.0);
glTexCoord2f(1.0, 0.0); glVertex3f(1.0, -1.0, 2.0);
glTexCoord2f(1.0, 0.8); glVertex3f(1.0, 1.0, 2.0);
glTexCoord2f(0.0, 0.8); glVertex3f(-1.0, 1.0, 2.0);

glNormal(0,0,-2);
glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, -2.0);
glTexCoord2f(1.0, 0.8); glVertex3f(-1.0, 1.0, -2.0);
glTexCoord2f(0.0, 0.8); glVertex3f(1.0, 1.0, -2.0);
glTexCoord2f(0.0, 0.0); glVertex3f(1.0, -1.0, -2.0);

glNormal(2,0,0);
glTexCoord2f(1.0, 0.8); glVertex3f(1.0, 1.0, -2.0);
glTexCoord2f(0.0, 0.8); glVertex3f(1.0, 1.0, 2.0);
glTexCoord2f(0.0, 0.0); glVertex3f(1.0, -1.0, 2.0);
glTexCoord2f(1.0, 0.0); glVertex3f(1.0, -1.0, -2.0);

glNormal(-2,0,0);
glTexCoord2f(1.0, 0.8); glVertex3f(-1.0, 1.0, -2.0);
glTexCoord2f(0.0, 0.8); glVertex3f(-1.0, 1.0, 2.0);
glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 2.0);
glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, -2.0);
glEnd();

glBegin(GL_TRIANGLES);
glNormal(0,0,2);
glVertex(-1.0,1.0,2.0);
glVertex(0.0,2.0,2.0);
glVertex(1,1,2);
glNormal(0,0,-2);
glVertex(-1,1,-2);
glVertex(0,2,-2);
glVertex(1,1,-2);
glEnd;
{dah}
glNormal(3,3,0);
glBegin(GL_QUADS);
glTexCoord2f(0.0,1.0); glVertex(0,2,2.2);
glTexCoord2f(1.0,1.0); glVertex(0,2,-2.2);
glTexCoord2f(1.0,0.8); glVertex(1.4,0.7,2.2);
glTexCoord2f(0.0,0.8); glVertex(1.4,0.7,2.2);
glEnd();

glNormal(-3,3,0);
glBegin(GL_QUADS);
glTexCoord2f(1.0,1.0); glVertex(0,2,2.2);
glTexCoord2f(0.0,1.0); glVertex(0,2,-2.2);
glTexCoord2f(0.0,0.8); glVertex(-1.4,0.7,-2.2);
glTexCoord2f(1.0,0.8); glVertex(-1.4,0.7,2.2);
glEnd();

{doors}

glNormal(0,0,2);
glBegin(GL_QUADS);
glTexCoord2f(1.0, 1.0); glVertex3f(0.08, -0.44, 2.001);
glTexCoord2f(0.0, 1.0); glVertex3f(0.44, 1.0, -0.44, 2.001);
glTexCoord2f(0.0, 0.8); glVertex3f(0.44, -1.0, 2.001);
glTexCoord2f(1.0, 0.8); glVertex3f(0.08, -1.0, 2.001);
glend();
glNormal(0,0,2);
glBegin(GL_QUADS);
glTexCoord2f(1.0, 0.56); glVertex3f(0.094, -0.5, 2.002);
glTexCoord2f(0.0, 0.56); glVertex3f(0.41, 1.0, -0.5, 2.002);
glTexCoord2f(0.0, 0.0); glVertex3f(0.41, -1.0, 2.002);
glTexCoord2f(1.0, 0.0); glVertex3f(0.094, -1.0, 2.001);
glEnd();
glDisable(GL_TEXTURE_2D);

SwapBuffers(DC);
EndPaint(HANDLE,ps);
end;

procedure TForm1.Timer1Timer(Sender:TObject);
begin
Angle:=Angle+1.0;
if(Angle>=360.0) then Angle:=0.0;
InvalidateRect(Handle,nil,False);
end;


procedure TForm1.FormResize(Sender: TObject);
begin
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluPerspective(80.0, Width/Height, 1, 10.0);
glTranslatef(0.0,-1.0,-5);
glViewport(0,0,Width,Height);
glMatrixMode(GL_MODELVIEW);
InvalidateRect(Handle,nil,False);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Timer1.Enabled:=False;
wglMakeCurrent(0,0);
wglDeleteContext(hrc);
ReleaseDC(Handle,DC);
end;
end.
Тег <CODE>

Последний раз редактировалось merax; 10.06.2008 в 06:44.
Nadjuha вне форума Ответить с цитированием
Старый 10.06.2008, 07:52   #3
Nadjuha
Пользователь
 
Регистрация: 27.05.2008
Сообщений: 17
По умолчанию

Ребята помогите, с кодом разобралась как бы, объясните как подключить библиотеку glaux.dll
или куда скопировать этот файлик
Nadjuha вне форума Ответить с цитированием
Старый 10.06.2008, 08:09   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Надя, я может не в тему но предлагаю попробовать компонент GLScene. Это оболочка для OGL.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.06.2008, 08:12   #5
Nadjuha
Пользователь
 
Регистрация: 27.05.2008
Сообщений: 17
По умолчанию

Ураа, закинула glaux.dll в WINDOWS/SYSTEM и работает отлично)
кипешу то развела)
Nadjuha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поверхность по массиву точек на OpenGL в Delphi Mixasik Помощь студентам 1 21.07.2008 16:41
Работа с текстурами. OpenGL в Delphi. Gambler Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 21.04.2008 01:19
OpenGl+Delphi,при загрузке текстуру сильно корежит Skif Помощь студентам 1 27.11.2007 08:40