Помогите с общей структурой программы

Тема в разделе "WASM.OpenGL", создана пользователем zloy_pes, 28 май 2006.

  1. zloy_pes

    zloy_pes New Member

    Публикаций:
    0
    Регистрация:
    27 май 2006
    Сообщения:
    9
    Адрес:
    Russia
    Вот написал код, по идее должен создавать окно и его очищать, но делает это странно. Если убрать строки
    Код (Text):
    1. cmp uMsg,WM_PAINT
    2. jne @not_paint
    , то окно очищается только тогда, когда по нему провожу мышкой, если оставить, то окно вообще не меняется. Вот основная процедура:
    Код (Text):
    1. wndproc proc hWnd:dword,uMsg:dword,wParam:dword,lParam:dword
    2. cmp uMsg,WM_DESTROY
    3. jne @not_quit
    4. push 0
    5. call PostQuitMessage
    6. ret 16
    7. @not_quit:
    8. cmp uMsg,WM_PAINT
    9. jne @not_paint
    10.  
    11. push GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT  ;Вот -
    12. call glClear                                     ;очистка
    13.  
    14. @not_paint:
    15. leave
    16. jmp DefWindowProc
    17. wndproc endp


    Весь исходник целиком прикладываю. Еще один вопрос - я так и не понял, как помещать в сопроцессор дробные числа. Когда я компилирую например fld 0.5 - real or BCD number not allowed. И еще - если не сложно, вставьте там для примера код рисования например треугольника. Собственно все - заранее Спасибо.

    PS просьба - сильно не ругайте, я только начал изучать OpenGL

    [​IMG] 2136926433__ogl.asm
     
  2. rmn

    rmn Well-Known Member

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




    использовать переменные:


    Код (Text):
    1. var1 dq 5.0e-1
    2. ...
    3. fld var1
     
  3. zloy_pes

    zloy_pes New Member

    Публикаций:
    0
    Регистрация:
    27 май 2006
    Сообщения:
    9
    Адрес:
    Russia
    Людии... Дайте пожалуйста хотябы код какой-нибудь рабочей программы на асм+OpenGL. Главное не навороченой... Ну например заливка окна каким-нибудь цветом. Может пойме чего.
     
  4. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    смотри в пакете masm в примерах есть работа с OpenGL.

    Там же и дробные числа посмотришь
     
  5. zloy_pes

    zloy_pes New Member

    Публикаций:
    0
    Регистрация:
    27 май 2006
    Сообщения:
    9
    Адрес:
    Russia
    Это который в EXAMPLES? Так по нему и пытаюсь чего-то понять. Уж больно навороченый. Мне бы чего - нибудь попроще.
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    А статьи на сайте не прочёл? Там же расписано всё.
     
  7. zloy_pes

    zloy_pes New Member

    Публикаций:
    0
    Регистрация:
    27 май 2006
    Сообщения:
    9
    Адрес:
    Russia
    Все прочел, но ничего не получается :dntknw: Очистка окна glClear - это я понял. Когда после glClear вставляю
    Код (Text):
    1. invoke glBegin,GL_TRIANGLES
    2. invoke glColor3f,1.0,0.0,0.0
    3. invoke glVertex3f,-1.0,-1.0,1.0
    4. invoke glColor3f,0.0,1.0,0.0
    5. invoke glVertex3f,1.0,-1.0,1.0
    6. invoke glColor3f,0.0,0.0,1.0
    7. invoke glVertex3f,1.0,1.0,1.0
    8. invoke glEnd
    ничего, кроме мигающей белой точки не появляется :dntknw: .

    Неужели не у кого нет исходника ПРОСТЕЙШЕЙ программы.
     
  8. keYMax

    keYMax New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2003
    Сообщения:
    276
    Адрес:
    Новоуральск
    Конечно можно порядок обхода вершин треугольника описывать как вздумается, но обычно его описывают по часовой стрелке.
     
  9. zloy_pes

    zloy_pes New Member

    Публикаций:
    0
    Регистрация:
    27 май 2006
    Сообщения:
    9
    Адрес:
    Russia
    Ладно - такой вопрос - вот есть у меня процедура:
    Код (Text):
    1. draw proc
    2. push GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT
    3. call glClear
    4. invoke glBegin,GL_TRIANGLES
    5. invoke glColor3f,1.0,0.0,0.0
    6. invoke glVertex3f,-1.0,-1.0,1.0
    7. invoke glColor3f,0.0,1.0,0.0
    8. invoke glVertex3f,1.0,-1.0,1.0
    9. invoke glColor3f,0.0,0.0,1.0
    10. invoke glVertex3f,1.0,1.0,1.0
    11. invoke glEnd
    12. ret
    13. draw endp
    В какой момент надо вызывать эту процедуру, чтобы этот несчастный треугольник прорисовывался.
     
  10. zloy_pes

    zloy_pes New Member

    Публикаций:
    0
    Регистрация:
    27 май 2006
    Сообщения:
    9
    Адрес:
    Russia
    Друзья! Спасибо ВСЕМ кто отвечал! Я все-таки разобрался.