Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Direct 3D вывод объекта
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Setter Setter вне форума
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
Ответить с цитированием
  (#2 (permalink)) Старый
Setter Setter вне форума
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
Ответить с цитированием
  (#3 (permalink)) Старый
Setter Setter вне форума
Member
 
Сообщений: 26
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.05.2006
По умолчанию 05.06.2006, 14:25

Отзавитесь хоть кто-нибуть
Ответить с цитированием
Ads
  (#4 (permalink)) Старый
Setter Setter вне форума
Member
 
Сообщений: 26
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.05.2006
По умолчанию 05.06.2006, 14:25

Отзавитесь хоть кто-нибуть
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с direct X smeilkon Софт 18 19.07.2011 21:23
DIRECT X.приоритетная установка? Сергей 66 Драйвера 1 10.01.2011 02:16
direct x lbj Любые вопросы от новичков 2 09.10.2010 17:36
Direct X 10-где взять и как установить? San4o Любые вопросы от новичков 11 25.07.2010 17:08
Как удалить Direct с компьютера? Rustamir Видеокарты 13 26.04.2010 20:12
Прошу помощи с Direct imported_Scorpi Видеокарты 2 10.08.2009 00:29
Direct X10 под WinXP PES2009 Софт и программы 3 02.08.2009 21:41
Существует ли direct X10 для ХР? sergey111 Техническая поддержка 6 26.04.2008 23:10
Прозрачность в Direct 9x glist Программирование графики 1 20.05.2006 16:54
Вывод в поток объекта класса, который в namespace alexandroid C++ Builder 0 20.07.2004 00:11
Как работать с direct под delhi Anonymous Программирование графики 8 07.05.2003 23:29



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов