Форум: "Игры";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c