Сейчас перелистал более 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'ю эти параметры при создании текстуры, ведь по логике вещей они должны изменяться?
И что будет если их не установливать при загрузке, а непосредственно перед отрисовкой?
Параметры можно менять в любой момент, пока текстура установлена на конвейер.
Если не хочешь менять, будут стоять параметры по умолчанию (билинейная фильтрация и GL_REPEAT).
Чаще всего не приходится менять динамически фильтрацию текстур...
или я чето не догоняю?
Так они и могут меняться. Вызываешь glBindTexture для нужной текстуры и устанавливаешь нужные параметры. Даже если текстура уже загружена, всё равно параметры поменяются. А вот надо ли это - другой вопрос. :) Только что пробовал менять параметры уже загруженной и отображающейся текстуры, получилось.
arkrakus
Просто в д3д эти параметры привязаны к текстурному блоку, а в огл - к самой текстуре. Поэтому в огл их удобнее выставить при создании текстуры (а не при рендере, как в д3д).
Ок, попривязывал к текстурам - работает. Спасибо за содействие :)
Сейчас пишу к этому загрузку из DDS файлов через glCompressedTexImage.
Возник еще такой вопрос: будет ли OpenGL распаковывать DXT текстуры, если я запрошу закомрешенную текстуру через glGetTexImage или нужно распаковывать вручную?
Надо распаковывать.
arkrakus
> будет ли OpenGL распаковывать DXT текстуры, если я запрошу закомрешенную
> текстуру через glGetTexImage
Попробуй. Мне кажется ogl должен ее сам распаковать.
arkrakus
> будет ли OpenGL распаковывать DXT текстуры
GL_EXT_texture_compression_s3tc
Лучше читать спеку, ибо это всё давно в ядре...
Тема в архиве.