Попытки "оседлать" DirectX.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Попытки "оседлать" DirectX.

Сообщение Mikle » 26.09.2007 (Ср) 9:29

Хочу портировать DX9 на VB6, пробы решил делать сначала с DX8, так как я его знаю :), минуя DX8VB.DLL.
Вот такой код в форме (поместите d3dx8d в текущую папку):
Код: Выделить всё
Option Explicit

Private Type vec2
  x As Single
  y As Single
End Type

Private Declare Sub D3DXVec2Normalize Lib "d3dx8d" (ByRef vOut As vec2, ByRef v As vec2)

Private Sub Form_Click()
Dim v1 As vec2, v2 As vec2
  v2.x = 2
  v2.y = 3
  D3DXVec2Normalize v1, v2
  Print v1.x, v1.y, v1.x * v1.x + v1.y * v1.y
End Sub

демонстрирует, что ActiveX функцию можно вызвать, как обычную :roll:
С функциями, работающими с необъектными переменными, все понятно и просто, но как быть с объектами? Допустим, я найду, как вызвать ф-цию, создающую нужный объект, например d3dDevice и возвращающую указатель на него, но объект перед этим нужно описать, иначе, если и удастся вызвать какой-нибудь метод полученного объекта, то только поздним связыванием (или даже это не удастся?)
Вообще, на этом пути есть перспективы, или сразу бросить?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 26.09.2007 (Ср) 10:14

Допустим, я найду, как вызвать ф-цию, создающую нужный объект,


Как это? Что значит "функция", содержащая "объект(ы)" ?

но объект перед этим нужно описать, иначе, если и удастся вызвать какой-нибудь метод полученного объекта, то только поздним связыванием (или даже это не удастся?)


Интерфейс, через который ты будешь работать с объектом, который поддерживается этим объектом - да, его надо описать, чтобы VB скомпилировал не late-bound-вызовы.

Вообще, на этом пути есть перспективы, или сразу бросить?


Почему же бросить? Вон - keks-n добился каких-то успехов в этом, делая аналогичное для DX9.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 26.09.2007 (Ср) 12:53

Хакер
Как это? Что значит "функция", содержащая "объект(ы)" ?

Там написано "создающую".

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 26.09.2007 (Ср) 12:54

Ясно. Есть какие-либо вопросы? :)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 26.09.2007 (Ср) 13:02

Да. Как описать этот объект, писать TLB? Что почитать про это?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 26.09.2007 (Ср) 13:11

Описывать нужно на языке IDL, а затем с помощью утилиты MIDL компилировать описания в TLB.

Синтаксис ILD очень похож на сишный.

Почитать... хм... ну наверное почитать следует MSDN. Но для меня было полезным чтение различных описаний, чтобы понять общие закономерности и вникнуть в IDL.

Поищи у себя на машине файлы с расширение .idl и почитай их.

ЗЫ. Сишные хеадеры DX, в котором описаны прототипы функций и интерфейсы с лёгкостью превращаются в пищу для MIDL.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

StimorolD3DX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 293
Зарегистрирован: 03.04.2007 (Вт) 18:19
Откуда: Kiev city

Сообщение StimorolD3DX » 27.09.2007 (Чт) 9:30

Кстати, работает даже с 10 директиксом d3dx10_35.dll

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 27.09.2007 (Чт) 10:38

10-ые иксы - не тру. Функции из D3DX, которые линкуются статически, вызваь не удастся. +Уже есть чья-то реализация tlb, выложенная на форуме.
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 91

    TopList