OpenGL текстурированный куб

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

  1. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Содрал текстурированный Куб из мануала OpenGLbyTylerDurden.
    Подправил под MASM32.
    Текстуру ReadFile в заранее выделенную память.
    Итог: Куб тормозит.
    У tylerdurden Куб крутится быстрее.
    Че делать?
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    <offtop>
    биться головой о стенку...
    </offtop>
    тут не форум эктрасенсов! сорс в студию!
     
  3. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    push GL_DEPTH_TEST
    call glEnable
    push GL_LIGHT0
    сall glEnable
    push GL_LIGHTING
    call glEnable

    push 1
    push GL_TEXTURE_2D
    call glBindTexture

    push buffer
    push GL_UNSIGNED_BYTE
    push GL_RGB
    push 0
    push 256
    push 256
    push 3
    push 0
    push GL_TEXTURE_2D
    call glTexImage2D

    push GL_LINEAR
    push GL_TEXTURE_MIN_FILTER
    push GL_TEXTURE_2D
    call glTexParameteri

    push GL_LINEAR
    push GL_TEXTURE_MAG_FILTER
    push GL_TEXTURE_2D
    call glTexParameteri

    push GL_TEXTURE_2D
    call glEnable

    push GL_NICEST
    push GL_PERSPECTIVE_CORRECTION_HINT
    call glHint

    push GL_PROJECTION
    call glMatrixMode

    push 40590000h
    push 0
    push 3FB99999h
    push 9999999Ah
    push dword ptr ratio+4
    push dword ptr ratio
    push 40568000h
    push 0
    call gluPerspective

    push GL_MODELVIEW
    call glMatrixMode


    @draw:
    call GetTickCount
    cmp eax,msec
    jz @draw
    mov msec,eax

    push GL_COLOR_BUFFER_BIT+GL_DEPTH_BUFFER_BIT
    call glClear

    call glLoadIdentity

    push Z_koord
    push 0
    push 0
    call glTranslatef

    push 0
    push 0
    push 3F800000h
    push theta
    call glRotatef
    push 3F800000h
    push 3F800000h
    push 0
    push theta
    call glRotatef
    push 3F800000h
    push 0
    push 0
    push theta
    call glRotatef

    push GL_QUADS
    call glBegin

    mov esi,offset Cube_1
    call SP_CreateTextureQModel

    @glEnd:
    call glEnd

    push hDC
    call SwapBuffers

    SP_CreateTextureQModel proc
    push edi
    push eax

    @NextPoligon:
    mov edi,4

    lodsd
    push eax
    lodsd
    push eax
    lodsd
    push eax
    call glNormal3f

    @LoadTexture:
    lodsd
    push eax
    lodsd
    push eax
    call glTexCoord2f

    @Load_Koord:
    lodsd
    push eax ;Z
    lodsd
    push eax ;Y
    lodsd
    push eax ;X
    call glVertex3f
    dec edi
    cmp edi,0
    jnz @LoadTexture

    lodsd
    sub esi,4
    cmp eax,0A0Dh
    jnz @NextPoligon

    pop eax
    pop edi
    ret
    SP_CreateTextureQModel endp
     
  4. _DEN_

    _DEN_ DEN

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

    ?
     
  5. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Что то в роде этого...

    Код (Text):
    1. fld theta
    2. fadd delta
    3. fstp theta
    4.  
    5. push    VK_NUMPAD8
    6. call    GetAsyncKeyState
    7. test eax,eax
    8. jz @Test_N2
    9.  
    10. fld Z_koord
    11.  
    12. fadd dlinna
    13. fstp Z_koord
    14.  
    15. @Test_N2:
    16. push    VK_NUMPAD2
    17. call    GetAsyncKeyState
    18. test eax,eax
    19. jz @Test_Esc
    20.  
    21. fld Z_koord
    22.  
    23. fsub dlinna
    24. fstp Z_koord
    25.  
    26.  
    27. @Test_Esc:
    28. push    VK_ESCAPE
    29. call    GetAsyncKeyState
    30. test eax,eax
    31. jz @draw
    32.  
    33. @Exit:
    34. push    0
    35. call    ExitProcess
     
  6. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    @draw:
    call GetTickCount
    cmp eax,msec
    jz @draw
    mov msec,eax

    Это накуя? просто

    call GetTickCount
    mov msec,eax

    ---

    В остальном вроде бы все ничего. Скинь exe

    [edit]

    cmp eax,msec ; Тут случайно не с адресом сравнение происходит? :-D
     
  7. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Эту часть я НаФих выкинул!
    Результат нулевый.
    Оставь email, скину исходник.
    Будет над чем голову поломать.

    Проблема определенно в текстурировании.
    Причем при уменьшении разрешения текстуры результат тот же.
    Может есть какие то особенности при работе с glTexImage2D?

    push buffer ;Первый байт *.RAW файла
    push GL_UNSIGNED_BYTE
    push GL_RGB
    push 0
    push 256
    push 256
    push 3
    push 0
    push GL_TEXTURE_2D
    call glTexImage2D
     
  8. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    _DEN_
    Это была простейшая синхронизация :)
     
  9. _DEN_

    _DEN_ DEN

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

    Давай поговорим по понятиям :)

    Синхронизация - это что-то с чем то. С чем синхронизируется рендер в твое примере? По-моему, ни с чем. Просто какое-то ожидание. Зачем нам ждать пока что-то там натикает? Чтобы разгрузить GPU? V-sync спасет от этого, а с таким подходом только лишняя нагрузка на CPU.
     
  10. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Все пацаны.
    Не надо так больше напрягаться!

    push pfd ;masm32 - offset pfd
    push eax
    push hDC
    call SetPixelFormat

    Все пошло. :)

    Но вот вопрос на 100$
    Где надыбать мануал с описанием большенства функций OpenGLa.
    Хотелось бы с примерами...
     
  11. _DEN_

    _DEN_ DEN

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

    MSDN - описание всех функций до OpenGL 1.2. Далее - все расширения описаны тут: http://oss.sgi.com/projects/ogl-sample/registry/

    Гони 100$.
     
  12. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Держи карман шире!
    :)
    Спосибо за помощь...
    http://oss.sgi.com/projects/ogl-sample/registry/ - а что делать тем у кого с Englishом туговато!
    Какие есть проги для создания карт и моделей!!!
     
  13. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    skyproc
    > а что делать тем у кого с Englishом туговато!

    Читать. Там все расширения расписаны по полочкам.

    > Какие есть проги для создания карт и моделей!!!

    Каких карт? Игральных, контурных, карт высот, карт нормалей, или карт лабиринтов?
    Для моделей - 3D Max. Но тебе придется либо написать экспорт-плагин, либо распарсить один из форматов.


    > Держи карман шире!

    Потерпим не час, потерпим не два.
    Ну, потерпим денечек.
    Потерпим-потерпим, ну а потом -
    Ну а потом включим счетчик.

    :))