Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

glBindTexture [D5, WinXP]


Страницы:   1 2 3

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);можешь дописать, чтобы память лишнюю не занимать :)


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо