Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DirectX + Builder 2009 
V
    Опции темы
Sharkfire
Дата 4.4.2009, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 30.11.2006
Где: Одесса

Репутация: 2
Всего: 2



Доброе время суток.
Скачал и установил
Microsoft DirectX 9 SDK (December 2006)
Прописал пути к Include и Lib в среде

с начала при компиляции не понравилось ему то что в некоторых файлах sqrtf вместе sqrt
сделал замену - скомпилилось

Пытаюсь просто инициализировать DirectX:
Код

#include <d3d9.h>
#include <d3dx9.h>

IDirect3D9 * g_pD3D = NULL;
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
//Создание объкта директикс
if(NULL==(g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)))
   {return;ShowMessage("Init failed [1]!");}
}


Ошибка:

Код

[ILINK32 Error] Error: Unresolved external 'Direct3DCreate9' referenced from C:\DOCUMENTS AND SETTINGS\АДМИНИСТРАТОР\МОИ ДОКУМЕНТЫ\RAD STUDIO\PROJECTS\DIRECTX\DEBUG\MAIN.OBJ



Что подскажите ?
PM MAIL ICQ   Вверх
SVN74
Дата 5.4.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

Репутация: 11
Всего: 18



Для DirectX лучше создавать приложения без форм, на основе WinApi (вот рабочий пример из C++ Builder 2009)
Код

// Рисуем треугольник
//-----------------------------------------------------------------------------------

#include <windows.h>         // Подключаем заголовочный файл Windows
#include <d3d9.h>            // Подключаем заголовочный файл DirectX 9 SDK
#pragma comment(lib,"d3d9.lib");

//-----------------------------------------------------------------------------------
// Глобальные переменные
//-----------------------------------------------------------------------------------

LPDIRECT3D9                 pDirect3D          = NULL;      // Direct3D объект
LPDIRECT3DDEVICE9           pDirect3DDevice    = NULL;      // Устройство
LPDIRECT3DVERTEXBUFFER9     pBufferVershin     = NULL;      // Буфер вершин

struct CUSTOMVERTEX
{
    FLOAT x, y, z, rhw; //кординаты
    DWORD color;        //цвет вершин
};

#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)

//-----------------------------------------------------------------------------------
// Функция
// InitialDirect3D()
// Инициализация Direct3D
//-----------------------------------------------------------------------------------

HRESULT InitialDirect3D( HWND hwnd )
{

    if( NULL == ( pDirect3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
        return E_FAIL;

    D3DDISPLAYMODE Display;
    if( FAILED( pDirect3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &Display ) ) )
        return E_FAIL;

    D3DPRESENT_PARAMETERS Direct3DParametr;
    ZeroMemory( &Direct3DParametr, sizeof(Direct3DParametr) );
    Direct3DParametr.Windowed         = TRUE;
    Direct3DParametr.SwapEffect       = D3DSWAPEFFECT_DISCARD;
    Direct3DParametr.BackBufferFormat = Display.Format;

    if( FAILED( pDirect3D -> CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd,
                                      D3DCREATE_HARDWARE_VERTEXPROCESSING,
                                      &Direct3DParametr, &pDirect3DDevice ) ) )
    {
        return E_FAIL;
    }

    return S_OK;
}
//---------------------------------------------------------------------------------------
// Функция
// InitialBufferVershin()
// Иннициализирует вершины
//---------------------------------------------------------------------------------------

HRESULT InitialBufferVershin()
{

    CUSTOMVERTEX Vershin[] =
    {
        { 300.0f, 300.0f, 0.5f, 1.0f, 0x00000fff, },  // А
        { 150.0f, 300.0f, 0.5f, 1.0f, 0x00000fff, },  // В
        { 150.0f, 150.0f, 0.5f, 1.0f, 0x00000fff, },  // С
        //  x       y      z    rhw      цвет

    };

    if( FAILED( pDirect3DDevice->CreateVertexBuffer( 3*sizeof(CUSTOMVERTEX),
                                                  0, D3DFVF_CUSTOMVERTEX,
                                                  D3DPOOL_DEFAULT, &pBufferVershin, NULL ) ) )
    {
        return E_FAIL;
    }
    //Блокируем
    VOID* pBV;
    if( FAILED( pBufferVershin->Lock( 0, sizeof(Vershin), (void**)&pBV, 0 ) ) )
        return E_FAIL;
    //Копируем
    memcpy( pBV, Vershin, sizeof(Vershin) );
    // Разблокируем
    pBufferVershin->Unlock();

    return S_OK;
}

//-----------------------------------------------------------------------------------
//  Функция
//  RenderingDirect3D()
//  Рисуем
//-----------------------------------------------------------------------------------

VOID RenderingDirect3D()
{

    if(pDirect3DDevice == NULL)        // Проверяем ошибки
        return;

    pDirect3DDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,255,0), 1.0f, 0 );
    // Начало сцены
    pDirect3DDevice->BeginScene();

    //  Здесь происходит прорисовка сцены
    pDirect3DDevice->SetStreamSource( 0, pBufferVershin, 0, sizeof(CUSTOMVERTEX) );
    pDirect3DDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
    pDirect3DDevice->DrawPrimitive( D3DPT_TRIANGLELIST , 0, 1 );
    //Конец сцены
    pDirect3DDevice->EndScene();

    pDirect3DDevice->Present( NULL, NULL, NULL, NULL );

}

//-----------------------------------------------------------------------------------
//  Функция
//  DeleteDirect3D()
//  Освобождает захваченные ресурсы
//-----------------------------------------------------------------------------------

VOID DeleteDirect3D()
{

    if( pBufferVershin  != NULL)
        pBufferVershin->Release();

    if( pDirect3DDevice != NULL)
        pDirect3DDevice->Release();

    if( pDirect3D != NULL)
        pDirect3D->Release();
}

//-----------------------------------------------------------------------------------
// Функция
// MainWinProc()
// Здесь происходит обработка сообщений
//-----------------------------------------------------------------------------------

LRESULT CALLBACK MainWinProc(HWND   hwnd,
                            UINT    msg,
                            WPARAM  wparam,
                            LPARAM  lparam)
{

switch(msg)
    {

     case WM_DESTROY:
        {
        DeleteDirect3D();
        PostQuitMessage(0);
        return(0);
        }
    }


return DefWindowProc(hwnd, msg, wparam, lparam);

}

//-----------------------------------------------------------------------------------
// Функция
// WinMain
// Входная точка приложения
//-----------------------------------------------------------------------------------

int WINAPI WinMain(    HINSTANCE hinstance,
                    HINSTANCE hprevinstance,
                    LPSTR lpcmdline,
                    int ncmdshow)
{

WNDCLASSEX windowsclass;  // Создаем класс
HWND       hwnd;          // Создаем дескриптор окна
MSG        msg;           // Идентификатор сообщения

// Определим класс окна WNDCLASSEX
windowsclass.cbSize         = sizeof(WNDCLASSEX);
windowsclass.style            = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
windowsclass.lpfnWndProc    = MainWinProc;
windowsclass.cbClsExtra        = 0;
windowsclass.cbWndExtra        = 0;
windowsclass.hInstance        = hinstance;
windowsclass.hIcon            = LoadIcon(NULL, IDI_APPLICATION);
windowsclass.hCursor        = LoadCursor(NULL, IDC_ARROW);
windowsclass.hbrBackground    = (HBRUSH)GetStockObject(GRAY_BRUSH);
windowsclass.lpszMenuName    = NULL;
windowsclass.lpszClassName    = "WINDOWSCLASS";
windowsclass.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);

// Зарегистрируем класс
if (!RegisterClassEx(&windowsclass))
    return(0);

// Теперь когда класс зарегестрирован можно создать окно

if (!(hwnd = CreateWindowEx(NULL,              // стиль окна
                       "WINDOWSCLASS",         // класс
                       " Урок 4. Рисуем Треугольник ", // название окна
                       WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                       300,150,                   // левый верхний угол
                       500,400,                // ширина и высота
                       NULL,                   // дескриптор родительского окна
                       NULL,                   // дескриптор меню
                       hinstance,              // дескриптор экземпляра приложения
                       NULL)))                   // указатель на данные окна
return 0;


 if( SUCCEEDED( InitialDirect3D( hwnd ) ) )
  {
       if( SUCCEEDED( InitialBufferVershin( ) ) )
        {
           ShowWindow( hwnd, SW_SHOWDEFAULT );
           UpdateWindow( hwnd );

              ZeroMemory( &msg, sizeof(msg));
              while( msg.message!=WM_QUIT)
                {
                  if(PeekMessage( &msg, NULL,0,0,PM_REMOVE ))
                   {
                      TranslateMessage( &msg );
                      DispatchMessage( &msg );
                   }
                  else
                  RenderingDirect3D();
                }
        }
  }
   return 0;
}

PM MAIL WWW   Вверх
Alexeis
Дата 5.4.2009, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 26
Всего: 459



Цитата(Sharkfire @  4.4.2009,  19:48 Найти цитируемый пост)
Прописал пути к Include и Lib в среде

  Насколько я знаю билдера и MS разные форматы lib файлов. По хорошему, для билдера нужно переделать либы. У него есть тулза implib, которая создает импорт по Dll. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
SVN74
Дата 5.4.2009, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

Репутация: 11
Всего: 18



Цитата(Alexeis @  5.4.2009,  11:38 Найти цитируемый пост)
 Насколько я знаю билдера и MS разные форматы lib файлов

Совершенно верно, у Builder(а) другие либы, их надо либо самому создавать или лучше скачать с Инета.

PM MAIL WWW   Вверх
dumb
Дата 5.4.2009, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



Код
coff2omf.exe ms.lib borland.lib

PM MAIL   Вверх
Alexeis
Дата 5.4.2009, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 26
Всего: 459



dumb, это относиться к статическим библиотекам или секции импорта тоже так исправляются? Просто секции импорта не имеют формата coff или omf, там набор имен функций отличающихся декорированием.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Sharkfire
Дата 5.4.2009, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 30.11.2006
Где: Одесса

Репутация: 2
Всего: 2



Спасибо,разобрался 
помогла ссылка:

http://www.clootie.ru/cbuilder/index.html

подключил необходимые библиотеки "Project->AddToProject"

Это сообщение отредактировал(а) Sharkfire - 7.4.2009, 15:07
PM MAIL ICQ   Вверх
dumb
Дата 8.4.2009, 05:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



Цитата(Alexeis @  5.4.2009,  12:27 Найти цитируемый пост)
это относиться к статическим библиотекам или секции импорта тоже так исправляются?
coff2omf занимается именно импортом, obj-части он не обрабатывает вроде вообще. для управления преобразованиями декора есть пара опций...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1906 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.