ПрограммированиеФорумГрафика

машина состояний OpenGL и создание текстур

#0
3:19, 29 авг 2009

Сейчас перелистал более 20-и разных туторов, докуметации и прочего, и везде при создании текстур в OGL пишутся такие пункты:
1. создайте и залинкуйте имя
2. установите "некоторые" параметры
3. загрузите в память
Под кое-какими параметрами во втором пункте идет установка семлер стейтов:

 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, TextureWrapS);
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, TextureWrapT);
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, MagFilter);
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, MinFilter);

А теперь собственно вопрос: зачем OGL'ю эти параметры при создании текстуры, ведь по логике вещей они должны изменяться?
И что будет если их не установливать при загрузке, а непосредственно перед отрисовкой?

#1
3:26, 29 авг 2009

Параметры можно менять в любой момент, пока текстура установлена на конвейер.
Если не хочешь менять, будут стоять параметры по умолчанию (билинейная фильтрация и GL_REPEAT).

#2
8:17, 29 авг 2009

Чаще всего не приходится менять динамически фильтрацию текстур...
или я чето не догоняю?

#3
10:14, 29 авг 2009

Так они и могут меняться. Вызываешь glBindTexture для нужной текстуры и устанавливаешь нужные параметры. Даже если текстура уже загружена, всё равно параметры поменяются. А вот надо ли это - другой вопрос. :) Только что пробовал менять параметры уже загруженной и отображающейся текстуры, получилось.

#4
13:49, 29 авг 2009

arkrakus
Просто в д3д эти параметры привязаны к текстурному блоку, а в огл - к самой текстуре. Поэтому в огл их удобнее выставить при создании текстуры (а не при рендере, как в д3д).

#5
7:59, 30 авг 2009

Ок, попривязывал к текстурам - работает. Спасибо за содействие :)

Сейчас пишу к этому загрузку из DDS файлов через glCompressedTexImage.
Возник еще такой вопрос: будет ли OpenGL распаковывать DXT текстуры, если я запрошу закомрешенную текстуру через glGetTexImage или нужно распаковывать вручную?

#6
8:08, 30 авг 2009

Надо распаковывать.

#7
16:49, 30 авг 2009

arkrakus
> будет ли OpenGL распаковывать DXT текстуры, если я запрошу закомрешенную
> текстуру через glGetTexImage

Попробуй. Мне кажется ogl должен ее сам распаковать.

#8
21:57, 30 авг 2009

arkrakus
> будет ли OpenGL распаковывать DXT текстуры
GL_EXT_texture_compression_s3tc

#9
23:45, 30 авг 2009

Лучше читать спеку, ибо это всё давно в ядре...

ПрограммированиеФорумГрафика

Тема в архиве.