Понедельник, 25 Ноября 2024, 09:50

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Исправьте пожалуйста код для DirectX.
MorglodДата: Вторник, 22 Февраля 2011, 17:46 | Сообщение # 1
Вечно пилящий двиг
Сейчас нет на сайте
Пишу движок, остановился на DirectX'е
всё компилируются без ошибок, но добавить вершинные буферы не получается... angry
инициализацию я взял с какого то сайта biggrin

вот код MoRealEngine.cpp

вот код MoRealRender.h

исправьте пожалуйста код и добавьте отрисовку полигона
с меня +++++++++++++++++++++++

Добавлено (22.02.2011, 17:46)
---------------------------------------------
среда разработки microsoft visual studio 2008 express edition
windows 7 x86


вначале был #include

KornivalДата: Вторник, 22 Февраля 2011, 17:58 | Сообщение # 2
The Witcher
Сейчас нет на сайте
Quote (Morglod)
вершинные буферы не получается...

А ты и не добавляешь вершинные буферы, а просто создаешь указатель на него. Или я тебя не так понял?

Добавлено (22.02.2011, 17:58)
---------------------------------------------

Quote (Kornival)
Пишу движок, остановился на DirectX'е

Улыбнуло biggrin
MorglodДата: Вторник, 22 Февраля 2011, 18:11 | Сообщение # 3
Вечно пилящий двиг
Сейчас нет на сайте
в том то и проблема что я не могу их добавить... biggrin angry

Quote (Kornival)
Улыбнуло biggrin

в планах еще сеть, объёмные облака и воксели
lol killed


вначале был #include

KornivalДата: Вторник, 22 Февраля 2011, 18:16 | Сообщение # 4
The Witcher
Сейчас нет на сайте
Quote (Morglod)
в том то и проблема что я не могу их добавить...

Вершинные буферы создаются методом CreateVertexBuffer, то есть в твоем случае
Code
pDirect3DDevice->CreateVertexBuffer(параметры)

Думаю с параметрами сам разберешься.

P.S. Такое ощущение что ты вообще не изучал DirectX, и решил сразу взяться за написание двига. Я прав?

MorglodДата: Вторник, 22 Февраля 2011, 18:51 | Сообщение # 5
Вечно пилящий двиг
Сейчас нет на сайте
Quote
Такое ощущение что ты вообще не изучал DirectX, и решил сразу взяться за написание двига. Я прав?

я OpenGL изучал, а DirectX ток начал, вот переписываю движок под него... biggrin

Добавлено (22.02.2011, 18:30)
---------------------------------------------
компилится без ошибок, при запуске пишет

Quote
Необработанное исключение в "0x00e414fa" в "MoRealEngine.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000"

я правильно его воткнул, после интерфейса вершинного буфера?

Добавлено (22.02.2011, 18:50)
---------------------------------------------
немного дописал MoRealRender.h (взял код отсюда http://shatalov.su/directx_primer/vertex_buffer.php )
вот что получилось

Добавлено (22.02.2011, 18:51)
---------------------------------------------
но при этом всеравно вылеает ошибка при открытии

Quote (Тупая прога)
Необработанное исключение в "0x009441f3" в "MoRealEngine.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000".


вначале был #include

KornivalДата: Вторник, 22 Февраля 2011, 19:01 | Сообщение # 6
The Witcher
Сейчас нет на сайте
Quote (Morglod)
я правильно его воткнул, после интерфейса вершинного буфера?

Да

Из-за чего ошибка не знаю, но эту строчку точно надо убрать

Quote (Morglod)
  return E_FAIL;  

Возможно ты что-то напутал с матрицами, зачем составлять их самому?

Добавлено (22.02.2011, 19:01)
---------------------------------------------
Все, понял.

Code
IDirect3DVertexBuffer9* vb = NULL;  //Интерфейс вершинного буфера  
      pDirect3DDevice->CreateVertexBuffer(3* sizeof(vertex), D3DUSAGE_WRITEONLY,  
                           D3DFVF_XYZ|D3DFVF_DIFFUSE, D3DPOOL_DEFAULT,  
                           &vb,NULL);

Вместо D3DUSAGE_WRITEONLY поставь 0
MorglodДата: Вторник, 22 Февраля 2011, 19:10 | Сообщение # 7
Вечно пилящий двиг
Сейчас нет на сайте
исправил,
Quote
Необработанное исключение в "0x008141f3" в "MoRealEngine.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000".


вначале был #include

KornivalДата: Вторник, 22 Февраля 2011, 19:13 | Сообщение # 8
The Witcher
Сейчас нет на сайте
Quote (Morglod)
Вместо D3DUSAGE_WRITEONLY поставь 0

Дело оказалось в этом?
MorglodДата: Вторник, 22 Февраля 2011, 19:17 | Сообщение # 9
Вечно пилящий двиг
Сейчас нет на сайте
в отладчике написано

желтая стрелочка на

Code
vb->Lock(0,sizeof(vertices),(void**)&vb_vertices,0);

cry angry cry

Добавлено (22.02.2011, 19:17)
---------------------------------------------
я ж написал ошибку

Quote
Необработанное исключение в "0x008141f3" в "MoRealEngine.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000".


вначале был #include

KornivalДата: Вторник, 22 Февраля 2011, 19:26 | Сообщение # 10
The Witcher
Сейчас нет на сайте
Quote (Morglod)
я ж написал ошибку

Я спросил как ты ее исправил

Добавлено (22.02.2011, 19:26)
---------------------------------------------

Code
vb->Lock(0,sizeof(vertices),(void**)&vb_vertices,0);  
memcpy(vb_vertices,vertices,sizeof(vertices));  
vb->Unlock();

Попробуй поменять на
Code
vb->Lock(0,0,(void**)&vb_vertices,0);  
memcpy(vb_vertices,vertices,sizeof(vertices));  
vb->Unlock();
MorglodДата: Вторник, 22 Февраля 2011, 19:31 | Сообщение # 11
Вечно пилящий двиг
Сейчас нет на сайте
тоже самое, ошибка где то в переменных; исправляю как ты говоришь biggrin

вначале был #include

KornivalДата: Вторник, 22 Февраля 2011, 19:34 | Сообщение # 12
The Witcher
Сейчас нет на сайте
Если не заработает, выложи еще раз(для верности) весь исходник, разберемся

Сообщение отредактировал Kornival - Вторник, 22 Февраля 2011, 19:38
MorglodДата: Вторник, 22 Февраля 2011, 19:48 | Сообщение # 13
Вечно пилящий двиг
Сейчас нет на сайте
вот исходники, немного дописал и добавил комменты для верности happy
MoRealEngine.cpp

MoRealRender.h

в остальных заголовочных только классы без ошибок

Добавлено (22.02.2011, 19:48)
---------------------------------------------
ну как ты понял не заработало sad


вначале был #include

KornivalДата: Вторник, 22 Февраля 2011, 19:58 | Сообщение # 14
The Witcher
Сейчас нет на сайте
Честно говоря даже не знаю, что у тебя не так.
Попробуй заменить
Code

void* vb_vertices;

Code

vertex* vb_vertices;
FarcuatДата: Вторник, 22 Февраля 2011, 20:00 | Сообщение # 15
частый гость
Сейчас нет на сайте
Morglod, буфер не создан.

у тебя после

Code
if (FAILED(pDirect3D->CreateDevice(D3DADAPTER_DEFAULT, // используемая видеокарта  

сразу идет
Code
pDirect3DDevice->CreateVertexBuffer

а должно между ними быть

Code
return E_FAIL;

которое в первом варианте у тебя внизу неприкаянное скучало.
KornivalДата: Вторник, 22 Февраля 2011, 20:03 | Сообщение # 16
The Witcher
Сейчас нет на сайте
Блин, точно. Не заметил.
MorglodДата: Вторник, 22 Февраля 2011, 20:14 | Сообщение # 17
Вечно пилящий двиг
Сейчас нет на сайте
ааа всё понятно для чего эта строчка happy

Добавлено (22.02.2011, 20:14)
---------------------------------------------
оно работает! ураааааа!!!! booze hands laugh


вначале был #include

KornivalДата: Пятница, 25 Февраля 2011, 18:02 | Сообщение # 18
The Witcher
Сейчас нет на сайте
И вопрос от меня: для отоборажения двухмерной графики целесообразнее использовать преобразованные или непреобразованные вершины? Знаю, вопрос странный, но от ответа на него зависит следующий.
MorglodДата: Пятница, 25 Февраля 2011, 23:40 | Сообщение # 19
Вечно пилящий двиг
Сейчас нет на сайте
если в игре у тебя карта больше экрана то надо преобразовывать, а если размером с экран то не надо) cool

вначале был #include

ArchidoДата: Суббота, 26 Февраля 2011, 06:25 | Сообщение # 20
Сэнсэй
Сейчас нет на сайте
Quote (Kornival)
И вопрос от меня: для отоборажения двухмерной графики целесообразнее использовать преобразованные или непреобразованные вершины?

Уточни, что имеется в виду под "преобразованными" и "непреобразованными" вершинами? Если речь про RHW, то однозначно лучше без него.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг