Всем привет. Есть некоторое приложение, работающее с графикой посредством OpenGL. Мне нужно немножко изменить логику работы, а именно: передвинуть положение камеры и добавить повороты по осям. Я раскопал функцию, которая, как мне кажется выполняет необходимые мне действия - выполняет сдвиг и повороты по осям. Вот логика её работы: Код (Text): // 1. Создание проекции GlMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); SetViewPort(...); PerspectiveView(fovy, aspect, zFar, zNear); << -------- ВОТ ТУТ МОЙ ХУК // 2. Создание отображения GlMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); // Вращение по осям... glRotatef(RotateVector[0], 1, 0, 0); glRotatef(RotateVector[1], 0, 1, 0); glRotatef(RotateVector[2], 0, 0, 1); // Перенос glTranslatef(TranslateVector[0], TranslateVector[1], TranslateVector[2]); // ... что-то ещё (glDisable, glEnable etc) Итак, функцию PerspectiveView() я перехватил, она отрабатывает. Задача заключается в том, чтобы находясь в этом перехвате как-то добавить своё вращение и свой перенос. Обращаюсь к знатокам OpenGL, как это вообще сделать? Я честно пытался повторить код секции 2 со своими параметрами, но нужного результата так и не получил, видимо потому, что после моего кода неминуемо следует GlMatrixMode(GL_MODELVIEW) / glPushMatrix() / glLoadIdentity() из начала 2-го блока. Вообще, начинаю задумываться - а возможно ли такое в принципе? Пока единственным решением вижу в хуке править в стековом фрейме адрес возврата, чтобы проскакивать несколько следующих инструкций.. Но это как-то не кошерно... С OpenGL не очень знаком, поэтому прошу помощи
Ну на самом деле всё оказалось слишком просто - достаточно было в перехвате вызывать необходимые функции glRotatef и glTranslatef. Всем спасибо за внимание