Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 01.08.2011
Сообщений: 8

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

05.08.2011, 17:25. Показов 984. Ответов 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
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
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
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
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
Ответ Создать тему
Новые блоги и статьи
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 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru