Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2019, 16:47   #1
VolodyaBuzin
Пользователь
 
Регистрация: 10.11.2017
Сообщений: 56
По умолчанию Движение камеры с использованием клавиатуры: проблемы с подключением GLKeyboard и Math

Добрый день! Подскажите, как в C++ заставить камеру двигаться и переключаться от одного объекта к другому по нажатии клавиш в C++ Builder? Библиотека GLKeyboard подключена в обоих файлах, проект собрался, но почему-то клавиатуру "не видит". Работаю в RAD Studio 10.3 и GLScene 1.8.

CPP-файл:
Код:
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "GLBaseClasses"
#pragma link "GLCoordinates"
#pragma link "GLCrossPlatform"
#pragma link "GLObjects"
#pragma link "GLScene"
#pragma link "GLWin32Viewer"
#pragma link "GLCadencer"
#pragma link "GLKeyboard"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::GoToTheCube1Click(TObject *Sender)
{
GLSceneViewer1->Camera=GLCamera1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::GoToTheSphere1Click(TObject *Sender)
{
GLSceneViewer1->Camera=GLCamera2;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NotFocus1Click(TObject *Sender)
{
GLSceneViewer1->Camera=NULL;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::NotFocus2Click(TObject *Sender)
{
GLSceneViewer1->Camera=NULL;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
          const double newTime)
{
GLCube1->Turn(deltaTime*10);
GLSphere1->Turn(deltaTime*10);
//Движение вперед по клавишам ‘ц’ и’ w’
if (IsKeyDown('ц') || IsKeyDown('w')) GLSceneViewer1->Camera->Move(2* deltaTime);
//Движение назад по клавишам ‘ы’ и ‘s’
if (IsKeyDown('ы') || IsKeyDown('s')) GLSceneViewer1->Camera->Move(-2* deltaTime);
//Поворот влево по клавишам ‘ф’ и’ a’
if (IsKeyDown('ф') || IsKeyDown('a')) GLSceneViewer1->Camera->Slide(-2* deltaTime);
//Поворот вправо по клавишам ‘в’ и ‘d’
if (IsKeyDown('в') || IsKeyDown('d')) GLSceneViewer1->Camera->Slide(2* deltaTime);
//Движение вверх по клавишам ‘u’ и ‘г’
if (IsKeyDown('u') || IsKeyDown('г')) GLSceneViewer1->Camera->Lift(0.01);
//Движение вниз по клавишам ‘n’ и ‘т’
if (IsKeyDown('n') || IsKeyDown('т')) GLSceneViewer1->Camera->Lift(-0.01);
if (IsKeyDown('c') || IsKeyDown('с')) GLSceneViewer1->Camera=GLCamera1;
if (IsKeyDown('v') || IsKeyDown('м')) GLSceneViewer1->Camera=GLCamera2;
if (IsKeyDown('b') || IsKeyDown('и')) GLSceneViewer1->Camera=NULL;
 
}
H-файл:
Код:
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include "GLBaseClasses.hpp"
#include "GLCoordinates.hpp"
#include "GLCrossPlatform.hpp"
#include "GLObjects.hpp"
#include "GLScene.hpp"
#include "GLWin32Viewer.hpp"
#include "GLKeyboard.hpp"
#include "Math.hpp"
#include <Vcl.Menus.hpp>
#include "GLCadencer.hpp"
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TGLScene *GLScene1;
    TGLSceneViewer *GLSceneViewer1;
    TGLCamera *GLCamera1;
    TGLCube *GLCube1;
    TGLSphere *GLSphere1;
    TGLCamera *GLCamera2;
    TGLLightSource *GLLightSource1;
    TGLLightSource *GLLightSource2;
    TMainMenu *MainMenu1;
    TMenuItem *Cube1;
    TMenuItem *Sphere1;
    TMenuItem *GoToTheCube1;
    TMenuItem *NotFocus1;
    TMenuItem *GoToTheSphere1;
    TMenuItem *NotFocus2;
    TGLCadencer *GLCadencer1;
    void __fastcall GoToTheCube1Click(TObject *Sender);
    void __fastcall GoToTheSphere1Click(TObject *Sender);
    void __fastcall NotFocus1Click(TObject *Sender);
    void __fastcall NotFocus2Click(TObject *Sender);
    void __fastcall GLCadencer1Progress(TObject *Sender, const double deltaTime, const double newTime);
 
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
VolodyaBuzin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с подключением tefteli Общие вопросы Delphi 0 19.10.2012 18:29
Движение камеры мышкой pufystyj Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 19.01.2012 23:19
Проблемы с подключением БД к делфи Alegria Помощь студентам 1 17.05.2011 22:06
Проблемы с подключением Катрина БД в Delphi 3 19.05.2008 00:57
Движение камеры LepihinMS Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 16.03.2007 20:46