как сделать 2D анимацию в OpenGL? - PullRequest
0 голосов
/ 16 сентября 2010

как перемещать 2d объекты в opengl? Какой механизм, например, нам нужно контролировать кадры или как?

приветствуется некоторый сегмент кода:)

спасибо заранее!

Ответы [ 2 ]

0 голосов
/ 16 сентября 2010

Короткий ответ: вы можете переместить объект, изменив матрицу вида модели.Это можно сделать несколькими способами, и это зависит от ваших предпочтений кодирования и от того, какую версию драйверов opengl вы имеете в наличии.

Вот некоторый частичный код, который поможет вам начать работу в правильном направлении:

Следующее устарело в Opengl 3.0+ (но даже тогда оно все еще доступно через профиль совместимости).

// you'll need a game loop to make some opengl calls each frame
while(!done)
{
    // clear color buffers, depth buffers, etc
    initOpenglFrame();

    glPushMatrixf();
        glTranslatef(obj->getX(), obj->getY(), obj->getZ());
        obj->draw();
    glPopMatrixf();

    // move the object 0.01 units to the left each tick
    obj->setX(obj->getX() + 0.01);

    // flush, swap buffers, etc
    finishOpenglFrame();
}

Для OpenGL 3.0 и более поздних версий, glPushMatrixf (), glPopMatrixf (), glTranslatef () и аналогичныефиксированный интерфейс конвейера функций устарел.Если вам нужно использовать OpenGL 3.0 или выше, вы захотите использовать решение такого же типа, но вам потребуется собственная реализация матриц и стек матриц.Я думаю, что обсуждение выходит за рамки вашего вопроса.

Для дальнейшего чтения и начала работы с OpenGL, я бы порекомендовал вам проверить nehe.gamedev.net.Если вы хотите начать работу с OpenGL 3.X, то я бы порекомендовал приобрести Opengl Superbible 5th Edition.Отличная книга!

0 голосов
/ 16 сентября 2010

OpenGL просто передает данные вершин, хотя некоторые матрицы преобразования и растеризуют результат.Что-нибудь более высокого уровня, чем то, что вы должны предоставить себе.

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