Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
3 / 3 / 1
Регистрация: 30.04.2011
Сообщений: 51

Инициализация Direct3D на С++

30.05.2011, 02:27. Показов 3362. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Столкнулся с проблемами при изучении DirectX. Останавился на инициализации Direct3D, потому что
1. Пробую пример из самплов SDK - все работает, если что то изменяю, запускаю (выдается ошибка), отменяю действие и опять запускаю, ошибка остается, пример становится не рабочим. Первый раз переустановил SDK, потом стал делать копии примеров.

2. Примеры из книг Frank D. Luna и Фленова, с моими знаниями не отредоктировать под MVC2008

3. Нашел пример DirectX API: Инициализация Direct3D на сайте, но он тоже не запускался и ошибка была для меня не понятная(номер строки не был указан). Методом тыка понял что загвоздка на 34ой строчке. Цитата с сайта:
Итак, программа использующая Direct3D начинается с получения указателя на интерфейс IDirect3D9. С помощью полученного объекта можно создать нужный нам объект IDirect3DDevice9. Получить указатель на IDirect3D9 можно с помощью одной из немногих функций Direct3D:

d3d = Direct3DCreate9(D3D_SDK_VERSION);
но компилятор говорит, аргумент функции Direct3DCreate9 не приемлем.

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
#include<d3d9.h>
#include<windows.h>
 
LRESULT __stdcall WndProc(HWND, UINT, WPARAM, LPARAM); 
 
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE,
                       LPSTR , int nCmdShow)
{
    int iii=1;
   WNDCLASS wc;
   wc.style = CS_OWNDC;
   wc.lpfnWndProc = WndProc;
   wc.cbClsExtra = 0;
   wc.cbWndExtra = 0;
   wc.hbrBackground = (HBRUSH)(6);
   wc.hCursor = LoadCursor(0, IDC_ARROW);
   wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
   wc.hInstance = hInstance;
   wc.lpszClassName = L"class";
   wc.lpszMenuName = NULL; 
 
   RegisterClass(&wc); 
 
   HWND hWnd = CreateWindow(L"class",L"Инициализация Direct3D",
                            WS_OVERLAPPEDWINDOW,200,100,
                            500,500,NULL,NULL,hInstance,NULL); 
 
   ShowWindow(hWnd,nCmdShow);
   UpdateWindow(hWnd); 
 
   IDirect3D9* d3d = 0;       // объект Direct3D
   IDirect3DDevice9* dev = 0; // устройство (видеокарта) 
 
//   d3d = Direct3DCreate9(D3D_SDK_VERSION); 
 
   D3DPRESENT_PARAMETERS pp;
   ZeroMemory(&pp,sizeof(pp)); 
 
   pp.BackBufferWidth = 500;
   pp.BackBufferHeight = 500;
   pp.BackBufferFormat = D3DFMT_X8R8G8B8;
   pp.BackBufferCount = 1;
   pp.SwapEffect = D3DSWAPEFFECT_DISCARD;
   pp.hDeviceWindow = hWnd;
   pp.Windowed = true; 
 
   d3d->CreateDevice(D3DADAPTER_DEFAULT,
                     D3DDEVTYPE_REF,hWnd,
                     D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                     &pp, &dev);
   MSG msg;
   while (iii)
   {
     if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
     {
       if (msg.message == WM_QUIT)
         break;
       TranslateMessage(&msg);
       DispatchMessage(&msg);
     } 
 
     dev->Clear(0,NULL,D3DCLEAR_TARGET,
                D3DCOLOR_XRGB(255,255,255),1.0f,0); 
 
     dev->BeginScene();
     dev->EndScene(); 
 
     dev->Present(NULL,NULL,NULL,NULL);
     } 
 
   if (dev != NULL)
     dev->Release();
   if (d3d != NULL)
     d3d->Release();
   return 0;
} 
 
 LRESULT __stdcall WndProc (HWND hWnd, UINT msg,
                            WPARAM wParam, LPARAM lParam)
{
   switch (msg)
   {
   case WM_DESTROY:
     PostQuitMessage(0);
     return 0;
   }
   return DefWindowProc(hWnd,msg,wParam,lParam);
}
4 Так и не понял чем отличаются главные функции
C++
1
2
3
4
5
6
7
8
9
10
int WINAPI WinMain(HINSTANCE hinstance,
                   HINSTANCE prevInstance, 
                   PSTR cmdLine,
                   int showCmd)
 
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE,
                       LPSTR , int nCmdShow)
 
 
INT WINAPI wWinMain( HINSTANCE hInst, HINSTANCE, LPWSTR, INT )
Если есть возможность, выложите пожалуйста код инициализированого Direct3D с заполниными структурами и интерфейсами. Тоесть каркас, в котором можно будет делать визуализацию.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.05.2011, 02:27
Ответы с готовыми решениями:

DirectX9 Direct3D
Здравствуйте! Возникла проблема: При загрузке х. файлов из пакета ДиректХ все нормально (тот же самый тигр). Но если я експортирую из...

Интегрирование Direct3D игры в свою программу
Здравствуйте. Я хочу интегрировать игру на Direct3D в окно своей программы. Возможно ли это?

Что такое инициализация сегментов или инициализация регистров?
Подскажите, что такое инициализация сегментов или инициализация регистров? Вот строчка программы из ассемблера: mov Ax, DATA mov DS, AX

4
3 / 3 / 1
Регистрация: 30.04.2011
Сообщений: 51
31.05.2011, 13:53  [ТС]
Вопрос все еще актуален
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
31.05.2011, 14:43
В DX SDK правильные, 100% рабочие примеры. Если у тебя они не работают, то ты что-то делаешь не так.
0
65 / 71 / 9
Регистрация: 25.06.2009
Сообщений: 244
31.05.2011, 18:43
лучше текст ошибки приведите
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
31.05.2011, 18:52
Горнаков "DirectX9 уроки программирования на c++". Основы там более или менее внятно даны. Опечатки в коде правда есть, но для общего понимания вполне неплохо написано. Да и к слову мало людей помнят наизусть, как инициализировать интерфейсы, если специально этим не занимаются. Лучше чем в документации, сэмплах и книгах хоть как не скажут(да и у вас читать код невозможно).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.05.2011, 18:52
Помогаю со студенческими работами здесь

Direct3D
Здравствуйте, после покупки системника поставили винду 7 bit32 Но при загрузке игр Lineage 2 и других по типу AION выскакивает...

Direct3D
Пытаюсь разобратся с программированием графики на Builder C++ не могу найти материала.

Qt + Direct3D
Здрасте :) Понимаю, что бред делаю, но: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include &lt;QMainWindow&gt; #include...

Direct3D.dll
Ситуация такова: В Visual Studio 2013 создаю проект, подключаю библиотеки DirectX из C:\Windows\Microsoft.NET\DirectX for Managed...

Direct3D и Многопоточность.
Всем доброго времени суток, долго искал ответ на мой вопрос с помощью Гугла, но так ничего и не разузнал, по сему решил зарегистрироваться...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru