nVidia PhysX

Тема в разделе "WASM.GRAPHICS", создана пользователем PodonOK, 26 июл 2009.

  1. PodonOK

    PodonOK New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2009
    Сообщения:
    23
    Пробовал-ли кто-нибудь писать программы на ассемблере с использованием технологии nVidia PhysX?
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    А при чём здесь ассемблер и PhysX? Писать точно также как и с использованием других подобных либ.
     
  3. PodonOK

    PodonOK New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2009
    Сообщения:
    23
    Если ты пробовал и у тебя получалось выложи пример. У меня не получается. Я писал программы с использованием DirectX и OpenGL - все прет.(Подключаемые файлы состовлял сам) А с PhysX нефига не получается.
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Ну вообще там всё сделано через интерфейсы, в импорте всего несколько функций. NxCreatePhysicsSDK создаёт основной объект, а далее через него создаются все остальные. Писать inc файлы меня что-то не вставляет, да и не зачем мне оно, прекрасно обхожусь C++. А так возможно что-то забыл в интерфейсе написать, вот и не работает.
     
  5. PodonOK

    PodonOK New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2009
    Сообщения:
    23
    В интерфейсах все правильно должно быть, т.к. я по SDK их составлял и в HELPе смотрел, все есть. Дело даже не в интерфейсах, я обычную функцию(NxCreatePhysicsSDK) по созданию физики не могу инициализировать.
    INC-файлы все-то ведь необязательно писать, напиши только те которые будешь использовать. Попробуй на ASM написать простейшее приложение.
    А в C++ и у меня все без проблем идет.
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
  7. PodonOK

    PodonOK New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2009
    Сообщения:
    23
    Я вчера дрова обновлял.
    Какую версию ты имеешь ввиду, которую в функции вставляешь?
     
  8. PodonOK

    PodonOK New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2009
    Сообщения:
    23
    По идее ни в том и ни втом случае проблем быть не должно! Т.к на C++ все нормально компилеться и запускаеться. Все примеры в комплекте с SDK тоже нормально копилирубтся и запускаются.

    Код (Text):
    1.     invoke  NxCreatePhysicsSDK,NX_PHYSICS_SDK_VERSION,0,0,desc,[errorCode]
    Вот функция, но она всегда возвращает NULL!
    В чем причина не могу понять.
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Да, номер версии передаётся корректный? Попробуй поменьше поставить.
     
  10. PodonOK

    PodonOK New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2009
    Сообщения:
    23
    Как я поставлю поменьше?
    Код (Text):
    1. invoke  NxCreatePhysicsSDK,[b]NX_PHYSICS_SDK_VERSION[/b],0,0,desc,[errorCode]
     
  11. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Посмотреть какие версии держит драйвер, например 2.7.0 = 0x02070000
     
  12. PodonOK

    PodonOK New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2009
    Сообщения:
    23
    Не в этом дело. Ты сам-то можешь попробовать написать - 10 минутноя работа.
     
  13. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    PodonOK
    напиши на с++, на асме открой в ольге и сравни, какой то параметр должно быть ложиться в стек не так как ты думаешь
     
  14. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    У меня работает.

    Код (Text):
    1. .386P
    2. .MODEL FLAT, STDCALL
    3.   EXTERN MessageBoxA@16:NEAR
    4.   EXTERN ExitProcess@4:NEAR
    5.   EXTERN NxCreatePhysicsSDK:NEAR
    6.  
    7.   INCLUDELIB d:\masm32\lib\user32.lib
    8.   INCLUDELIB d:\masm32\lib\kernel32.lib
    9.   INCLUDELIB d:\masm32\lib\shell32.lib
    10.   INCLUDELIB "E:\Coding\AGEIA PhysX SDK\v2.7.0\SDKs\lib\win32\PhysXLoader.lib "
    11. ;-----------------------------------------------
    12.  
    13. _DESK STRUCT
    14.     hwPageSize DD ?;
    15.     hwPageMax DD ?;
    16.     hwConvexMax DD ?;
    17.     flags DD ?;
    18. _DESK ENDS
    19.  
    20. _DATA SEGMENT DWORD PUBLIC USE32 'DATA'
    21.  desk _DESK <?>
    22. _DATA ENDS
    23.  
    24. _TEXT SEGMENT DWORD PUBLIC USE32 'CODE'
    25. START:
    26.     MOV desk.hwPageSize, 65536
    27.     MOV desk.hwPageMax, 256
    28.     MOV desk.hwConvexMax, 2048
    29.     MOV desk.flags, 0
    30.     PUSH 0
    31.     PUSH OFFSET desk
    32.     PUSH 0
    33.     PUSH 0
    34.     PUSH 02070000H
    35.     CALL NxCreatePhysicsSDK
    36.     TEST EAX, EAX
    37.     JE _exit
    38.     PUSH 0
    39.     PUSH 0
    40.     PUSH 0
    41.     PUSH 0
    42.     CALL MessageBoxA@16
    43. _exit:
    44.     PUSH 1
    45.     CALL ExitProcess@4
    46. _TEXT ENDS
    47. END START
    MessageBox показывается.
     
  15. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Может всё таки что-то с дровами не тае? Это точно ставил?: PhysX дрова
     
  16. PodonOK

    PodonOK New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2009
    Сообщения:
    23
    Я еще не полный идиот! Если бы я дрова не поставил, то c C++ незапускалось бы.
     
  17. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Не обижайся, это так что бы уже наверняка удостовериться, народ всякий бывает. ^)
     
  18. PodonOK

    PodonOK New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2009
    Сообщения:
    23
    Нашел причину в "NxPhysicsSDKDesc" - немного не то понаписал там. После исправления все запустилось. Благодарю за помощь.
     
  19. PodonOK

    PodonOK New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2009
    Сообщения:
    23
    Был в в местах нестоль отдаленных, поэтому не мог продолжить тему с проблеммой PhysX на ASM. Я нашел в чем еще одна причина ошибки, но т.к. не являюсь специалистом и даже программистом, не могу понять что там и зачем. А проблемка заключается вот в чем: я просмотрел ASM-листинг програмки написанной мной на C++ и нашел, что в процедуре, где инициализируется PhysX что-то записывается в DWORD PTR FS:0 и в конце процедуры перезаписывается - ЗАЧЕМ это и что туда записывается?
     
  20. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Скорее всего работа с SEH.