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

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

1 голос
/ 09 июня 2010

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

Спасибо

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

Ответы [ 2 ]

4 голосов
/ 09 июня 2010

Да ... градиенты очень легко сделать в 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

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

2 голосов
/ 09 июня 2010

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

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

...