Fasm: косяк с opengl

Тема в разделе "WASM.BEGINNERS", создана пользователем Morgot, 26 ноя 2006.

  1. Morgot

    Morgot New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2006
    Сообщения:
    2
    Обьясните почему так происходит: приложения opengl, написанные на FASM не работают нормально на всех машинах. На некоторых они вылетают при вызове функции wglMakeCurrent. Причем, если отключить аппаратное ускорение в панели управления - все нормально. Самое интересное, что проги, написанные на других языках - visual c++ и MASM работают совершенно нормально, без странностей. Похоже, это зависит от видеокарточки и драйверов к ней. На моем Celeron 1000 с GF2 MX400 все путем, а на Core 2 Duo с GF7900GT начинаются данные чудеса.
    Я пробовал примеры с nehe.gamedev.net для FASM, Microsoft Net и MASM, причем испытывал те экзешники, которые уже лежали в архивах. Два последних работали нормально, а фасмовский только с отключенным аппаратным ускорением.
    Мне очень интересно узнать, в чем тут дело??? Толи фасм кривой, толи у меня дрова кривые, а, может быть, у меня кривой драйвер руки.сис??? Последнее отпадает, потому что я проверял чужие примеры. Пожалуйста, не оставляйте моё сообщение без внимания!
     
  2. murtix

    murtix New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    110
    Адрес:
    Russia
    Я не очень в опенжл, но может быть дело в PixelFormat, Вряд ли фасм настолько кривой
     
  3. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    У меня у самого лажа с wglMakeCurrent когда юзаю nvoglnt.dll (точнее ее юзаю не я, а драфвер мой geforce)...
     
  4. Ole

    Ole Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    69
    Вчера столкнулся с этой проблемой. Видяха такая-же, проц amd x2. Что примечательно, если для проги использовать только одно ядро, всё ок. А дело думаю именно в фасме+winxp (w2k норм). Провел эксперимент: взял масм-опенгл прогу и перенёс ее в фасм. Причем забил ради прикола в машинных кодах через db. Идентичность 100%. Результат тот-же. Масм пашет - фасм нет. Есть мысли, гуру? Впринципе остается только одно - какой-то глюк в создании секций. Импорт функций думаю отпадает (пробовал getprocaddress на всё).
     
  5. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Дайте пример, и масм и фасм.
     
  6. Ole

    Ole Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    69
    Честно говоря успел удалить всю эту ерунду. Но раз тема ожила, сделал по новой. Единственное, не стал парится с примером "db" и getprocaddress. Результат всё равно один. В директории masm - оригинал, в fasm - copy/paste из olly. Сам код из fasm получается тот-же, отличия в структуре секций. Но какая связь с двухъядерностью... ??? Х.з.
     
  7. Ole

    Ole Member

    Публикаций:
    0
    Регистрация:
    14 июн 2004
    Сообщения:
    69
    Ещё один фасм. Вызовы апи из кода доведены до масмовских. Один хрен...
     
  8. Woolear

    Woolear New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    7
    Столкнулся с аналогичной проблемой.
    Карта NVIDIA 7600 GT.
    Падают примеры только компиленные в FAsm. На си аналог написал - работает. работает на всем кроме фасма.
    происходит переполнение стека потока в nvoglnt.dll.
    при компиляции другими компиляторами стек расширяется. смотрел в оле...
     
  9. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    Woolear, стукнись в личку или в аську (в профиле), если время есть?
     
  10. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Логично было бы сравнить настройки стека в PE заголовке.
     
  11. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Ни один из задавших вопрос не удосужился заглянуть в хэлп к используемому инструменту.
     
  12. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    l_inc На всякий случай напишу и здесь. Стек там в экзешниках в норме 4К, но commit тоже 4К Я так понимаю закажет еще... А вот heap без commit. А так да. Зачем писать на ассемблере, если не понимаешь нижних рычагов. Без этих рычагов, ассемблер это тормоз, а не ускорение. А уж OpenGL и DirectX программить на ассемблере - это изврат. Ну да игрушки, но по делу только ЯВУ.
     
  13. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    valterg
    В норме или нет, а большинство компиляторов ставят по умолчанию мегабайт. Мне пару раз 4K не хватало. Это Ваше "но" имеет непонятное значение, т.к. SizeOfStackCommit особой роли не играет и компиляторами MS также по умолчанию выставляется в 4K.
    Если я правильно понимаю высказывание, то никто ничего не закажет. Стек больше, чем SizeOfStackReserve не растёт.

    А вообще я не разбирался: Woolear сказал, что переполнение стека, и я принял на веру. К тому же ИМХО куча в отличие от стека — крайне маловероятная проблема.
     
  14. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Я думал по названию, что это размер "дозаказа", когда стек исчерпан. Про 1 Мб в курсе. Скорее всего в fasm по умолчанию задан минимум для простых программ. Т.е. Си и масм не причем - просто там нормальный линкер, с нормальными праметрами.
     
  15. Woolear

    Woolear New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    7
    Читал и прописывал.
    чтобы понять рычаги и учиться. А ява - тормоз по определению.
    Не надо смотреть с высока и разводить срач. нужно решение проблемы. Для этого форум?
    У меня не хватает знаний и опыта чтобы ее решить.
     
  16. Woolear

    Woolear New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    7
    Фрагмент заголовка проги РАБОТАЮЩЕЙ, скомпиленной в DevC++
    А это у фасмовской проги:
    Я давно понял что в этом может быть дело, но директива stack вообще не дает эффекта. мб не там пишу...
     
  17. Woolear

    Woolear New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    7
    stack 200000h,1000h и программа работает :)
    Оказывается я писал stack 200000,1000 без h, поэтому он воспринимал это в десятичном виде...
    Вот собственно и решена проблема...
     
  18. Woolear

    Woolear New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    7
    Рабочий минимум для моей проги составил
     
  19. PowerASM

    PowerASM New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2010
    Сообщения:
    59
    Woolear
    но это округлилось до 11000h
     
  20. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    ЯВУ - языки высокого уровня. Пардон там непонятно получилось.
    А все-таки про рычаги я оказался прав. Надо не только их дергать уметь, но контролировать.