![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Наложение текстуры на OGL - е [Delphi, Windows]
parovoZZ © (2005-04-14 09:37:00)А чтобы наложить текстуру на полигон, его вершины обязательно должны быть нормированы (а также для текстуры)?
XProger (2005-05-01 19:52:00) [1]Как создаются мипмап:
Имеем текстуру 256х256
Создаём для неё мипмапы, простым скалированием.
128х128 64х64 32х32 16х16 8х8 4х4 2х2 1х1
Всё.
МИПМАПЫ ГЕНЕРИРУЕТ OpenGL!!! Не парься ты... gluBuild2DMipmaps за тебя и текстуру до размера 2^n увеличит и мипматы создаст...
parovoZZ (2005-05-01 18:33:00) [2]Так это самое, как сохранять dds: с мипмапами или без? (Один хрен - фотошоп не генерит мипмапы почему-тА). И если у меня dds без мипмапов, то при уменьшении текстуры при рендеринге какая интерполяция будет применяться.
XProger (2005-04-28 07:17:00) [3]Разве мы не об OpenGL говорим? ;)
*.dds очень гибкий формат, а это для понта ИМХО... :P
parovoZZ (2005-04-27 09:30:00) [4]А зачем тода в *dds предусмотрены мипмапы?
XProger (2005-04-26 20:46:00) [5]MIPMAP сделает всё за тебя. Просто при уменьшании кол-ва полигонов перерасчитывай координаты текстуры в зависимости от координат вершин получившегося ландшафта.
parovoZZ (2005-04-26 19:57:00) [6]Я хочу сделать ландшафт. Однотонный и однообразный меня не интересует, поэтому и встал вопрос о размере текстур и об их количестве. У меня в зависимости от расстояния меняется кол-во полигонов, но вот с текстурой я не понял: накладывать ту же или сделать уменьшенную копию и потом её рендерить. Можно поэкспериментировать, но хотелось бы сперва узнать.
XProger (2005-04-26 19:49:00) [7]parovoZZ, зависит в некоторой степени и от качества этих самых текстур...
Текстурку 1024х1024 явно будет сложнее обработать чем 16х16 ;)
parovoZZ (2005-04-26 19:42:00) [8]Т. е. от того, сколько у меня текстур, производительность не меняется? Всё зависит от полигонов?
XProger (2005-04-26 18:23:00) [9]
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
...
gluBuild2DMipmaps(GL_TEXTURE_2D, c, Width, Height, b, GL_UNSIGNED_BYTE, Data);
Хоть в 1 млн раз уменьшай...
П7 (2005-04-26 12:09:00) [10]Как-то мутно ты пишешь, я тебя практически не понима. Ты можешь свою проблему нормально сформулировать?
parovoZZ (2005-04-26 08:46:00) [11]В учебнике написано, что OGl сам позаботится об этом. А если с расстоянием я кол-во полигонов уменьшаю на еденицу площади, тады гуляй вася, надо всё делать вручную.
П7 (2005-04-25 19:45:00) [12]Иди читай учебник по OpenGL.
parovoZZ (2005-04-25 09:29:00) [13]ИСЧо вопрос: при удалении полигона от камеры что лучше делать - вручную накладывать уменьшенную копию текстуры или же делать это программно (читай аппаратно через OGl).
XProger (2005-04-14 23:03:00) [14]Система координат текстуры:
0..1 - вся ширина текстуры
0..1 - вся высота текстуры
Если ставишь в параметрах GL_REPEAT то сможешь повторять текстуру на полигоне:
glBegin(GL_TRIANGLES);
glTexCoord2f(0, 0); glVertex2f(0, 0);
glTexCoord2f(2, 0); glVertex2f(100, 0);
glTexCoord2f(2, 2); glVertex2f(100, 100);
glEnd;
Выведет полигон с текстурой повторённой 2 раза.
Поэкспериментируй и всё прочувствуй :)
П7 (2005-04-14 20:42:00) [15]зачем? не обязательно.
Например текстура имеет размеры 256 на 256, на квадрат, который мы выводим на экран имеет единичную длинну. При этом получаемые экранные размеры квадрата примерно равны 256 на 256. В итоге на экране у нас всё нормально... (: Сумбурно объяснил, но надеюсь врубишься...
parovoZZ (2005-04-14 20:39:00) [16]Получается, что координаты вершин обязательно надо нормировать?
П7 (2005-04-14 17:44:00) [17]да, но тогда текстура растянется...
parovoZZ (2005-04-14 12:31:00) [18]Не, имеется ввиду не нормаль, а координаты вершин. То есть я могу наложить текстуру на треугольник с рёбрами больше единицы?
Pa5ha (2005-04-14 12:25:00) [19]Нет. Модно просто отключить освещение ( glDisable(GL_LIGHTING) ) или: glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); // цвет примитива не учитывается