Движение камеры SDL OpenglC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Движение камеры SDL Opengl

Сообщение Anonymous »

Так что я пытаюсь создать свой собственный двигатель Physichs для моего проекта в старшей школе, и я внедрил код для обработки движения камеры. Прокрутка работает нормально, я бы сказал, что немного медленно, но это приемлемо, хотя, когда я пытаюсь реализовать код, который будет обрабатывать движение камеры вдоль оси x и y, удерживая левую кнопку мыши вниз, он действительно не работает. Иногда он будет двигаться, а не ловить кнопку, нажимая иногда, будет застрять, не выполняя вещи, которую она была задействована после того, как кнопка нажимает на кнопку.

Код: Выделить всё

bool start = true;
bool isDragging = false;

while (!display.IsClosed())
{

...

Uint32 mouseState = SDL_GetMouseState(&currentMouseX, &currentMouseY);
while (SDL_PollEvent(&event)) {
SDL_GL_SetSwapInterval(0);
if (!ImGui::IsAnyItemActive() && !ImGui::IsWindowHovered(ImGuiHoveredFlags_AnyWindow)) {
switch (event.type) {
case SDL_QUIT:
break;

case SDL_MOUSEWHEEL:
z += event.wheel.y;
break;

case SDL_MOUSEBUTTONDOWN:
if (event.button.button == SDL_BUTTON_LEFT) {
isDragging = true;
lastMouseX = event.button.x;
lastMouseY = event.button.y;
}
break;

case SDL_MOUSEBUTTONUP:
if (event.button.button == SDL_BUTTON_LEFT) {
isDragging = false;
}
break;
default:
break;
}
}
}

if (isDragging) {

int dx = currentMouseX - lastMouseX;
int dy = currentMouseY - lastMouseY;

x += dx * 0.07f;
y += dy * 0.07f;

lastMouseX = currentMouseX;
lastMouseY = currentMouseY;
}

camera.udpatePosition(glm::vec3(x, y, z));

display.Update();
start = false;
}
также вместо трех точек есть код, который подвешивает интерфейс дисплея с помощью ImGui
Я пробовал помещать инструкции из циклов while, изменяя для циклов if. Также пробовал размещать логические символы в разных местах, но теперь я застрял и не знаю, как обойти эту штуку, чтобы она работала. Если у кого-то есть идеи, пожалуйста, помогите

Подробнее здесь: https://stackoverflow.com/questions/793 ... a-movement
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»