Градиенты и память

Я создаю приложение для рисования с OpenGL. Я создал алгоритм, который генерирует градиентные текстуры. Затем я сопоставляю их со своими полигонами, и это работает довольно хорошо. Я понял, сколько памяти для этого требуется. Создание 1000 градиентов занимает около 800 МБ, и это слишком много. Есть ли альтернатива текстурам, или способ их сжатия, или другой способ наложения градиентов на полигоны, который не использует столько памяти?

Спасибо

Мои полигоны вогнутые, я использую GLUTesselator, они разноцветные и точечные.


person jmasterx    schedule 09.06.2010    source источник


Ответы (2)


Да... градиенты очень легко сделать в OpenGL; вам вообще не нужны текстуры. Работая по памяти здесь... вы бы просто сделали что-то вроде этого:

glBegin(GL_POLYGON);
glColor3ub(255,0,0); // red
glVertex2f(-1,-1);
glVertex2f(1,-1);
glColor3ub(0,0,255); // blue
glVertex2f(1,1);
glVertex2f(-1,1);
glEnd();
// draws a square that fades from red to blue

Если вы измените цвет вершины, он просто создаст градиент между этими двумя точками.

person mpen    schedule 09.06.2010

Вы также можете попробовать генерировать градиенты процедурно внутри фрагментного шейдера.

Если вы идете по пути сжатия текстур, вы можете использовать glCompressedTexImage2D, форматы сжатых текстур предоставляются через расширения GL, распространенным является S3TC/DXT1.

person Dr. Snoopy    schedule 09.06.2010