Game в OpenGL на FASM

Тема в разделе "WASM.OpenGL", создана пользователем Hotwire, 3 мар 2007.

  1. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _DEN_
    Генерация имеет свои плюсы, и сбрасывать её со счетов не надо.
    Ни в одних играх нужно 3D. Да и в них она тоже используется.
    gluCylinder сделан экспортом из редактора?

    И для развития очень полезна, помогает впомнить матеку.
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Booster

    Ну так я и говорю - пока необходимо развитие это детский сад))
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _DEN_
    Ну в чём то ты прав.)).

    В принципе знаний ПТУ для этого достаточно )).

    Но для экспорта моделей и этого не надо.
     
  4. Hotwire

    Hotwire New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2007
    Сообщения:
    64
    Пошел я "кульным способом". Написал подпрограмму Сylinder. Код выглядит так
    Код (Text):
    1. Cylinder:
    2.              mov       [count],628
    3.     mov [angle],ebx
    4. wrap:   nop
    5.     call    Coord
    6.     push    [X]
    7.     pop [X0]
    8.     push    [Y]
    9.     pop [Y0]
    10.     fld [angle]
    11.     fadd    [gamma]
    12.     fstp    [angle]
    13.     call    Coord
    14.     push    [X]
    15.     pop [X1]
    16.     push    [Y]
    17.     pop [Y1]
    18.     invoke  glBegin,GL_QUADS
    19.     invoke  glColor3f,1.0,1.0,1.0
    20.     invoke  glVertex3f,[X0],[Y0],ebx
    21.     invoke  glColor3f,1.0,1.0,1.0
    22.     invoke  glVertex3f,[X1],[Y1],ebx
    23.     invoke  glColor3f,1.0,1.0,1.0
    24.     invoke  glVertex3f,[X1],[Y1],[h]
    25.     invoke  glColor3f,1.0,1.0,1.0
    26.     invoke  glVertex3f,[X0],[Y0],[h]
    27.     invoke  glEnd
    28.     invoke  glBegin,GL_TRIANGLES
    29.     invoke  glColor3f,1.0,ebx,ebx
    30.     invoke  glVertex3f,ebx,ebx,ebx
    31.     invoke  glColor3f,1.0,ebx,ebx
    32.     invoke  glVertex3f,[X0],[Y0],ebx
    33.     invoke  glColor3f,1.0,ebx,ebx
    34.     invoke  glVertex3f,[X1],[Y1],ebx
    35.     invoke  glColor3f,1.0,ebx,ebx
    36.     invoke  glVertex3f,ebx,ebx,[h]
    37.     invoke  glColor3f,1.0,ebx,ebx
    38.     invoke  glVertex3f,[X0],[Y0],[h]
    39.     invoke  glColor3f,1.0,ebx,ebx
    40.     invoke  glVertex3f,[X1],[Y1],[h]
    41.     invoke  glEnd
    42.              dec        [count]
    43.              jnz         wrap
    44.     ret
    45. Coord:
    46.     fld [angle]
    47.     fsin   
    48.     fstp    [sinus]
    49.     fld [R]
    50.     fmul    [sinus]
    51.     fstp    [Y]
    52.     fld [angle]
    53.     fcos
    54.     fstp    [cosin]
    55.     fld [R]
    56.     fmul    [cosin]
    57.     fstp    [X]
    58.     ret
    59. count dd ?
    60. angle dd ?
    61. gamma dd 0.01
    62. sinus  dd ?
    63. cosin  dd ?
    64. R dd 1.0
    65. X dd ?
    66. Y dd ?
    67. X0 dd ?
    68. Y0 dd ?
    69. X1 dd ?
    70. Y1 dd ?
    71. h  dd -2.0
    Подпрограмма работает, но дергается все страшно, да и глючит хорошенько. Где баг не знаю.
     
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Hotwire

    Эгзэшнег фстудейу.
     
  6. Hotwire

    Hotwire New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2007
    Сообщения:
    64
    Все в шоколаде. То просто у меня задняя отсекающая плоскоть была слишком близко. Но вопрос о том, как его текстурировать остался.
    По ПТУ-шному мозги поразвивать полезно, но зачем делать то, что уже сделано. Напишите код с помощью, скоторого я могу нарисовать цилиндр через GLU!
     
  7. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Hotwire

    Завернуть? :)

    Я тебе дал три функции. Первая создает квадрик, вторая говорит о том, надо ли его текстурировать. Третья из этого квадрика рисует циллиндр. что может быть проще?
     
  8. Hotwire

    Hotwire New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2007
    Сообщения:
    64
    Шо такое квадрик.
    Можно написать код, в котором создаётся цилиндр с текстурой?
    Я в C нихрена не понимаю. Напишите код под FASM.
     
  9. Hotwire

    Hotwire New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2007
    Сообщения:
    64
    К Booster
    Интересно коллега, как вы флажок нарисуете. Уже готов скачивать сорс с экзешником. (Сорс с комментариями, пожалуйста).
     
  10. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Hotwire

    Тебе не кажется что твоя лень начинает заходить за разумные границы? :derisive:
     
  11. Hotwire

    Hotwire New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2007
    Сообщения:
    64
    Что-то мне кажется, что сильно я от темы отклонился.
    Полем боя для танков, как я уже раньше решил будет квадрат с текстурой. Этот квадрат я решил разбить на 4096 более маленьких квадратиков(64X64), на каждом из которых может находиться танк или какая-нибудь другая хренотень (дерево,забор,камень).
    У меня два вопроса. Первый, как нарисовать дерево? Второй, как клаву опрашивать?
     
  12. Booster

    Booster New Member

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

    О флаге.
    Сорс уже есть, посмотри внимательней на сайте.
    Что до меня, то я уже пару лет как на асме ничего такого не пишу что только на нём сделать легче и проще чем на C++. Те что у меня есть только на C++.
    Есть на OpenGL и DirctX, есть на fixed pipline и ест на шейдерах.
    Об этом есть ещё в уроках Hehe. В принципе всё очень просто, делаешь сетку из квадов или треугольников, расчитываешь текс. коорд. И потом динамически меняешь по синусоиде Z координаты.

    Буду краток.
    1)
    Ришуешь в максе, потом делаешь загрузчик из .ASE файла. Либо куришь мак скрипт, выгружаешь с помощью него в файл, и так же пишешь загрузчик.
    3DS использовать не советую, так как это закрытый формат (плохо документирован), довольно ограниченный (похоже discreet на него забила со времён доса, и поддерживает толко для совместимости), и в нём много чего того, что для загрузки модели не надо, а надо только для самого макса.
    2) Куришь DirectInput.
     
  13. Hotwire

    Hotwire New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2007
    Сообщения:
    64
    DirectInput раскурил. Второй день отхожу
    А вот дерево что-то не тянется
     
  14. _SaNitAr

    _SaNitAr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    68
    Booster
    А spectrum то вообще убогий очень не хочитсё флеймить, но задел за живое:))))
    Когда на ибм,прорезались черно белые буквы, на спекки уже была цветная графика, для моего поколения это было круто,за 386 можно было купить квартиру, спектрум был доступен практически всем,незря же Синклер получил "сэра".Практически все писалось на асме и там и там,несмотря на обилие графических режимов на ибм, "квадратики" в Вольфе 3д никуда не делись:)))) понравился жанр, да, но гафика просто убогая:)))лично для меня эра игр на рс началась с Вуду,коий стоит в рамочке рядом с 48 спектрумом,такой вот мини музей:))) сорри за офтоп:)))))
     
  15. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _SaNitAr
    Не ну спектрум - классика не спорю. Просто я прекланяюсь перед программерами этого чуда. Хотя конечно известно, что для него почти всё писалось сначало на AT, а потом только переносилось. А иначе писать просто убийство, но ведь по началу писалось чисто на спекруме. Только представьте какой полёт мысли при 48 кб памяти, когда нету всяких С, Паскалей, а есть только asm, и заметьте это ещё не Masm или Tasm. А про поддержу операцонной системы вообще молчу. Я до сих пор в шоке от вещей наподобии "Сфинкса".
     
  16. figgler

    figgler New Member

    Публикаций:
    0
    Регистрация:
    12 сен 2006
    Сообщения:
    1
    Во времена популярности Спека об АТ еще вообще только мечтали.
    Все писалось на самом Спеке на ассме (в 99% случаев).
    Это сейчас железные Спеки есть только у фанатов того времени, а в остальном действительно проще работать с эмулятором....
     
  17. Hotwire

    Hotwire New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2007
    Сообщения:
    64
    Дерево решил нарисовать конусом, на котором есть текстура. Пока еще дерево не готово, но скоро все будет.
    Передо мной новая проблема. По треугольному(пока) танку попал треугольный(пока) снаряд, а теперь танк должен взорваться. Как бы это реализовать?

    В разделе исходников есть пример использования расширений OpenGL'а(вертексной программы), но автор посчитал, что комментарии там не нужны. Напишите их плиз.
    Вспоминаю ваши слова, которыми вы пытались меня отговорить. Вы были правы дело сложное, но отступать поздно.
    За плечами много строчек кода.
     
  18. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Для начала можно просто наложить:
    [​IMG][​IMG]
    А потом придумаешь что нибудь пооригинальнее ;)
     
  19. Hotwire

    Hotwire New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2007
    Сообщения:
    64
    Рисуночки классные, а как это в прогу вмонтировать?
     
  20. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    как вариант разобрать gif на битмапы и последовательно отобразить их glBitmap или glDrawPixels, хотя возможно есть способ поэлегантнее.