Форум программистов, компьютерный форум, киберфорум
Наши страницы
DirectX
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/12: Рейтинг темы: голосов - 12, средняя оценка - 4.67
STiLKER321
2 / 2 / 0
Регистрация: 26.05.2011
Сообщений: 12
#1

инициализация DirectX

29.11.2011, 16:39. Просмотров 2370. Ответов 9
Метки нет (Все метки)

Я недавно начал заниматься DirectX на C++.Я уже перепробовал кучу разных кодов, но компилятор постоянно выдает ошибки. Может мне кто-нибудь помочь и выложить пример инпциализации DirectX. Если чо, то среда у меня dev-c++.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2011, 16:39
Ответы с готовыми решениями:

Инициализация DirectX 11
Доброго времени суток. Пробую освоить DirectX 11 и решил для начала покопаться...

Инициализация DirectX 12
Решил выложить нормальный, максимально упрощённый код инициализации нового API...

Инициализация DirectX 9
когда создаю устройство с флагом D3DCREATE_HARDWARE_VERTEXPROCESSING приложение...

Directx 9 - Инициализация
Уважаемые форумчане прошу помочь мне с д9 только начал изучать но возникли...

Инициализация directX
Здравствуйте. Делал инициализацию directX по книге Горнакова. Ошибки я...

9
Els
1 / 1 / 0
Регистрация: 24.07.2011
Сообщений: 35
29.11.2011, 17:59 #2
Ошибки в студию
0
programina
2049 / 604 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
29.11.2011, 20:53 #3
Скачай здесь библиотеки и либы для MinGW http://www.dgrigoriadis.net/post/200...r-Dev-Cpp.aspx и установи через дев или просто двойным кликом
1
STiLKER321
2 / 2 / 0
Регистрация: 26.05.2011
Сообщений: 12
30.11.2011, 08:10  [ТС] #4
я скачал файлы, установил, но все равно не хочет. вот такой у меня код не компилируеться.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "dinput.lib")
#include <windows.h>
#include <d3d9.h>
 
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
 
char szClassName[ ] = "WindowsApp";
 
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)
 
{
    HWND hwnd;            
    MSG msg;          
    WNDCLASSEX wc;        
 
   
    wc.hInstance = hThisInstance;
    wc.lpszClassName = szClassName;
    wc.lpfnWndProc = WindowProcedure;      
    wc.style = CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;                
    wc.cbSize = sizeof (WNDCLASSEX);
 
    wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wc.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor (NULL, IDC_ARROW);
    wc.lpszMenuName = NULL;                 
    wc.cbClsExtra = 0;                      
    wc.cbWndExtra = 0;                      
   
    wc.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
 
    if (!RegisterClassEx (&wc))
        return 0;
 
    hwnd = CreateWindowEx (
           0,                   
           szClassName,         
           "Basic window for DirectX",       
           WS_OVERLAPPEDWINDOW, 
           CW_USEDEFAULT,       
           CW_USEDEFAULT,       
           525,                 
           375,                
           HWND_DESKTOP,        
           NULL,                
           hThisInstance,       
           NULL                 
           );
              
    ShowWindow (hwnd, nFunsterStil);
    UpdateWindow(hwnd);
    
    IDirect3D9* d3d = NULL;
    IDirect3DDevice9* dev = NULL;
    
   d3d = Direct3DCreate9(D3D_SDK_VERSION);
    
    D3DPRESENT_PARAMETERS pp;
    ZeroMemory(&pp, sizeof(pp));
           pp.BackBufferWidth = 525;
           pp.BackBufferHeight = 375;
           pp.BackBufferFormat = D3DFMT_X8R8G8B8;
           pp.BackBufferCount = 1;
           pp.SwapEffect = D3DSWAPEFFECT_DISCARD;
           pp.hDeviceWindow = hwnd;
           pp.Windowed = true;
           
d3d -> CreateDevice(D3DADAPTER_DEFAULT,
                        D3DDEVTYPE_HAL,
                        hwnd,
                        D3DCREATE_HARDWARE_VERTEXPROCESSING,
                        &pp,
                        &dev);
 
    while (GetMessage (&msg, NULL, 0, 0))
    {
        
        TranslateMessage(&msg);
        
        DispatchMessage(&msg);
        dev -> Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 255, 50), 1.0F, 0);
        
        dev ->BeginScene();
        dev -> EndScene();
        
        dev -> Present(NULL, NULL, NULL, NULL);
        
        if(dev != NULL)
           dev -> Release();
        if(d3d != NULL)
           d3d -> Release();
        
    }
 
    
    return msg.wParam;
}
 
 
 
 
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg)                 
    {
        case WM_DESTROY:
            PostQuitMessage (0);       
            break;
        default:                     
            return DefWindowProc (hwnd, msg, wParam, lParam);
    }
 
    return 0;
}
[Linker error] undefined reference to `Direct3DCreate9@4'
0
MaratZahidylin
20 / 19 / 0
Регистрация: 04.08.2011
Сообщений: 94
30.11.2011, 10:13 #5
Здравствуйте!

Вообще я сам не очень опытный, так что не претендую на истину, но все же.

По моему эта ошибка означает что компилятору такая функция не знакома `Direct3DCreate9@4' - и значит вы не правильно подключили библиотеки директа.

Во первых добавьте вот это (без этого заголовка у меня тоже не пашет)
#include "d3dx9.h"

и соответственно добавьте еще библиотеку d3dx9.lib (я добавляю в настройках проекта - но врядли ошибка из-за #pragma comment)
0
programina
2049 / 604 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
30.11.2011, 18:07 #6
Цитата Сообщение от STiLKER321 Посмотреть сообщение
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "dinput.lib")
Так подключаются либы в Visual Studio, а у вас DevC++. Надо подключать вот так:
Проект > Параметры проекта > Параметры > Добавить библиотеку
Указываете файлы, кот. появились после установки девпака в папке Dev_Cpp/lib:
libd3d9.a
libd3dx9.a
libdinput.a
libdinput8.a
libdxguid.a

Цитата Сообщение от STiLKER321 Посмотреть сообщение
[Linker error] undefined reference to `Direct3DCreate9@4'
Говорит о том что не подключена библиотека отвечающая за Direct3DCreate9

Подключите библиотеки и у вас должно заработать

Добавлено через 37 минут
Даже если бы вы скомпилировали ваша программа все равно вылетела бы, потомучто:
C++
1
2
3
4
    if(dev != NULL)
        dev -> Release();
    if(d3d != NULL)
        d3d -> Release();
надо ставить после цикла While, а НЕ в нем.
0
programina
2049 / 604 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
30.11.2011, 18:23 #7
Вот сделала проект из вашего кода, очень даже работает после исправлений, не забудьте исправить пути к либам на свои
1
Вложения
Тип файла: zip pro.zip (4.9 Кб, 80 просмотров)
programina
2049 / 604 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
30.11.2011, 18:28 #8
Вот ваша программа в работе:
PS: cкажите +1 Спасибо, если я вам помогла.
0
Миниатюры
инициализация DirectX  
N@t@lk@
3 / 3 / 0
Регистрация: 30.11.2011
Сообщений: 17
03.12.2011, 13:17 #9
А как подключать библиотеки в Delphi?
1
programina
2049 / 604 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
03.12.2011, 13:31 #10
Цитата Сообщение от N@t@lk@ Посмотреть сообщение
А как подключать библиотеки в Delphi?
Cпросите в этом разделе: http://www.cyberforum.ru/delphi-beginners/
Там обсуждаются вопросы связанные с Делфи
1
03.12.2011, 13:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2011, 13:31

Инициализация DirectX в C# на Panel
Недавно начал разбираться с directX под C#. Помогите пожалуйста...

DirectX и C#. Инициализация на Panel (Непонятки)
только начинаю изучать C#. делаю всё как в мануалах...перерыл много форумов.......

Инициализация простых шейдеров в DirectX 11
Пытаюсь разобраться в DirectX 11 по учебнику Франка Луны. В первом их примере...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru