Ортогональная проекция и текстурные координаты в opengl - PullRequest
2 голосов
/ 04 мая 2010

Я пишу 2D-игру в Opengl.Я уже настроил ортогональную проекцию, чтобы я мог легко узнать, где на экране окажется квадроцикл.Проблема в том, что я также хочу иметь возможность отображать пиксели непосредственно в координаты текстуры, поэтому я также применил к текстуре ортогональное преобразование (используя gluOrtho2d).Теперь я могу отображать пиксели напрямую, используя целые числа и glTexCoord2i.Дело в том, что после поиска в Google / чтения / запроса я обнаружил, что никто не знает (по-видимому) поведение glTexCoord2i, но он прекрасно работает, как я использую.Ниже приведен пример тестового кода, который я написал:

glBegin(GL_QUADS);
    glTexCoord2i(16,0);
    glVertex2f(X, Y);
    glTexCoord2i(16,16);
    glVertex2f(X, Y+32);
    glTexCoord2i(32, 16);
    glVertex2f(X+32, Y+32);
    glTexCoord2i(32, 0);
    glVertex2f(X+32, Y);
glEnd();

Итак, есть ли проблемы с тем, что я делаю, или то, что я делаю правильно?

1 Ответ

3 голосов
/ 04 мая 2010

В glTexCoord*i нет ничего особенного, это всего лишь один вариант glTexCoord, который для удобства принимает целочисленные аргументы, значения будут преобразованы с помощью преобразования текстуры так же, как и все остальные текстовые координаты.

Если вы хотите выразить координаты текстуры в пикселях, ваш код выглядит вполне нормально.

РЕДАКТИРОВАТЬ: Если вы хотите перевести свою кодировку OpenGL на «следующий уровень», вам следует подумать о том, чтобы отбросить рендеринг в немедленном режиме (glBegin / glEnd) и вместо этого построить буферы вершин и нарисовать их с glDrawArrays, это намного быстрее.

...