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 link "GLMaterial"
#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; }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta,
TPoint &MousePos, bool &Handled)
{
if(GLSceneViewer1->MouseInControl==true) GLSceneViewer1->Camera->AdjustDistanceToTarget(Power(1.1,-WheelDelta/120));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LoadImageOnCube1Click(TObject *Sender)
{
if(OpenDialog1->Execute())
{
GLCube1->Material->MaterialLibrary = GLMaterialLibrary1;
GLMaterialLibrary1->Materials->Add
{
Name = 'CubeTexture';
Material–>Texture–>Image–>LoadFromFile(OpenDialog1->FileName);
Material–>Texture–>TextureMode = tmModulate;
Material–>BlendingMode = bmTransparency;
Material–>Texture–>Disabled = False;
}
}
}
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"
#include "GLMaterial.hpp"
#include <Vcl.Dialogs.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;
TOpenDialog *OpenDialog1;
TGLMaterialLibrary *GLMaterialLibrary1;
TMenuItem *LoadImageOnCube1;
TMenuItem *LoadImageOnSphere1;
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);
void __fastcall FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta,
TPoint &MousePos, bool &Handled);
void __fastcall LoadImageOnCube1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
И вдобавок - почему не работает клавиатура, хотя библиотека GLKeyboard везде прописана?
Ошибки:
Код:
Checking project dependencies...
Compiling Project1.cbproj (Debug, Win32)
bcc32 command line for "Unit1.cpp"
c:\program files (x86)\embarcadero\studio\20.0\bin\bcc32.exe -D_DEBUG -DUSEPACKAGES -n.\Win32\Debug -I"c:\program files
(x86)\embarcadero\studio\20.0\include\windows\vcl";"c:\program files (x86)\embarcadero\studio\20.0\include";"c:\program files
(x86)\embarcadero\studio\20.0\include\dinkumware";"c:\program files (x86)\embarcadero\studio\20.0\include\windows\crtl";"c:\program files
(x86)\embarcadero\studio\20.0\include\windows\sdk";"c:\program files (x86)\embarcadero\studio\20.0\include\windows\rtl";"c:\program files
(x86)\embarcadero\studio\20.0\include\windows\vcl";"c:\program files (x86)\embarcadero\studio\20.0\include\windows\fmx";
C:\Users\Public\Documents\Embarcadero\Studio\20.0\hpp\Win32;D:\GLScene\include\win32;C:\Users\Public\Documents\Embarcadero\Studio\20.0\hpp\Win32 -y
-Q -k -r- -c -tR -tM -tU -tW -C8 -o.\Win32\Debug\Unit1.obj -w-par -Od -v -vi- -H=.\Win32\Debug\Project1.pch -H Unit1.cpp
[bcc32 Error] Unit1.cpp(82): E2235 Member function must be called or its address taken
Full parser context
Unit1.cpp(77): parsing: void _fastcall TForm1::LoadImageOnCube1Click(TObject *)
[bcc32 Error] Unit1.cpp(82): E2379 Statement missing ;
Full parser context
Unit1.cpp(77): parsing: void _fastcall TForm1::LoadImageOnCube1Click(TObject *)
[bcc32 Warning] Unit1.cpp(83): W8098 Multi-character character constant
Full parser context
Unit1.cpp(77): parsing: void _fastcall TForm1::LoadImageOnCube1Click(TObject *)
[bcc32 Error] Unit1.cpp(83): E2129 Character constant too long (or empty)
Full parser context
Unit1.cpp(77): parsing: void _fastcall TForm1::LoadImageOnCube1Click(TObject *)
Failed
Elapsed time: 00:00:04.5