2013-04-11 2 views
0

У меня был старый проект OpenGL, который не включал GLSL, а теперь Я переписываю его так, чтобы он использовал GLSL. У меня есть функция, которая вращает камеру вокруг неподвижной точки при перемещении мыши. Я не уверен как использовать эту функцию в моем новом проекте, теперь, когда я использую GLSL и , не является стандартным конвейером OpenGL.Можно ли использовать код преобразования, связанный с GLSL?

Это функция, и я не уверен, могу ли я использовать тот же код или мне придется переписать преобразования так, чтобы он работал для GLSL?

void mouseMovePassive(int x, int y) 
{ 
    static int oldX=x, oldY=y; 

    rotateCamera(y-oldY, x-oldX); 

    int centerX = glutGet(GLUT_WINDOW_WIDTH)/2; 
    int centerY = glutGet(GLUT_WINDOW_HEIGHT)/2; 
    if(abs(centerX-x) > 250 || abs(centerY-y) > 250) 
    { 
     glutWarpPointer(centerX, centerY); 
     oldX = centerX; 
     oldY = centerY; 
    } 
    else 
    { 
     oldX = x; 
     oldY = y; 
    } 
} 
+0

Интересной функцией будет 'rotateCamera' не ваш обработчик событий ввода. Отправьте исходный код этого. Сейчас мы не можем вам помочь, из-за отсутствия информации. – datenwolf

+1

Здесь недостаточно информации, чтобы иметь возможность ответить на этот вопрос. Мы можем только догадываться о том, что на самом деле выполняют эти функции. –

+0

Привет, ребята. Кодекс выглядит глубже, слишком много, чтобы вас беспокоить, но, в конце концов, он переходит к вызову gluLookAt. Итак, я думаю, теперь мой реальный вопрос: что мне делать с этим вызовом gluLookAt, как мне переписать такой вызов в GLSL. Можно ли его повторно использовать? – user2225930

ответ

2

Насколько я знаю, gluLookAt работает со встроенными матричными типами. Для более новых версий по сравнению с opengl вам придется либо перезаписать его, либо использовать стороннюю библиотеку. Если вы используете C++, я считаю, что библиотека glm построена в

Смежные вопросы