Войти
Вело-изобретателиФорумdx_vb - порт DirectX9 для VB6

О проекте dx_vb. (6 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 13 4 5 6 7 8 Следующая »
#75
14:46, 6 ноя. 2011

Было-бы удобно, в ситуации если порт не нашел файл шейдера, возвращал Nothing, а не крашился...

Friend Function CreateVertexShaderFromFile(fName As String) As Direct3DVertexShader9
  Dim pShader As Long
  Dim nf As Integer
  Dim ar() As Byte
  nf = FreeFile
  Open fName For Binary As #nf
    ReDim ar(LOF(nf) - 1)
    Get #nf, , ar()
  Close #nf
  dev_CreateVertexShader Ptr, VarPtr(ar(0)), pShader
  If pShader <> 0 Then
    Set CreateVertexShaderFromFile = New Direct3DVertexShader9
    CreateVertexShaderFromFile.Ptr = pShader
  End If
End Function

#76
14:48, 6 ноя. 2011

Конечно удобно :) Недоделка.

#77
17:28, 18 ноя. 2011

Не грузятся 16 битные wav - ки...
Крашится на создании буфера...

Private Sub Form_Load()
  Dim Ar() As Byte
  Dim nf As Integer
  Dim w_size       As Long
  Dim w_format_tag As Integer
  Dim w_channels   As Integer
  Dim w_freq       As Long
  Dim w_bits       As Integer
  
  Me.Show
  DoEvents
  Set ds = DirectX8.CreateDirectSound
  If Not (ds Is Nothing) Then
    ds.SetCooperativeLevel Me.hWnd, DSSCL_NORMAL

    nf = FreeFile
    Open "Media\River1.wav" For Binary As #nf
    
    Get #nf, &H29, w_size
    Get #nf, &H15, w_format_tag
    Get #nf, &H17, w_channels
    Get #nf, &H19, w_freq
    Get #nf, &H23, w_bits
    
    ReDim Ar(w_size - 1)
    Get #nf, &H2D, Ar()
    Close #nf

    Set DSB = ds.CreateSoundBuffer(w_channels, w_bits, w_freq, w_size, DSBCAPS_CTRLVOLUME Or DSBCAPS_CTRLFREQUENCY)
    If DSB.SetData(0, w_size, VarPtr(Ar(0))) = False Then ClearAll: Unload Me
  End If
End Sub

#78
19:35, 18 ноя. 2011

У тебя точно последний dx_vb? Я только что проверил на том, что лежит в нулевом посту по ссылке new_dx_vb, поменял WAV-файл на 16-битный, стерео, заменил код:

Private Sub Form_Load()
  Dim Ar() As Integer
  Dim nf As Integer
  Dim Sz As Long
  Me.Show
  DoEvents
  Set DS = DirectX8.CreateDirectSound
  If Not (DS Is Nothing) Then
    DS.SetCooperativeLevel Me.hWnd, DSSCL_NORMAL

    nf = FreeFile
    Open "Media\River16.wav" For Binary As #nf
    Get #nf, &H29, Sz
    ReDim Ar(Sz \ 2 - 1)
    Get #nf, &H2D, Ar()
    Close #nf

    Set DSB = DS.CreateSoundBuffer(2, 16, 22050, Sz, DSBCAPS_CTRLVOLUME Or DSBCAPS_CTRLPAN Or DSBCAPS_CTRLFREQUENCY)
    If DSB.SetData(0, Sz, VarPtr(Ar(0))) = False Then ClearAll: Unload Me
  End If
End Sub
Работает. Такая проблема была, но я её устранил с полгода назад.

#79
22:40, 18 ноя. 2011

Mikle
> последний dx_vb
Пробовал на самом древнем... В котором SDK...

#80
21:27, 30 ноя. 2011

Mikle
Как думаешь высок ли прирост скорости, если юзать DX математику? Не уйдет ли время на вызов и.т.д.
Не расчитывал разницу?

#81
21:36, 30 ноя. 2011

А возможно ли прикрутить обработку математики на ассемблер ? Таким
образом можно будет увеличить скорость фиксированного конвеера ?!!!

#82
21:51, 30 ноя. 2011

Andconst
Все можно, но не потеряется ли вся "скорость" на вызовах API?

#83
22:21, 30 ноя. 2011

max255
Я когда-то сравнивал на dx8vb.dll, простые лёгкие ф-ции, типа vec3Add, быстрее выполнялись на vb, если скомпилить с оптимизациями, более тяжёлые, типа MatrixMultiply, немного быстрее через D3DX, потом, когда сделал dx_vb, я его сравнил с dx8vb на MatrixMultiply и увидел неплохой выигрыш. Сомневаюсь, что матеметика с тех пор изменилась, видимо это из-за того, что dx8vb скомпилирована на шестой студии, а dx_vb на девятой, C++ неплохо оптимизировали с тех пор.
Но самые лёгкие ф-ции, возможно, на VB будут выполняться всё же быстрее, не проверял.
Andconst
При чём тут фиксированный конвейер?

#84
0:26, 1 дек. 2011

Имел ввиду для того чтобы потребность в шейдерах отсрочить подальше!

#85
1:06, 1 дек. 2011

Andconst
> отсрочить
Можно и не юзать шейдеры... Просто с ними намного проще добится красивой картинки...
Тем более вряд-ли код на асме обойдет видеоускоритель по скорости...

#86
1:34, 1 дек. 2011

Согласен!
Какой толк от самой лучшей оптимизации игры, если она подобна арканоид!

#87
10:04, 1 дек. 2011

Andconst
Перенос D3DX математики на ассемблер (SSE) не имеет никакого отношения к скорости шейдеров или FFP. От этого даже не поменяется скорость обработки вертексов при SoftwareVertexProcessing. Быстрее могут заработать только те ф-ции, которые ты сам из кода вызываешь.
Andconst
> чтобы потребность в шейдерах отсрочить подальше!
Не нужно их бояться. С моей точки зрения асм шейдеры 2.0..3.0 - это верх лаконичности и наглядности, даже понятнее, чем FFP, и при этом одновременно гибче.

#88
11:08, 1 дек. 2011

Mikle
>понятнее... гибче...
+100500
Поняв как работают шейдеры сразу начинаешь понимать как все устроено... Как работает ffp, и зачем там нужны те или иные функции... А если смотреть сначала ffp, то с трудом понимаешь зачем все это нужно и как это юзать...

ЗЫ: насчет оптимизации арканоида...  Сейчас стараюсь уделять этому внимание... Например у себя в двиге оптимизирую функции отрисовки, разделяя их на отдельные процедуры...

Поскольку я нуб в физикие тот говнокод что у меня получается жутко не оптимален... Вот и лаги... 

#89
10:36, 10 мая 2012

Mikle
Не пробовал юзать HLSL шейдеры в порту?
Вроде как константы там нужно как-то получать при компиляции...

Страницы: 13 4 5 6 7 8 Следующая »
Вело-изобретателиФорумdx_vb - порт DirectX9 для VB6

Тема в архиве.