Форум программистов, компьютерный форум, киберфорум
DirectX
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
Программист TH
 Аватар для DanUnited
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537

VC++ DirectX SDK (DirectX9)

07.01.2011, 19:57. Показов 3674. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем !
В этом примере кода я пытался тупо нарисовать треугольник:
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
// DirectX.cpp: определяет точку входа для приложения.
//
 
#include "stdafx.h"
#include "DirectX.h"
/*DirectX COmponents*/
#include <d3d9.h>
#pragma comment(lib,"d3d9.lib")
LPDIRECT3D9 pDirect3D = NULL;
LPDIRECT3DDEVICE9 pDirect3DDevice = NULL;
LPDIRECT3DVERTEXBUFFER9 pBufferVershin =NULL;
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)
/*End DirectX*/
#define MAX_LOADSTRING 100
HINSTANCE hInst;                                // текущий экземпляр
TCHAR szTitle[MAX_LOADSTRING];                  // Текст строки заголовка
TCHAR szWindowClass[MAX_LOADSTRING];            // имя класса главного окна
// Отправить объявления функций, включенных в этот модуль кода:
ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
 
/*структура наших вершин*/
struct CUSTOMVERTEX
{
 
/*float X,Y,Z;
float rhw;
DWORD color;
float tu,tv;*/
    float x,y,z,rhw;
    DWORD color;
};
 
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_SOFTWARE_VERTEXPROCESSING,&Direct3DParametr,&pDirect3DDevice ))) return E_FAIL;
    return S_OK;
}
HRESULT InitialBufferVershin()
{
 CUSTOMVERTEX Vershin[] = 
 {
     {300.0f,300.0f,0.5f,1.0f,0x00000fff},//A
     {150.0f,300.0f,0.5f,1.0f,0x00000fff},//B
     {150.0f,150.0f,0.5f,1.0f,0x00000fff},//C
 };
 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;
}
void DrawVertex()
{
pDirect3DDevice->SetStreamSource(0,pBufferVershin,0,sizeof(CUSTOMVERTEX));
pDirect3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
pDirect3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,1);
}
void RenderingDirect3D()
{
    if(pDirect3DDevice==NULL)return;
    pDirect3DDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(255,255,255),1.0f,0);
    pDirect3DDevice->BeginScene();
    //прорисовка сцены
    DrawVertex();
    pDirect3DDevice->EndScene();
    pDirect3DDevice->Present(NULL,NULL,NULL,NULL);
 
}
void DeleteDirect3D()
{
    if(pBufferVershin!=NULL)pBufferVershin->Release();
    if(pDirect3DDevice!=NULL)pDirect3DDevice->Release();
    if(pDirect3D!=NULL)pDirect3D->Release();
}
 
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR    lpCmdLine,int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
 
    // TODO: разместите код здесь.
    MSG msg;
    HACCEL hAccelTable;
 
    // Инициализация глобальных строк
    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadString(hInstance, IDC_DIRECTX, szWindowClass, MAX_LOADSTRING);
    MyRegisterClass(hInstance);
 
    // Выполнить инициализацию приложения:
    if (!InitInstance (hInstance, nCmdShow))
    {
        return FALSE;
    }
 
    hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_DIRECTX));
 
 
    // Цикл основного сообщения:
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        
    }
 
    return (int) msg.wParam;
}
ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wcex;
 
    wcex.cbSize = sizeof(WNDCLASSEX);
 
    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_DIRECTX));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = MAKEINTRESOURCE(IDC_DIRECTX);
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
 
    return RegisterClassEx(&wcex);
}
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)/*Создание окна*/
{
   HWND hWnd;
   MSG msg;
   hInst = hInstance; // Сохранить дескриптор экземпляра в глобальной переменной
   hWnd = CreateWindow( szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0,500, 400, NULL, NULL, hInstance, NULL);
   if (!hWnd)
   {
      return FALSE;
   }
   if(SUCCEEDED(InitialDirect3D(hWnd)))
   {
       if(SUCCEEDED(InitialBufferVershin()))
       {
       ShowWindow(hWnd,SW_SHOWDEFAULT);
       UpdateWindow(hWnd);
       ZeroMemory(hWnd,SW_SHOWDEFAULT);
       while (msg.message!=WM_QUIT)
       {
           if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
           {
               TranslateMessage(&msg);
               DispatchMessage(&msg);
           }
           else RenderingDirect3D();
       /*ShowWindow(hWnd, nCmdShow);
       UpdateWindow(hWnd);*/
       }
       }}
  /* */
   return 0;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{/*События главного окна*/
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
 
    switch (message)
    {
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // Разобрать выбор в меню:
        switch (wmId)
        {
        case IDM_EXIT:
            DestroyWindow(hWnd);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
    /*case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        // TODO: добавьте любой код отрисовки...
        //RenderingDirect3D();
        ValidateRect(hWnd,NULL);
        EndPaint(hWnd, &ps);
        break;*/
    case WM_DESTROY:
        DeleteDirect3D();
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
К сожалению отрисовки не происходит, подскажите почему ? (если есть знатоки DirectX)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.01.2011, 19:57
Ответы с готовыми решениями:

DirectX SDK
Здравствуйте! У меня есть Visual C++ 6 и мне нужен DirectX SDK для него. Какую версию directx sdk надо взять ?

Работа с DirectX SDK
А вот такой вопрос, какой тип проекта обычно используется для приложений с DirectX SDK? Среда Visual Studio 2008. Просто не знаю как...

C++ и DirectX SDK и OpenGL
Всем Привет. Изучая С++ я узнал про DirectX SDK.Захотелось попробовать ,но такая вот проблема я по С++ остановился только на...

7
0 / 0 / 0
Регистрация: 06.01.2011
Сообщений: 21
08.01.2011, 00:15
Цитата Сообщение от DanUnited Посмотреть сообщение
Привет всем !
В этом примере кода я пытался тупо нарисовать треугольник:
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
// DirectX.cpp: определяет точку входа для приложения.
//
 
#include "stdafx.h"
#include "DirectX.h"
/*DirectX COmponents*/
#include <d3d9.h>
#pragma comment(lib,"d3d9.lib")
LPDIRECT3D9 pDirect3D = NULL;
LPDIRECT3DDEVICE9 pDirect3DDevice = NULL;
LPDIRECT3DVERTEXBUFFER9 pBufferVershin =NULL;
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)
/*End DirectX*/
#define MAX_LOADSTRING 100
HINSTANCE hInst;                                // текущий экземпляр
TCHAR szTitle[MAX_LOADSTRING];                  // Текст строки заголовка
TCHAR szWindowClass[MAX_LOADSTRING];            // имя класса главного окна
// Отправить объявления функций, включенных в этот модуль кода:
ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
 
/*структура наших вершин*/
struct CUSTOMVERTEX
{
 
/*float X,Y,Z;
float rhw;
DWORD color;
float tu,tv;*/
    float x,y,z,rhw;
    DWORD color;
};
 
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_SOFTWARE_VERTEXPROCESSING,&Direct3DParametr,&pDirect3DDevice ))) return E_FAIL;
    return S_OK;
}
HRESULT InitialBufferVershin()
{
 CUSTOMVERTEX Vershin[] = 
 {
     {300.0f,300.0f,0.5f,1.0f,0x00000fff},//A
     {150.0f,300.0f,0.5f,1.0f,0x00000fff},//B
     {150.0f,150.0f,0.5f,1.0f,0x00000fff},//C
 };
 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;
}
void DrawVertex()
{
pDirect3DDevice->SetStreamSource(0,pBufferVershin,0,sizeof(CUSTOMVERTEX));
pDirect3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
pDirect3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,1);
}
void RenderingDirect3D()
{
    if(pDirect3DDevice==NULL)return;
    pDirect3DDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(255,255,255),1.0f,0);
    pDirect3DDevice->BeginScene();
    //прорисовка сцены
    DrawVertex();
    pDirect3DDevice->EndScene();
    pDirect3DDevice->Present(NULL,NULL,NULL,NULL);
 
}
void DeleteDirect3D()
{
    if(pBufferVershin!=NULL)pBufferVershin->Release();
    if(pDirect3DDevice!=NULL)pDirect3DDevice->Release();
    if(pDirect3D!=NULL)pDirect3D->Release();
}
 
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR    lpCmdLine,int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
 
    // TODO: разместите код здесь.
    MSG msg;
    HACCEL hAccelTable;
 
    // Инициализация глобальных строк
    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadString(hInstance, IDC_DIRECTX, szWindowClass, MAX_LOADSTRING);
    MyRegisterClass(hInstance);
 
    // Выполнить инициализацию приложения:
    if (!InitInstance (hInstance, nCmdShow))
    {
        return FALSE;
    }
 
    hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_DIRECTX));
 
 
    // Цикл основного сообщения:
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        
    }
 
    return (int) msg.wParam;
}
ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wcex;
 
    wcex.cbSize = sizeof(WNDCLASSEX);
 
    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_DIRECTX));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = MAKEINTRESOURCE(IDC_DIRECTX);
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
 
    return RegisterClassEx(&wcex);
}
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)/*Создание окна*/
{
   HWND hWnd;
   MSG msg;
   hInst = hInstance; // Сохранить дескриптор экземпляра в глобальной переменной
   hWnd = CreateWindow( szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0,500, 400, NULL, NULL, hInstance, NULL);
   if (!hWnd)
   {
      return FALSE;
   }
   if(SUCCEEDED(InitialDirect3D(hWnd)))
   {
       if(SUCCEEDED(InitialBufferVershin()))
       {
       ShowWindow(hWnd,SW_SHOWDEFAULT);
       UpdateWindow(hWnd);
       ZeroMemory(hWnd,SW_SHOWDEFAULT);
       while (msg.message!=WM_QUIT)
       {
           if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
           {
               TranslateMessage(&msg);
               DispatchMessage(&msg);
           }
           else RenderingDirect3D();
       /*ShowWindow(hWnd, nCmdShow);
       UpdateWindow(hWnd);*/
       }
       }}
  /* */
   return 0;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{/*События главного окна*/
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
 
    switch (message)
    {
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // Разобрать выбор в меню:
        switch (wmId)
        {
        case IDM_EXIT:
            DestroyWindow(hWnd);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
    /*case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        // TODO: добавьте любой код отрисовки...
        //RenderingDirect3D();
        ValidateRect(hWnd,NULL);
        EndPaint(hWnd, &ps);
        break;*/
    case WM_DESTROY:
        DeleteDirect3D();
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
К сожалению отрисовки не происходит, подскажите почему ? (если есть знатоки DirectX)
Я не знаток DirectX,я OpenGl колупал недавно,потом плюнул на это все и сейчас использую готовый двиг,который поддерживает все иксы аж до 11.Нужно для себя в первую очередь задать себе вопрос для чего оно тебе нужно?.Если свой двиг делать -тогда вперед,но закончишь ли ты его и будет ли спрос в мире уже готовых опупенных движков,которые доробатываются каждый день....А вот если свою игру делать или проект для которого 3д надо,тогда двиг надо использовать.
Вообщем если интересно,могу залить свое демо.Делал я его 2 недели(не целыми днями естесно)при том,что мне по мимо двига еще пришлось с++ разбирать(до этого я на делфи кодил).
0
Программист TH
 Аватар для DanUnited
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
08.01.2011, 09:48  [ТС]
Понимаешь, я изучаю сейчас DirectX не для того, чтобы создать свою игру, которая станет мегапопулярна и была бы ошеломительна, я изучаю DirectX чтобы знать программирование на DirectX как программист. Когда я буду знать хотя бы основы, то я возможно и возьму готовый движок чтобы что-то наваять в виде игры.
Движок кончно свой скинь, интересно, посмотрим
да, и кстати бесплатные готовые движки на то и бесплатные что принципеально они неконкурентны на рынке.
Свой движок создавать - не игру воять с 3D графикой, у компаний на программирования жвижка на это уходит 20% времени )
0
0 / 0 / 0
Регистрация: 06.01.2011
Сообщений: 21
08.01.2011, 15:00
Цитата Сообщение от DanUnited Посмотреть сообщение
Понимаешь, я изучаю сейчас DirectX не для того, чтобы создать свою игру, которая станет мегапопулярна и была бы ошеломительна, я изучаю DirectX чтобы знать программирование на DirectX как программист. Когда я буду знать хотя бы основы, то я возможно и возьму готовый движок чтобы что-то наваять в виде игры.
Движок кончно свой скинь, интересно, посмотрим
да, и кстати бесплатные готовые движки на то и бесплатные что принципеально они неконкурентны на рынке.
Свой движок создавать - не игру воять с 3D графикой, у компаний на программирования жвижка на это уходит 20% времени )
http://us.ua/122569/

Сайт двига http://esenthel.com/

Поповоду бесплатных ты очень сильно ошибаешся.Купи Personal версию 150 баксов и создай весьма конкурентно способный продукт.Вообщем почитай на сайте.Вот цены http://www.esenthel.com/?id=buy.Вообще я скажу,что для нормальной разработки хватает и базовых возможностей,исходники не нужны.Но чисто с совести,когда релизить буду отдам 150баксов полюбому)))
0
Программист TH
 Аватар для DanUnited
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
08.01.2011, 17:39  [ТС]
Ok, посмотрим.
Просто, бубенчик. - ещё одна особенность. Если ты возьмёшь готовый движок, ты уже будешь не программированием заниматься, а графикой и 3D, продумыванем квестов и т.п. а ещё муторным изучением структуры чужоко движка ((( Что ни есть хорошо. ВОт тот движок и самому кстати без проблем можно создать, если обладать мозгом, там всё прикольно, но если скачать с сайта microsoft последний DirectX SDK за июль, там в примерах предоставляется половина уже тех возможностей, реализуемых в патном двиге
0
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
08.01.2011, 20:57
добрый вечер, извиняюсь за вмешательство в диалог. но как раз хотел спросить по одному вопросу ..
суть вот в чем, с чего нужно изучать создание игр. что почитать? какой движок не сильно перегружен и подойдет для обучения основных принципов? заранее спасибо за ответ .
0
Программист TH
 Аватар для DanUnited
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
09.01.2011, 19:57  [ТС]
Обычно большинство специалистов рекомендуют именно эту связку:
  • Microsoft Visual C++.
  • DirectX SDK.
В microsoftVisual C++ вы должны знать основы языка Си и немного опыта работы с WinAPI и разработки приложений под Win32.

Добавлено через 22 часа 37 минут
Я или что-то упустил или что-то ещё, но у меня компилятор на всем известную функцию
C++
1
2
3
4
5
6
7
...
hr = (*primsurf)->GetAttachedSurface(&surfcaps,backsurf);
    if(hr!=DD_OK)return FALSE;
    ClearSurface(*primsurf, 0);
    ClearSurface(*backsurf, 0); 
}else
...
Ругается:
1>------ Построение начато: проект: DirectXNew, Конфигурация: Debug Win32 ------
1>Построение начато 09.01.2011 19:48:49.
1>InitializeBuildStatus:
1> Обращение к "Debug\DirectXNew.unsuccessfulbuild" .
1>ClCompile:
1> Для всех выходных данных обновления не требуется.
1> DirectXNew.cpp
1>c:\users\admini-she\documents\visual studio 2010\projects\directxnew\directxnew\dire ctxnew.cpp(290): error C3861: ClearSurface: идентификатор не найден
1>c:\users\admini-she\documents\visual studio 2010\projects\directxnew\directxnew\dire ctxnew.cpp(291): error C3861: ClearSurface: идентификатор не найден
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:00.82
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Я уже подключал ЭТО:
C++
1
2
3
4
5
6
7
8
9
#include "stdafx.h"
#include <d3dx9.h>
#include <d3d9.h>
#include <ddraw.h>
#include "DirectXNew.h"
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")
#pragma comment(lib, "ddraw.lib")
#pragma comment(lib, "dxguid.lib")
Я блин весь интернет перелазил, но куда она пропала ?
1
6 / 6 / 2
Регистрация: 15.07.2012
Сообщений: 17
16.07.2012, 19:36
Та же самая проблема: ругается на ClearSurface. Что делать?

Добавлено через 3 часа 6 минут
Возможно, следует включить прототип функции

C++
1
BOOL ClearSurface(LPDIRECTDRAWSURFACE7 surf, int iColor);
в файл "DirectXNew.h"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.07.2012, 19:36
Помогаю со студенческими работами здесь

Установка DirectX SDK
DirectX SDK ошибка при установке This setup executable has not been packed with files and settings please use the PACKER tool to build this...

DirectX SDK урезан?
Столкнулся с проблемой: установил DirectX SDK, но при компиляции примеров из книги оказалось, что отсутствуют файлы DXUtil.h, d3dfont.h и...

Не могу скачать DirectX SDK
К сожаления оф. сайт SDK не загружается. Кинте ссылочку пожалуйста с какого-нибудь торента без вирусов.

Где скачать DirectX SDK 11?
Привет всем!Люди, где скачать DirectX SDK 11? Именно 11, а то во всех примерах,которые я последнее время осваиваю,нужно подключать...

Как установить DirectX SDK?
Привет всем. скачал DirectX SDK june 2010. Хочу установить на Windows 8. Начал требовать .NET Framework 3.5 для установки. Интернета на...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru