Как назначить текстурные координаты в цикле for в OpenGL? - PullRequest
0 голосов
/ 11 марта 2012

Я хочу изменить фрагмент кода ниже таким образом, чтобы я хотел сгенерировать геометрию с определенной текстурой, используя циклы for. Я хочу ввести координаты вершины и количество вершин, а затем сгенерировать текстурные плоскости, используя glVertex3f. Возможно ли это?

Изменить: Чтобы уточнить, я хочу быть в состоянии предоставить информацию, содержащуюся в

        glTexCoord2f(0.f, 0.f); glVertex3f(-1, -1, -1);
        glTexCoord2f(rep, 0.f); glVertex3f(-1, 1, -1);
        glTexCoord2f(rep, rep); glVertex3f(-1, 1, 1);
        glTexCoord2f(0.f, rep); glVertex3f(-1, -1, 1);

сегмент с использованием цикла for. Я бы хотел иметь массив glVertex3f [n] с координатами, заданными пользователем.

// Obstacle texture

// draw with different ppm file
obstProg->enable();
obstProg->bindTexture("tex", obstTex, GL_TEXTURE_2D, 0);
obstProg->bindTexture("shadowTex", renderer->getShadowTexture(), GL_TEXTURE_2D, 1);
obstProg->setUniformfv("lightPosEye", renderer->getLightPositionEyeSpace(), 3);
obstProg->setUniformfv("lightColor", lightColor, 3);

    // set shadow matrix as texture matrix
matrix4f shadowMatrix3 = renderer->getShadowMatrix();
glActiveTexture(GL_TEXTURE0);
glMatrixMode(GL_TEXTURE);
glLoadMatrixf((GLfloat *) shadowMatrix3.get_value());

glColor3f(1.0, 1.0, 1.0);
glNormal3f(0.0, 1.0, 0.0);
glBegin(GL_QUADS);
{
    float rep = 10.f;
    glTexCoord2f(0.f, 0.f); glVertex3f(-1, -1, -1);
    glTexCoord2f(rep, 0.f); glVertex3f(-1, 1, -1);
    glTexCoord2f(rep, rep); glVertex3f(-1, 1, 1);
    glTexCoord2f(0.f, rep); glVertex3f(-1, -1, 1);

    glTexCoord2f(0.f, 0.f); glVertex3f(1, -1, -1);
    glTexCoord2f(rep, 0.f); glVertex3f(1, 1, -1);
    glTexCoord2f(rep, rep); glVertex3f(1, 1, 1);
    glTexCoord2f(0.f, rep); glVertex3f(1, -1, 1);

    glTexCoord2f(0.f, 0.f); glVertex3f(-1, -1, 1);
    glTexCoord2f(rep, 0.f); glVertex3f(-1, 1, 1);
    glTexCoord2f(rep, rep); glVertex3f(1, 1, 1);
    glTexCoord2f(0.f, rep); glVertex3f(1, -1, 1);

    glTexCoord2f(0.f, 0.f); glVertex3f(-1, -1, -1);
    glTexCoord2f(rep, 0.f); glVertex3f(-1, 1, -1);
    glTexCoord2f(rep, rep); glVertex3f(1, 1, -1);
    glTexCoord2f(0.f, rep); glVertex3f(1, -1, -1);

    glTexCoord2f(0.f, 0.f); glVertex3f(-1, 1, -1);
    glTexCoord2f(rep, 0.f); glVertex3f(1, 1, -1);
    glTexCoord2f(rep, rep); glVertex3f(1, 1, 1);
    glTexCoord2f(0.f, rep); glVertex3f(-1, 1, 1);

}
glEnd();
obstProg->disable();

1 Ответ

1 голос
/ 12 марта 2012

Поскольку у вас уже есть данные вершин в массиве, имеет смысл отправлять их в OpenGL напрямую, вместо того, чтобы вручную зацикливать их и вызывать функции непосредственного режима. Google для "Vertex Arrays"

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