Вверх ↑
Этот топик читают: Гость
Ответов: 1304
Рейтинг: 405
#1: 2009-05-04 20:18:31 ЛС | профиль | цитата
В OpenGL приложениях возникают неоправданные трудности при работе с текстурой; 1) Нехватает режима сглаживания текстуры,

#pas
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR),
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR),
для элемента GL_Texture.
2) Так-же очень необходим режим совместной работы текстур и освещения

#pas
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ),
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND ),
для элемента GL_Main.
Собственными силами добавить точки данных методов увы пока неполучилось .
Пример с хвостиками(pas) прилагаю.
ps: распаковать Demo.rar, запустить и скомпилировать пример в папке Demo.
карма: 3

0
Ответов: 1088
Рейтинг: 112
#2: 2009-05-04 21:35:00 ЛС | профиль | цитата
MAV, IC в помощь.
поставь в конец onInit к примеру это:

Add(InlineCode,12590381,602,119)
{
WorkPoints=#6:doNext|
EventPoints=#7:onEvent|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|28:uses kol,Share,Debug,OpenGL;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|4: |9: public|22: onEvent:THI_Event; |48: procedure doNext(var Data:TData; index:word);|5: end;|0:|14:implementation|0:|0:|57:procedure THiAsmClass.doNext(var Data:TData; index:word);|8:begin |65:glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);|65:glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);|62:glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );|58:glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND )|0:|5:end; |0:|0:|4:end.|
}


Сам так часто делаю
карма: 0
Время верстки: %cr_time% Текущее время: %time%
1
Голосовали:MAV
Ответов: 1304
Рейтинг: 405
#3: 2009-05-04 23:02:45 ЛС | профиль | цитата
Sniper36, спасибо, два метода работаю, попробую мучить с применением IC
карма: 3

0
Администрация
Ответов: 15295
Рейтинг: 1519
#4: 2009-05-05 00:41:57 ЛС | профиль | цитата
добавлено
карма: 27
1
Голосовали:MAV
Ответов: 1304
Рейтинг: 405
#5: 2009-05-06 00:19:04 ЛС | профиль | цитата
Dilma, если не вносить изменения в элемент GL_Texture, то невозможно включить сглаживание текстуры. При обращении к doCreate(GL_Texture), параметр GL_LINEAR заданый при инициализации по onInit(GL_Main(TexFilter=True)), переключается на GL_NEAREST. Может проще внедрить управление фильтром в элемент GL_Texture?, а GL_Main оставить как был.
карма: 3

0
Ответов: 1304
Рейтинг: 405
#6: 2009-05-08 23:42:11 ЛС | профиль | цитата
MAV писал(а):
если не вносить изменения в элемент GL_Texture, то невозможно включить сглаживание текстуры, GL_Main оставить как был

Добавил настройки фильтра текстур в GL_Texture, иконку к GL_TexEnvMode(на SVN небыло), пример.

карма: 3

0
файлы: 1gl_texture.rar [33.1KB] [304]
Ответов: 1304
Рейтинг: 405
#7: 2009-06-03 11:53:26 ЛС | профиль | цитата
Продолжаю мучить GL_Texture .
При уменьшении объекта с текстурой, возникают весьма заметные искажения, режима фильтрации (MAG_FILTER, GL_LINEAR / MIN_FILTER, GL_LINEAR) недостаточно. Необходимо создать Mip-уровни, функция gluBuild2DMipmaps.
В архиве лежит поправленный opengl.pas(ошибка в аргументах функции gluBuild2DMipmaps)
----------------------------------------------------------------------------------------------------
ps: Фильтрация с Mip-уровнями требует жертв, при размерах текстур 1024х1024 резко увеличивается нагрузка на процессор . Поэтому предлагаю оставить фильтрацию текстур как в варианте
http://hiasm.1gb.ru/xf//getfile/13197
а для возможности воспользоваться Mip-уровнями необходимо поправить opengl.pas

#pas
function gluBuild2DMipmaps (target: GLenum; components, width, height: GLint;
format, atype: GLenum; data: Pointer): Integer; stdcall;


карма: 3

0
файлы: 2demo.rar [30.8KB] [331], gl_texture2.rar [14.4KB] [328]
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)