Member
Сообщений: 26
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.05.2006
|
Direct 3D вывод объекта -
04.06.2006, 17:53
Помогите!
Программа не хочет вы водить фигурку на экран.
Фигурка является мешем и загружается и файла с расширением *.Х
Создается видовое окно, но объект в него не загружается.
Программа компилируется без ошибок, предупреждений, прочего.
Код программы
Код:
Главный модуль программы
#pragma warn -pch
#define INITGUID
#include <d3drmwin.h>
#include <vclvcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
Код:
Заголовочный файл
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <vclClasses.hpp>
#include <vclControls.hpp>
#include <vclStdCtrls.hpp>
#include <vclForms.hpp>
#include <vclExtCtrls.hpp>
#include <vclComCtrls.hpp>
#include <d3drmwin.h>
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormDestroy(TObject *Sender);
void __fastcall FormPaint(TObject *Sender);
void __fastcall FormResize(TObject *Sender);
private: // User declarations
LPDIRECT3DRM IRM;
LPDIRECTDRAWCLIPPER IClipper;
LPDIRECT3DRMDEVICE IRMDevice;
LPDIRECT3DRMVIEWPORT IRMVport;
LPDIRECT3DRMFRAME IScene;
LPDIRECT3DRMFRAME ICamera;
void __fastcall CreateScene();
void __fastcall RenderLoop(TObject* Sender, bool &Done);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Код:
Модуль реализации
#include <vclvcl.h>
#include <d3drmwin.h>
#include <float.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
_control87(MCW_EM, MCW_EM);
Direct3DRMCreate(&IRM);
DirectDrawCreateClipper(0, &IClipper, NULL);
IClipper->SetHWnd(0, Handle);
IRM->CreateDeviceFromClipper(IClipper, NULL, 1024, 720, &IRMDevice);
IRM->CreateFrame(NULL, &IScene);
IRM->CreateFrame(IScene, &ICamera);
ICamera->SetPosition(IScene, 0, 0, -1.5);
IRM->CreateViewport(IRMDevice, ICamera, 10,10,
ClientWidth-20, ClientHeight-50, &IRMVport);
CreateScene();
Application->OnIdle = RenderLoop;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CreateScene()
{
LPDIRECT3DRMLIGHT ILight;
IRM->CreateLightRGB(D3DRMLIGHT_POINT, 1, 1, 1, &ILight);
ICamera->AddLight(ILight);
ILight->Release();
LPDIRECT3DRMFRAME IFrame;
IRM->CreateFrame(IScene, &IFrame);
IFrame->SetRotation(IScene, 0, 1, 0, -0.05);
LPDIRECT3DRMMESHBUILDER IBuilder;
IRM->CreateMeshBuilder(&IBuilder);
IBuilder->Load("airplane2.x", NULL, D3DRMLOAD_FROMFILE, NULL,NULL);
IFrame->AddVisual(IBuilder);
IScene->SetSceneBackgroundRGB(0.5,0.2,1);
IFrame->Release();
IBuilder->Release();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
IScene->Release();
ICamera->Release();
IRMVport->Release();
IRMDevice->Release();
IClipper->Release();
IRM->Release();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RenderLoop(TObject* Sender , bool &Done)
{
IRM->Tick(1);
/*IScene->Move(1);
IRMVport->Clear();
IRMVport->Render(IScene);
IRMDevice->Update();
*/
if(Active) Done = false;
else Done = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender)
{
LPDIRECT3DRMWINDEVICE IWinDevice = NULL;
IRM->QueryInterface(IID_IDirect3DRMWinDevice,(void**) &IWinDevice);
if(IWinDevice)
{
PAINTSTRUCT ps;
BeginPaint(Handle, &ps);
IWinDevice->HandlePaint(ps.hdc);
EndPaint(Handle, &ps);
IWinDevice->Release();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormResize(TObject *Sender)
{
IRMVport->Configure(10,10,ClientWidth-20, ClientHeight-50);
}
PS: ДОполнительно к проекту подключаются библиотеки ddraw.lib и d3drm.lib находящиеся по адрессу BorlandLibPsdk.
Файл d3drmwin.h взят из DirectX 9 SDK предварительно скопировав его в BorlandInclude
|
|
|
Member
Сообщений: 26
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.05.2006
|
Direct 3D вывод объекта -
04.06.2006, 17:53
Помогите!
Программа не хочет вы водить фигурку на экран.
Фигурка является мешем и загружается и файла с расширением *.Х
Создается видовое окно, но объект в него не загружается.
Программа компилируется без ошибок, предупреждений, прочего.
Код программы
Код:
Главный модуль программы
#pragma warn -pch
#define INITGUID
#include <d3drmwin.h>
#include <vclvcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
Код:
Заголовочный файл
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <vclClasses.hpp>
#include <vclControls.hpp>
#include <vclStdCtrls.hpp>
#include <vclForms.hpp>
#include <vclExtCtrls.hpp>
#include <vclComCtrls.hpp>
#include <d3drmwin.h>
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormDestroy(TObject *Sender);
void __fastcall FormPaint(TObject *Sender);
void __fastcall FormResize(TObject *Sender);
private: // User declarations
LPDIRECT3DRM IRM;
LPDIRECTDRAWCLIPPER IClipper;
LPDIRECT3DRMDEVICE IRMDevice;
LPDIRECT3DRMVIEWPORT IRMVport;
LPDIRECT3DRMFRAME IScene;
LPDIRECT3DRMFRAME ICamera;
void __fastcall CreateScene();
void __fastcall RenderLoop(TObject* Sender, bool &Done);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Код:
Модуль реализации
#include <vclvcl.h>
#include <d3drmwin.h>
#include <float.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
_control87(MCW_EM, MCW_EM);
Direct3DRMCreate(&IRM);
DirectDrawCreateClipper(0, &IClipper, NULL);
IClipper->SetHWnd(0, Handle);
IRM->CreateDeviceFromClipper(IClipper, NULL, 1024, 720, &IRMDevice);
IRM->CreateFrame(NULL, &IScene);
IRM->CreateFrame(IScene, &ICamera);
ICamera->SetPosition(IScene, 0, 0, -1.5);
IRM->CreateViewport(IRMDevice, ICamera, 10,10,
ClientWidth-20, ClientHeight-50, &IRMVport);
CreateScene();
Application->OnIdle = RenderLoop;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CreateScene()
{
LPDIRECT3DRMLIGHT ILight;
IRM->CreateLightRGB(D3DRMLIGHT_POINT, 1, 1, 1, &ILight);
ICamera->AddLight(ILight);
ILight->Release();
LPDIRECT3DRMFRAME IFrame;
IRM->CreateFrame(IScene, &IFrame);
IFrame->SetRotation(IScene, 0, 1, 0, -0.05);
LPDIRECT3DRMMESHBUILDER IBuilder;
IRM->CreateMeshBuilder(&IBuilder);
IBuilder->Load("airplane2.x", NULL, D3DRMLOAD_FROMFILE, NULL,NULL);
IFrame->AddVisual(IBuilder);
IScene->SetSceneBackgroundRGB(0.5,0.2,1);
IFrame->Release();
IBuilder->Release();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
IScene->Release();
ICamera->Release();
IRMVport->Release();
IRMDevice->Release();
IClipper->Release();
IRM->Release();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RenderLoop(TObject* Sender , bool &Done)
{
IRM->Tick(1);
/*IScene->Move(1);
IRMVport->Clear();
IRMVport->Render(IScene);
IRMDevice->Update();
*/
if(Active) Done = false;
else Done = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender)
{
LPDIRECT3DRMWINDEVICE IWinDevice = NULL;
IRM->QueryInterface(IID_IDirect3DRMWinDevice,(void**) &IWinDevice);
if(IWinDevice)
{
PAINTSTRUCT ps;
BeginPaint(Handle, &ps);
IWinDevice->HandlePaint(ps.hdc);
EndPaint(Handle, &ps);
IWinDevice->Release();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormResize(TObject *Sender)
{
IRMVport->Configure(10,10,ClientWidth-20, ClientHeight-50);
}
PS: ДОполнительно к проекту подключаются библиотеки ddraw.lib и d3drm.lib находящиеся по адрессу BorlandLibPsdk.
Файл d3drmwin.h взят из DirectX 9 SDK предварительно скопировав его в BorlandInclude
|
|
|
Member
Сообщений: 26
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.05.2006
|

05.06.2006, 14:25
Отзавитесь хоть кто-нибуть
|
|
|
Member
Сообщений: 26
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.05.2006
|

05.06.2006, 14:25
Отзавитесь хоть кто-нибуть
|
|
|
Опции темы |
|
Опции просмотра |
Линейный вид
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
|