0 / 0 / 0
Регистрация: 01.08.2011
Сообщений: 8

Direct3D и необработанные исключения

05.08.2011, 17:25. Показов 962. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Direct3D начал изучать опять же - только что. И на примитивнейшем, казалось бы, примере, пишет ошибку.
Скриншот ошибки.
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
#include "stdafx.h"
HWND MainWindowHandle = 0; // дескриптор окна
MSG msg; // код сообщения
WNDCLASSEX wc; // Структура с данными об окне
D3DPRESENT_PARAMETERS d3; // Структура с данными для Direct3D
LRESULT __stdcall WndProc (HWND MainWindowHandle, UINT msg, WPARAM wParam, LPARAM lParam) {
  switch (msg) {
  case WM_DESTROY:
    PostQuitMessage(0);
    return 0;
  }
  return DefWindowProc(MainWindowHandle,msg,wParam,lParam);
}
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow) {
ZeroMemory(&wc,sizeof(wc));
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_OWNDC;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground=(HBRUSH)CreateSolidBrush(RGB(190,245,116));
  wc.hCursor = LoadCursor(0,IDC_ARROW);
  wc.hIcon = LoadIcon(0,IDI_APPLICATION);
wc.hInstance = hInstance;
wc.lpszClassName = L"class";
wc.lpszMenuName = 0;
  RegisterClassEx(&wc);
  MainWindowHandle = CreateWindow(L"class",L"Заголовок",WS_OVERLAPPEDWINDOW,0,0,1200,800,0,0,hInstance,0);
  ShowWindow(MainWindowHandle,nCmdShow);
  UpdateWindow(MainWindowHandle);
  IDirect3D9* d3d = 0; // объект Direct3D
  IDirect3DDevice9* dev = 0; // устройство (видеокарта)
  d3d = Direct3DCreate9(D3D_SDK_VERSION);
ZeroMemory(&d3,sizeof(d3));
d3.BackBufferWidth = 1200;
d3.BackBufferHeight = 1000;
d3.BackBufferFormat = D3DFMT_A8R8G8B8;
d3.BackBufferCount = 1;
d3.MultiSampleType = D3DMULTISAMPLE_NONE;
d3.MultiSampleQuality = 0;
d3.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3.Windowed = FALSE;
d3.EnableAutoDepthStencil = true;
d3.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
d3.hDeviceWindow = MainWindowHandle;
d3.Flags = D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL;
d3.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_REF,MainWindowHandle,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3, &dev);
  while (1) {
    if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
      if (msg.message == WM_QUIT) break;
      TranslateMessage(&msg);
      DispatchMessage(&msg);
    }
dev->Clear(0,0,D3DCLEAR_TARGET,D3DCOLOR_ARGB(0xff,255,255,255),1.0f,0);
dev->BeginScene();
dev->EndScene();
dev->Present(0,0,0,0);
   }
if (dev != 0) dev->Release();
if (d3d != 0) d3d->Release();
  return 0;
}
Причём если закомментировать эти четыре строчки, то всё работает нормально.
C++
1
2
3
4
dev->Clear(0,0,D3DCLEAR_TARGET,D3DCOLOR_ARGB(0xff,255,255,255),1.0f,0);
dev->BeginScene();
dev->EndScene();
dev->Present(0,0,0,0);
В чём дело? о_О
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.08.2011, 17:25
Ответы с готовыми решениями:

Необработанные исключения в MS Visual 2010
Причиной чего может быть это сообщение и как его решить? У меня идет проверка в 3ех мерном массиве пересечения фигур и где то при проверке...

JIT-отладчик или необработанные исключения
Писал код на c++ opengl, запускается нормально, компилится, но после закрытия окна на крестик(успешно) выскакивал jit чтобы откомпилировать...

Можно ли как-то глобально ловить необработанные исключения
Здравствуйте! Подскажите, можно ли как-то глобально ловить необработанные исключения? Работаю с сокетами и не хочется в каждом методе...

4
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
05.08.2011, 21:10
дело в том что пишет куда не положено
память не выделил???

Добавлено через 3 минуты
dev устройство то где создаешь
0
0 / 0 / 0
Регистрация: 01.08.2011
Сообщений: 8
05.08.2011, 21:23  [ТС]
C++
1
IDirect3DDevice9* dev = 0; // устройство (видеокарта)
C++
1
d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_REF,MainWindowHandle,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3,&dev);
Не то? Или надо что-то ещё?
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
05.08.2011, 21:47
не знаю может быть и то
что ты имел ввиду

Цитата Сообщение от Whisker Посмотреть сообщение
то всё работает нормально.
что создается окно directDraw???
если да то смотри что происходит
у тебя все создалось
потом идет цикл обработки сообщений
Цитата Сообщение от Whisker Посмотреть сообщение
while (1) {
if (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
if (msg.message == WM_QUIT) break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
и ждем когда окно(главное разрушится)
а после этого
Цитата Сообщение от Whisker Посмотреть сообщение
dev->Clear(0,0,D3DCLEAR_TARGET,D3DCOLOR_ARGB (0xff,255,255,255),1.0f,0);
dev->BeginScene();
dev->EndScene();
dev->Present(0,0,0,0);
скорее всего устройства уже нет
посмотри как работать может что то и найдешь
http://www.firststeps.ru/mfc/directx/directx1.html
0
0 / 0 / 0
Регистрация: 01.08.2011
Сообщений: 8
07.08.2011, 17:59  [ТС]
В общем, как выяснилось, ошибка в CreateDevice. Забыл проверку поставить.. А в чём ошибка - не пойму.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
d3ddm.Width = 800;
d3ddm.Height = 600;
d3ddm.RefreshRate = 0;
d3ddm.Format = D3DFMT_R8G8B8;
d3.BackBufferWidth = d3ddm.Width;
d3.BackBufferHeight = d3ddm.Height;
d3.BackBufferFormat = d3ddm.Format;
d3.MultiSampleType = D3DMULTISAMPLE_NONE;
d3.MultiSampleQuality = 0;
d3.SwapEffect = D3DSWAPEFFECT_FLIP;
d3.Windowed = false;
d3.EnableAutoDepthStencil = true;
d3.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
d3.hDeviceWindow = MainWindowHandle;
d3.Flags = D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL;
d3.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
if (FAILED(d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_REF,MainWindowHandle,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3, &dev))) {
MessageBox(0,L"Ошибка CreateDevice! Приносим свои извинения",L"Ошибка Direct3D",0);
}
Добавлено через 4 часа 56 минут
Вопрос снят, удалось решить самому...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.08.2011, 17:59
Помогаю со студенческими работами здесь

Организация собственного исключения и передача в него исходного исключения
Для обработки исключений при работе с БД я создал собственное исключение: public class SQLEntityException : ApplicationException ...

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

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

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

Инициализация Direct3D на С++
Столкнулся с проблемами при изучении DirectX. Останавился на инициализации Direct3D, потому что 1. Пробую пример из самплов SDK - все...


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

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

Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru