Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.28;
Скачать: CL | DM;

Вниз

OpenGL грузится одна и та же текстура (?)   Найти похожие ветки 

 
Кефир87   (2005-05-05 21:11) [0]

У меня вот такая штука:

 TTexture = class
   point : GLuint;
   procedure Load(const filename:string);
 end;


Все в принципе нормально... Но вот только в итоге у всех объектов этого типа прои разных point"ах прицепляется одна и та же текстура, загруженная последней... Может я забыл что...

Вот так я примерно рисую текстурированный прямоугольник:

 glBegin(GL_QUADS);
   glBindTexture(GL_TEXTURE_2D, tex.point);
   glTexCoord(0, 0); glVertex3f(-w, 0.0, -h);
   glTexCoord(1000, 0); glVertex3f( w, 0.0, -h);
   glTexCoord(1000, 1000); glVertex3f( w, 0.0, h);
   glTexCoord(0, 1000); glVertex3f(-w, 0.0, h);
 glEnd;

 glDisable(GL_TEXTURE_2D);


 
Кефир87   (2005-05-05 21:22) [1]

Наверно надо еще показать как я текстуру создаю...

Функция которая возвращяет Gluint...

function LoadBMPTexture(const FileName : String): GLuint;
const
 szh = SizeOf(TBitmapFileHeader);
 szi = SizeOf(TBitmapInfoHeader);
type
 TRGB = record
   r, g, b : GLbyte;
 end;
 TWrap = Array [0..0] of TRGB;
var
 BmpFile : File;
 bfh : TBitmapFileHeader;
 bmi : TBitmapInfoHeader;
 x, size: GLint;
 temp: GLbyte;
 sWidth, tHeight: GLsizei;
 pData : pointer;
begin
 AssignFile (BmpFile, FileName);
 Reset (BmpFile, 1);
 Size := FileSize (BmpFile) - szh - szi;
 Blockread(BmpFile, bfh, szh);
 BlockRead (BmpFile, bmi, szi);
 If Bfh.bfType <> $4D42 then
 begin
   Exit;
 end;
 sWidth := bmi.biWidth;
 tHeight := bmi.biHeight;
 GetMem (pData, Size);
 BlockRead(BmpFile, pData^, Size);
 For x := 0 to sWidth*tHeight-1 do
   With TWrap(pData^)[x] do begin
     temp := r;
     r := b;
     b := temp;
 end;

 glGenTextures(1, Result);
 glBindTexture(GL_TEXTURE_2D, Result);

 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR);
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);

 gluBuild2DMipmaps(GL_TEXTURE_2D, 3, sWidth, tHeight, GL_RGB, GL_UNSIGNED_BYTE, pData);
 FreeMem(pData);

end;


Вот... Не очень быстро... Но я к этому пока не стремлюсь...


 
Pa5ha   (2005-05-05 21:30) [2]

Если не работает, значит не нормально :)

Текстурные координаты - не многовато ли 1000? Этож у Тебя симанама каждый раз рисуется при любой текстуре. Или это сверхбольшой объект?

Что такое tex? Если Ты постоянно одну и ту же текстуру биндишь, то она одна и та же рисуется :)


 
Кефир87   (2005-05-05 21:33) [3]

tex в этом случае это TTexture. Там все нормально! Я имею в виду что point отличается от других в программе...


>  Или это сверхбольшой объект?

Ну это я чисто для теста так землю нарисовал 8)


 
XProger ©   (2005-05-05 22:33) [4]

С КАКИХ ПОР glBindTexture пашет внутри блока glBegin/glEnd? а?


 
Кефир87   (2005-05-05 22:52) [5]


> С КАКИХ ПОР glBindTexture пашет внутри блока glBegin/glEnd?
> а?

Спокойно! Спокойно! Кричать не надо...
А разве нет? Я думал что как бы эта текстура относится к этому объекту... Надеюсь в этом и есть моя лажа 8)



Страницы: 1 вся ветка

Текущий архив: 2005.08.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.045 c
1-1123584552
Svintus
2005-08-09 14:49
2005.08.28
Как сохранить интернет страницу?


3-1121691780
GekaNaz
2005-07-18 17:03
2005.08.28
Ошибка - конец файла


1-1123359237
mmms
2005-08-07 00:13
2005.08.28
Мышь над/вне компанентом(формой)


3-1121416353
DD
2005-07-15 12:32
2005.08.28
Динамический запрос в Оракле 8


1-1123516062
Demidoff
2005-08-08 19:47
2005.08.28
Проблемы с ShellExecute!