На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование графики"
1) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с чтением, сохранением, обработкой, созданием, отрисовкой графической информации (в том числе - 3D [OpenGL, Direct3D] и анимации [в т.ч. VFW, DirectShow, OpenDML]).
Флэш обсуждают здесь!.

2) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе.

3) Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно.



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

    CPP-файл:
    ExpandedWrap disabled
      #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-файл:
    ExpandedWrap disabled
      #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
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0183 ]   [ 15 queries used ]   [ Generated: 16.04.24, 14:10 GMT ]