Написание игры змейка с применением DirectX или OpenGL

Тема в разделе "WASM.DirectX", создана пользователем a9d, 13 сен 2007.

  1. _vi_

    _vi_ Денис

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    48
    да чето в статье он писал что уже при 64 костях ошибка, но на геймдеве нашел про эту статью, там советы по оптимизации самого шейдера вот:http://www.gamedev.ru/code/forum/?id=56039
    ,а насчет звука - те просто проигрывать или 3D?
    ааа вспомнил Booster =) помниш темку я поднимал на счет RGB, вон там внизу, код загрузки текстур у меня правильный был, потому что когда стал юзать Devil не чего не изменилось =) все дело в настройках
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _vi_
    IMHO в шейдерах максимально 4 соединения на кость.
    Нужно генерировать PCM в памяти, то есть создавать из формул, нот и т.д.
    О 3D пока думать рано.
    А что за настройки?
     
  3. _vi_

    _vi_ Денис

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    48
    не юзал ...=)
    ну тоды ненаю, а про 3D в нете много, мне больше всего нравиться Ogg + OpenAL - бесплатные, опен соурс ,много туторов исходников на любом языке и да и созвучно даже с опенгл =)
    А вот хочешь верь хочеш нет не найти=)
    у простил процедуру создпания текстуры до вот какого ужаса и все равно нече не выходит
    Код (Text):
    1. glGenTextures 1, texID
    2.  glBindTexture %GL_TEXTURE_2D, texID
    3.  glTexParameteri %GL_TEXTURE_2D, %GL_TEXTURE_MAG_FILTER,  %GL_LINEAR
    4.  glTexParameteri %GL_TEXTURE_2D, %GL_TEXTURE_MIN_FILTER,  %GL_LINEAR
    5. glTexImage2D %GL_TEXTURE_2D, 0, %GL_RGB, tWidth, tHeight, 0, format, %GL_UNSIGNED_BYTE , ImgData
    получается вот так
    [​IMG]
    когда должно
    [​IMG]
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _vi_
    Да проблем-то с проигрыванием нету, проблема создать сами данные музыки, чтобы и качественно, и занимало децел (буквально пара сотен байт.)
    По картинке видно что цвета действительно не на своих местах, опенжл нужно BGRA. Значит нужно их поменять. Либо юзать расширение RGBA. По другому никак.
    Пиши функцию BGRAtoRGBA или проще всё же юзать соответтствующие расширение.
     
  5. _vi_

    _vi_ Денис

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    48
    возиться с потоками и прочей дребеденью=) жесть. формат огг говорят лучше чем даже мп3 по качеству по крайней мере, а чтоб еще и занимала мало - это мутант какойто =) миди скрещенная с мп3 =) вот видел ролик чем упакован незнаю но весит 64 кб всего а там и миди(явно) и еще сам ролик опнгл а может и директх(всяко на асме писан но упаковщик чудо - об это свидетельствует время загруки ролика=) ).
    вот нашел залил: http://nfteam.clan.su/denny_vremennaj/candytron-final-101.exe (детям не смотреть=) )
    В том то идело что когда не юзал девила менял сдвиг байтов по разному все что менялось общий тон все в зеленом или красном ну или как тут. вобщем флудить не буду, буду мучиться...

    стой стой про ролик не не миди там О_о - голос есть забыл
    PEiD упаковщик не опредиляет, но олли чегото говорит про распаковку кода и распаковывает можешь посматреть как там чего
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _vi_
    При чём здесь здвиг байтов. Выше я ошибся, конечно не RGBA, а BRGA.
     
  7. _vi_

    _vi_ Денис

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    48
    ну тга ведь в BRGA а опену нада RGBA, вот я и переставлял байты , подожли пододи а почему ты говориш что опену надо BRGA первый раз слышу. весь прикол в том что я вообще оключал перевод BRGA в RGBA нечего не меняется, в девиле есть функции для загрузки текстур напрямую для опена и они на помогают отсюда вывод что фиг его занет че делать=(
    ааа вот оно вот токочто увидел=): текстура ведь 3Д функция юзается glTexImage2D щас займусь посмотрим, попробую через расширения загнать glTexImage3DEXT
     
  8. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _vi_
    Опену надо именно BRGA!!! Поэтому когда я например писал свой загрузчик bmp (а он есно в RGBA), приходилось переставлять. Как в TGA не помню, загрузчик давно писал. С девилом у меня проблем не было вообще, грузил с помощью его спец функции для openGL и всё, TGA правда с помощью него не загружал.
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _vi_
    Блин. Я опять всё попутал, давно на OpenGL не кодил.
    Цитата от НеНе.
    Ещё цитата от Нене
    Так что OpenGL нужно в RGBA. А в TGA и BMP в BRGA, и переводить надо.
     
  10. _vi_

    _vi_ Денис

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    48
    вот я и переводил=) и нече не выходит , прикол еще раз говорю в том что даже если не переводить тож самое поэтому и стал юзать девила думал поможет - ан нет. да и BMP как раз в RGB a не BGR (уточню: бмп без сжатия)
    цитата МСДН =):
    [​IMG]
     
  11. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _vi_
    Ты какую-то фантастику рассказываешь. Код приаттач, посмотрим.
     
  12. _vi_

    _vi_ Денис

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    48
    сразу говорю щас я гружу из зип архива ели напрямую из файла тож самое!!!
    синтакс аля повер барсик плнирую под си преписать(ибо расширения там лучше юзать) сам код в длл
    отсутсвие BYVAL в функция означает ессесено что передаётся ссылка

    %GL_TEXTURE_3D_EXT = &H806F
    %GL_TEXTURE_WRAP_R = &H8072
    появились толькочто на них не смотри они нечего не меняют та как еще нет glTexImage3DEXT
    Код (Text):
    1. SUB LoadImageZip ALIAS "LoadZip" (TexID AS LONG, Pack AS ASCIIZ, filename AS ASCIIZ, OPT BYVAL wrap AS BYTE) EXPORT
    2.  Iwrap = wrap
    3.     IF DIR$(Pack) = "" THEN
    4.       MSGBOX "File not Found" + filename
    5.       EXIT SUB
    6.     END IF
    7.  DIM f AS DWORD
    8.  DIM m AS unz_file_info
    9.  DIM zData AS STRING
    10.  f = unzOpen(Pack)
    11.  unzLocateFile f, filename, 0
    12.  unzGetCurrentFileInfo f, m, "", 0, BYVAL 0, 0, "", 0
    13.  zData =SPACE$(m.uncompressed_size)
    14.  unzOpenCurrentFile f
    15.  unzReadCurrentFile f, BYVAL STRPTR(zData), LEN(zData)
    16.  DIM ImageType AS DWORD
    17.  SELECT CASE RIGHT$(filename, 3)
    18.    CASE "bmp"
    19.     ImageType = %IL_BMP
    20.    CASE "cut"
    21.      ImageType = %IL_CUT
    22.    CASE "ico"
    23.      ImageType = %IL_ICO
    24.    CASE "jpg"
    25.      ImageType = %IL_JPG
    26.    CASE "png"
    27.      ImageType = %IL_PNG
    28.    CASE "tga"
    29.      ImageType = %IL_TGA
    30.    CASE "raw"
    31.      ImageType = %IL_RAW
    32.    CASE "gif"
    33.      ImageType = %IL_GIF
    34.    CASE "dds"
    35.      ImageType = %IL_DDS
    36.    CASE "psd"
    37.      ImageType = %IL_PSD
    38.       CASE ELSE
    39.         MSGBOX "Format nit supported" + filename
    40.     END SELECT
    41.  ilLoadL ImageType, BYVAL STRPTR(zData), LEN(zData)
    42.  DIM biWidth AS LONG
    43.  DIM biHeight AS LONG
    44.  DIM biBpp AS LONG
    45.  biWidth = ilGetInteger(%IL_IMAGE_WIDTH)
    46.  biHeight = ilGetInteger(%IL_IMAGE_HEIGHT)
    47.  biBpp = ilGetInteger(%IL_IMAGE_BYTES_PER_PIXEL)
    48.  DIM PixType AS LONG
    49.  SELECT CASE biBpp
    50.     CASE 1
    51.       PixType = %GL_RGB8
    52.     CASE 3
    53.       PixType =  %GL_RGB
    54.     CASE 4
    55.       PixType =  %GL_RGBA
    56.  END SELECT
    57.  DIM biData AS STRING
    58.  biData = SPACE$(biWidth * biHeight * biBpp)
    59.  biData = ilGetData
    60.  CALL MakeTexture (TexID, biWidth, biHeight,PixType, BYVAL STRPTR(biData))
    61.  
    62. unzCloseCurrentFile f
    63. unzClose f
    64. zData = ""
    65. biData = ""
    66. END SUB
    67. %GL_TEXTURE_3D_EXT = &H806F
    68. %GL_TEXTURE_WRAP_R = &H8072
    69.  
    70.  
    71. SUB MakeTexture (TexId AS LONG, BYVAL tWidth AS LONG, BYVAL tHeight AS LONG, BYVAL format AS LONG, ImgData AS BYTE )
    72.  glGenTextures 2, texID
    73.  glBindTexture %GL_TEXTURE_2D, texID
    74.  glTexParameteri %GL_TEXTURE_2D, %GL_TEXTURE_MAG_FILTER,  %GL_LINEAR
    75.  glTexParameteri %GL_TEXTURE_2D, %GL_TEXTURE_MIN_FILTER,  %GL_LINEAR
    76. IF Iwrap <> 0 THEN
    77.  glTexParameteri %GL_TEXTURE_2D, %GL_TEXTURE_WRAP_S, %GL_REPEAT 'OR %GL_CLAMP
    78.  glTexParameteri %GL_TEXTURE_2D, %GL_TEXTURE_WRAP_T, %GL_REPEAT 'OR %GL_CLAMP
    79.  glTexParameteri %GL_TEXTURE_3D_EXT, %GL_TEXTURE_WRAP_R, %GL_REPEAT
    80.  END IF
    81.  glTexEnvf %GL_TEXTURE_ENV, %GL_TEXTURE_ENV_MODE, %GL_MODULATE
    82.  glTexImage2D %GL_TEXTURE_2D, 0, %GL_RGB, tWidth, tHeight, 0, format, %GL_UNSIGNED_BYTE , ImgData
    83. END SUB
     
  13. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Ну я так не играю, я хотел что нибудь работающее, которое можно компильнуть, посмотреть.
    Неужели нету ни одного человеческого исходника на Masm или С++.
    К тому же зделать небольшой тест, который просто грузит и показывает текстуру inho не очень сложно и долго.
     
  14. _vi_

    _vi_ Денис

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    48
    отходил тут телек посмотреть,=) щас усе будет накатаю побырому длл под си++, ехе останется на барсике он не столь важе там из настроек тока разрешения текстур2д и тест глубины все под глут, и еще всякой бяки типа чайника=) не относящейся к загруки текстур
     
  15. keYMax

    keYMax New Member

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

    _vi_ Денис

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    48
    Сорри ток не смейтесь =) как в сях узнать директорию в которой щас ехе находится? как токо скажите ехе бужет готов, решил без длл (а вдруг из-за нее)

    Все не надо =) и так запахало вот: http://nfteam.clan.su/denny_vremennaj/DemoTexture.rar
    как и ожидалось длл тут не причем=)
     
  17. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    _vi_
    мож потом пригодится
    WinAPI
    DWORD GetCurrentDirectory(
    DWORD nBufferLength,
    LPTSTR lpBuffer
    );
     
  18. _vi_

    _vi_ Денис

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    48
    спасибо конечно, но винапи есть винапи, есть ли стандарные средства, напривер в повербарсике это CURDIR$, а на ВБ app.patch(хотя может это и есть замаскированные апи)
     
  19. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    точно не помню, может через переменные окружения
    char *getenv(
    const char *varname
    );
    wchar_t *_wgetenv(
    const wchar_t *varname
    );
     
  20. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Прогнал
    char *_getcwd(
    char *buffer,
    int maxlen
    );
    wchar_t *_wgetcwd(
    wchar_t *buffer,
    int maxlen
    );