Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> glGenTextures - Not found :( 
:(
    Опции темы
Ripper
Дата 9.1.2005, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: нет
Всего: 23



Почему у меня glGenTextures ненаходит дельфи?? Просто тока щас начал читать про текстуры.. и бац.. smile


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
Ripper
Дата 9.1.2005, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: нет
Всего: 23



да и glBindTextures тоже (


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
Zero
Дата 9.1.2005, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



А зачаем тебе именно это использовать???
Я недавно делал лабу про текстуры, могу скинуть если хош, там можно будет посмотреть как накладывать текстуры на изображения.
PM MAIL ICQ   Вверх
Ripper
Дата 9.1.2005, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: нет
Всего: 23



ну хорошо дай мне пример с коментами.. тока учти я ваще не знаю нечего про текстуры
и потом... все равно плохо что ненаходит. просто я тарасова читаю и походу разбираюсь



--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
Zero
Дата 9.1.2005, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Код

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Timer1: TTimer;
   procedure FormCreate(Sender: TObject);
   procedure FormPaint(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
   procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
   procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
     Y: Integer);
   procedure FormKeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);
   procedure Timer1Timer(Sender: TObject);


 private
   hrc: HGLRC;
   Position: Array [0..3] of GLFloat;
 end;
 TBitmapHeader= array[0..53] of byte;
 TRGB=record
     b,g,r:byte;
     end;
 TRGBA=record
     b,g,r,a:byte;
     end;
 TRGBArray=array[0..4096] of TRGB;
 TRGBAArray=array[0..4096] of TRGBA;
 PRGBAArray=^TRGBAArray;
 GLArr=array[0..3]of GLFloat;

var
 Form1: TForm1;
  uknot:array[0..7] of GLFloat = (0, 0, 0, 0, 1, 1, 1, 1);
 vknot:array[0..7] of GLFloat = (0, 0, 0, 0, 1, 1, 1, 1);
 ctlarray:array[0..3,0..3,0..2] of GLFloat =
 (
 (//U[1]
   (-0.8,0.8,0.5), //V[1]
   (-0.5,1,0.2),   //V[2]
   (0.5,1,0.2),    //V[3]
   (0.8,0.8,0.5)), //V[4]
 (//U[2]
   (-1, 0.5, 0.5), //V[1]
   (-0.5, 0.5, -0.2),//V[2]
   (0.5, 0.5, -0.2), //V[3]
   (1, 0.5, 0.5)),   //V[4]
 (//U[3]
   (-1, -0.5, 0.4),  //V[1]
   (-0.5,-0.5,-0.2), //V[2]
   (0.5, -0.5, -0.2), //V[3]
   (1, -0.5, 0.4)),   //V[4]
 (//U[4]
   (-0.8, -0.8, 0.5),//V[1]
   (-0.5, -1, 0.2),  //V[2]
   (0.5, -1, 0.2),   //V[3]
   (0.8, -0.8, 0.5)) //V[4]
 );

 wX, wY: single;
 rX, rY: single;
 rotate: Boolean;
 dc:hdc;
 QuadObj: GLUquadricObj;
 Nurbs:GluNurbsObj;

 RGB:TRGBArray;
 textures:array [1..4] of  PRGBAArray=(nil,nil,nil,nil);
 tex:PRGBAArray;

implementation

{$R *.DFM}

procedure LoadTexture(fname:string;j,alpha:integer);
var
 f:file of byte;
 header:TBitmapHeader;
 i,RGBsize:integer;
begin
 assignfile(f,fname);
 reset(f);
 RGBsize:=FileSize(f)-54;

 new(tex);
 textures[j]:=tex;

 FillChAR(header,54,0);
 BlockRead(f,header,54);
 BlockRead(f,RGB,RGBsize);
for i:=0 to RGBsize div 3 do
 begin
   tex[i].r:=RGB[i].b;
   tex[i].g:=RGB[i].g;
   tex[i].b:=RGB[i].r;
   tex[i].a:=alpha;
 end;

 glpixelstorei(gl_unpack_alignment,4);
 Closefile(f);
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
 glClearColor (0, 0.5, 1, 1.0);
 glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
 glEnable(GL_COLOR_MATERIAL);

 glEnable (GL_DEPTH_TEST);
 glEnable (GL_AUTO_NORMAL);
 glEnable (GL_NORMALIZE);

 //Установка источника света
 glEnable (GL_LIGHTING);
 glEnable (GL_LIGHT0);

 Position [0] := 100;
 Position [1] := 5;
 Position [2] := -5;
 Position [3] := 0;
 glLightfv (GL_LIGHT0, GL_POSITION, @position);

 glPushMatrix();
 glRotatef (rx, 0, 1, 0);
 glRotatef (rY, 1, 0, 1);

 (******************** Бумага **************************************************)

 Nurbs:=gluNewNurbsRenderer;

 glMatrixMode(GL_MODELVIEW);
 glPushMatrix;
 glLoadIdentity;
 glRotatef(rX+15,0,1,0);
 glRotatef(ry+65,1,0,0);
 gluNurbsProperty(Nurbs,Glu_DISPLAY_MODE, GLU_fill);

 gluBeginSurface(Nurbs);
 gluNurbsSurface(Nurbs,4*2,@uknot,4*2,@vknot,4*3,3,@ctlarray,4,4,GL_MAP2_VERTEX_3);
 gluEndSurface(Nurbs);

 QuadObj:=gluNewQuadric;
 gluQuadricDrawStyle(QuadObj, GLU_FILL);


 gluQuadricTexture (QuadObj,true);

 glRotatef(rX+45,0,1,0);
 glRotatef(ry+300,1,0,0);


(******************** Стержень ************************************************)
           //Стержень (наконечник)
  glPushMatrix();
  glRotatef(-90, 90, -90, -90);
  glTransLatef(0.3, 0.04, -0.32);
  glColor3f(4, 1, 0);
  gluCylinder(QuadObj, 0, 0.008, 0.03, 10, 10);
  glPopMatrix();

         //Стержень (продолжение наконечника)
  glPushMatrix();
  glRotatef(-90, 90, -90, -90);
  glTransLatef(0.3, 0.04, -0.29);
  glColor3f(4, 1, 0);
  gluCylinder(QuadObj, 0.008, 0.008, 0.04, 10, 10);
  glPopMatrix();

         //Стержень (место с чернилами)
  glPushMatrix();
  glRotatef(-90, 90, -90, -90);
  glTransLatef(0.3, 0.04, -0.25);
  glColor3f(0, 0, 0);
  gluCylinder(QuadObj, 0.01, 0.01, 0.45, 10, 10);
  glPopMatrix();

         //Стержень (место с чернилами(где они закончились))
  glPushMatrix();
  glRotatef(-90, 90, -90, -90);
  glTransLatef(0.3, 0.04, 0.2);
  glColor3f(1, 1, 1);
  gluCylinder(QuadObj, 0.01, 0.01, 0.5, 10, 10);
  glPopMatrix();

(******************** Поверхность ручки ***************************************)
 glEnable (GL_TEXTURE_2D);
 glTexImage2D(gl_texture_2d,0,3,64,64,0,GL_RGBA,GL_UNSIGNED_BYTE,textures[2]);
 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

     //Конец ручки
 glPushMatrix();
  glRotatef(-90, 90, -90, -90);
  glTransLatef(0.3, 0.04, -0.28);
  glColor3f(8, 8, 1);
  gluCylinder(QuadObj, 0.012, 0.03, 0.1, 10, 10);
  glPopMatrix();

        //Место между которым держут ручку и наконечником
  glPushMatrix();
  glRotatef(-90, 90, -90, -90);
  glTransLatef(0.3, 0.04, -0.18);
  glColor3f(1,1, 1);
  gluCylinder(QuadObj, 0.033, 0.035, 0.05, 10, 10);
  glPopMatrix();

         //Место за которое держут ручку
  glPushMatrix();
  glRotatef(-90, 90, -90, -90);
  glTransLatef(0.3, 0.04, -0.13);
  glColor3f(0,0.6, 0.8);
  gluCylinder(QuadObj, 0.033, 0.035, 0.2, 10, 10);
  glPopMatrix();

  glEnable (GL_TEXTURE_2D);
  glTexImage2D(gl_texture_2d,0,3,64,64,0,GL_RGBA,GL_UNSIGNED_BYTE,textures[1]);
  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
         //Прозрачное место ручки
  glPushMatrix();
  glRotatef(-90, 90, -90, -90);
  glTransLatef(0.3, 0.04, 0.07);
  glColor3f(1,1, 1);
  gluCylinder(QuadObj, 0.033, 0.035, 0.5, 10, 10);
  glPopMatrix();

  glEnable (GL_TEXTURE_2D);
  glTexImage2D(gl_texture_2d,0,3,64,64,0,GL_RGBA,GL_UNSIGNED_BYTE,textures[2]);
  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

          //То, чем закручивают стержень (без наконечника)
  glPushMatrix();
  glRotatef(-90, 90, -90, -90);
  glTransLatef(0.3, 0.04, 0.57);
  glColor3f(0,0, 1);
  gluCylinder(QuadObj, 0.033, 0.033, 0.14, 10, 10);
  glPopMatrix();

         //Наконечник
  glPushMatrix();
  glRotatef(-90, 90, -90, -90);
  glTransLatef(0.3, 0.04, 0.71);
  glColor3f(0,0,1);
  gluCylinder(QuadObj, 0.033, 0, 0.005, 10, 10);
  glPopMatrix();

 glPopMatrix();
 SwapBuffers(dc);

 glPopMatrix;
 glFlush;
 gluDeleteNurbsRenderer(Nurbs);
end;

procedure SetDCPixelFormat (hdc : HDC);
var
pfd : TPixelFormatDescriptor;
nPixelFormat : Integer;
begin
 FillChar (pfd, SizeOf (pfd), 0);
 pfd.dwFlags  := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
 nPixelFormat := ChoosePixelFormat (hdc, @pfd);
 SetPixelFormat (hdc, nPixelFormat, @pfd);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
Top:=0;
Left:=0;
Width:=screen.Width;
Height:=screen.Height;
dc:=getdc(Handle);
SetDCPixelFormat(dc);
hrc := wglCreateContext(dc);
wglMakeCurrent(dc, hrc);
loadtexture(GetCurrentDir+'\1.bmp',1,1);
loadtexture(GetCurrentDir+'\2.bmp',2,1);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  gluDeleteQuadric (QuadObj);
  wglMakeCurrent (0, 0);
  wglDeleteContext (hrc);
  ReleaseDC (Handle, DC);
  DeleteDC(DC);
end;

(******************** Перемещение с помощью мыши*******************************)
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 timer1.Enabled:=false;
 wX:=X;
 wY:=Y;
 rotate:=true;
 InvalidateRect(handle, nil, false);
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 timer1.Enabled:=true;
 rotate:=false;
 InvalidateRect(handle, nil, false);
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
if rotate then
 begin
   rX := rX+(X-wX)/2;
   rY := rY+(Y-wY)/2;
   wX := X;
   wY := Y;
   InvalidateRect(handle, nil, false);
 end;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 If Key = vk_escape then Close;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
rx:=rx+1;
ry:=ry+1;
glPushMatrix();
 glRotatef (rx, 0, 1, 0);
 glRotatef (rY, 1, 0, 1);
glPopMatrix();
FormPaint(Sender);
end;

end.

Добавлено @ 21:56
Цитата(Ripper @ 9.1.2005, 21:45)
все равно плохо что ненаходит

Надеюсь ты написал вызов модуля OpenGL, в разделе Uses.
Добавлено @ 21:59
Не забудь воткнуть два BMP-файла, размером 64*64, с именами 1.bmp и 2.bmp.
Добавлено @ 22:02
Если не сделаешь то скажи, я те на мыло, всё папку скину...
PM MAIL ICQ   Вверх
Ripper
Дата 9.1.2005, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: нет
Всего: 23



включил включил.. просто в тарасове я читаю все подряд и как то легчем мне как там описывается.. ну вот например процедуру загрузки файла с помощью aux .. а у тебя своя процедура..
Т.е. все равно когда нить понадобится функция то


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
Zero
Дата 10.1.2005, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: нет
Всего: 24



Цитата(Ripper @ 9.1.2005, 22:15)
Т.е. все равно когда нить понадобится функция то
Непонял я про какую ты функцию говоришь, это та что у тебя не вызывается чтоли??? В моём примере она никогда не понадобится, и без неё всё замечательно работает. Да и делать всё не особо сложно. smile
Ну ты как знаешь, пока делай по Тарасову, а если не получится, то сделаешь по моему примеру. У меня он хоть и большой навид, но там восновном левые вещи, а непосредственно загрузка текстур занимает маленький размер. smile
PM MAIL ICQ   Вверх
Ripper
Дата 10.1.2005, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: нет
Всего: 23



у тебя LoadTexture может загружать тока 64ъ64?
если я гружу другой размер и в glTexImage2D(gl_texture_2d,0,3,64,64,0,GL_RGBA,GL_UNSIGNED_BYTE,textures[2]); ставлю другой то должно работать? I/O 998 вроде как выскакивает =(


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
Ripper
Дата 10.1.2005, 14:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

Репутация: нет
Всего: 23



все отлично работает:
Код

procedure glGenTextures(n: GLsizei; var textures: GLuint); stdcall; external opengl32;
procedure glBindTexture(target: GLenum; texture: GLuint); stdcall; external opengl32;

smile


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0641 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.