![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
glBindTexture [D5, WinXP]
grouzd[E]v © (2005-07-10 18:46:00)Goodevening again my friends!
У меня опять проблемы с OGLой (а может с головой =)
Не получается подключать текстуры через glBindTexture
Раньше я делал как в одной статье:
procedure TTexture.Enable;
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,Width,Height,0,GL_RGB,GL_UNSIGNED_BYTE,data);
glEnable(GL_TEXTURE_2D);
end;
т.е. при перерисовке объекта текстура создается заново
Теперь пробую так:
type
TTexture = class
width, height : integer;
data : pByteArray;
t : GLuint;
procedure LoadFromFile(file_name : string);
procedure Enable;
end;
implementation
procedure glGenTextures(n: GLsizei; var textures: GLuint); stdcall; external opengl32;
procedure glBindTexture(target: GLenum; texture: GLuint); stdcall; external opengl32;
procedure TTexture.LoadFromFile(file_name : String);
begin
//загрузка из файла
glGenTextures(1, t);
glBindTexture(GL_TEXTURE_2D, t);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,Width,Height,0,GL_RGB,GL_UNSIGNED_BYTE,data);
end;
procedure TTexture.Enable;
begin
glBindTexture(GL_TEXTURE_2D, t);
glEnable(GL_TEXTURE_2D);
end;
...и ничего не просходит, текстура не накладывается. скажите pls что не так
grouzd[E]v (2005-07-10 22:55:00) [41]Текстуры грузятся и в первом и во втором случаях одинаково, но во 2-м текстура просто не накладывается - рисуется объект, залитый своим цветом
XProger (2005-07-10 22:47:00) [42]grouzd[E]v,
Ну раз и это не работает... Текстуры хоть грузятся? Что показывает вообще?
grouzd[E]v (2005-07-10 20:59:00) [43]Ладно, смотри:glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,Width,Height,0,GL_RGB,GL_UNSIGNED_BYTE,data);
- то же самое. Кстати взял из книги Краснова
XProger (2005-07-10 20:51:00) [44]
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,Width,Height,0,GL_RGB,GL_UNSIGNED_BYTE,data);
Я вроде уже сказал...
Хорошо, поясню: "О великий OpenGL, создай текстуру по этому байтовому массиву с 4 компонентами на цвет но формата 3 байта на цвет."
Явных различий в форматах не замечаешь?
И ещё:
glBindTexture(GL_TEXTURE_2D, t);
glEnable(GL_TEXTURE_2D);
Поменяй местами ради приличия :)
grouzd[E]v (2005-07-10 20:35:00) [45][1] Не смешно. Скажи лучше что не так
XProger (2005-07-10 20:33:00) [46]
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,Width,Height,0,GL_RGB,GL_UNSIGNED_BYTE,data);
СУПЕР!
FreeMem(data);можешь дописать, чтобы память лишнюю не занимать :)