Создать текстуру из полигона (openGL) - PullRequest
0 голосов
/ 02 мая 2010

У меня есть квад, и я хотел бы использовать градиент, который он создает, в качестве текстуры для другого многоугольника.

glPushMatrix();
glTranslatef(250,250,0);
    glBegin(GL_POLYGON);


    glColor3f(255,0,0);
glVertex2f(10,0);
glVertex2f(100,0);
glVertex2f(100,100);
glVertex2f(50,50);
glVertex2f(0,100);

    glEnd(); //End quadrilateral coordinates

    glPopMatrix();
    glBegin(GL_QUADS); //Begin quadrilateral coordinates

    glVertex2f(0,0);
glColor3f(0,255,0);
    glVertex2f(150,0);
    glVertex2f(150,150);
    glColor3f(255,0,0);
    glVertex2f(0,150);


    glEnd(); //End quadrilateral coordinates

Моя цель - сделать так, чтобы 5-вершинный многоугольник имел градиент четырехугольника (возможно, текстура не лучшая ставка) Спасибо

Ответы [ 2 ]

2 голосов
/ 02 мая 2010

Сохраняйте это простым!

Очень просто создать градиентную текстуру в коде, например ::100100

// gradient white -> black
GLubyte gradient[2*3] = { 255,255,255, 0,0,0 };

// WARNING: check documentation, I am not quite sure about syntax and order:
glTexture1D( GL_TEXTURE_1D, 0,3, 2, 0, GL_RGB, GL_UNSIGNED_BYTE, gradient );

// setup texture parameters, draw your polygon etc.

Графическое оборудование и / или GL создадут для вас приятный градиент от цвета один к цвету два (помните: это одно из основных преимуществ аппаратного ускоренного рисования многоугольника, вам не нужно выполнять интерполяцию в программном обеспечении).

Ваша реальная проблема: какие текстурные координаты вы используете в 5-вершинном многоугольнике. Но это был не твой вопрос ...; -)

1 голос
/ 02 мая 2010

Чтобы сделать это, вы должны сделать рендер-текстуру. Хотя это является обычным явлением и поддерживается практически каждой доской, обычно оно используется для довольно сложных эффектов (например, зеркал).

Если это действительно просто градиент, я бы попытался создать градиент в таком приложении, как Paint.Net. Если вам действительно нужно создавать их во время выполнения, используйте пиксельный шейдер для реализации рендеринга в текстуру. Тем не менее, я боюсь, что объяснить пиксельные шейдеры в нескольких словах немного сложно - однако, в сети есть много учебных пособий.

С помощью пиксельного шейдера вы получаете большой контроль над графической картой. Это позволяет вам визуализировать вашу сцену во временный буфер, а затем довольно легко применить этот буфер в качестве текстуры, плюс гораздо больше функциональности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...