BGR когда должен быть RGB

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

  1. _vi_

    _vi_ Денис

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    48
    Вобщем проблемы две:
    1. По честному загружаю TGA и BMP текстуры, натягиваю на кубик и вижу: красная текстура стала синей (TGA ), а картинка (ВМР) из позитивной превратилась в негативную, значит почему-то RGB воспринимаеться как BGR. в функциях загрузки нет не чего необычного. Могут ли за это отвечать какието насройки? что самое интересное если убрать из загрузки ТГА код замены байт, то проблема не исчезает, хотя по идеи ...
    код создания текстуры:
    Код (Text):
    1. glGenTextures 1, texID
    2.  glBindTexture %GL_TEXTURE_2D, texID
    3.  IF Iwrap <> 0 THEN
    4.  glTexParameteri %GL_TEXTURE_2D, %GL_TEXTURE_WRAP_S, %GL_REPEAT OR %GL_CLAMP
    5.  glTexParameteri %GL_TEXTURE_2D, %GL_TEXTURE_WRAP_T, %GL_REPEAT OR %GL_CLAMP
    6.  END IF
    7.  glTexParameteri %GL_TEXTURE_2D, %GL_TEXTURE_MAG_FILTER, %GL_LINEAR
    8.  glTexParameteri %GL_TEXTURE_2D, %GL_TEXTURE_MIN_FILTER, %GL_LINEAR
    9.  glTexEnvf %GL_TEXTURE_ENV, %GL_TEXTURE_ENV_MODE, %GL_MODULATE
    10.  glTexImage2D %GL_TEXTURE_2D, 0, %GL_RGB, tWidth, tHeight, 0, format, %GL_UNSIGNED_BYTE, ImgData
    2. А вторая немного не в тему:
    Кубик этот прозрачен хотя depth test включен, но что странно прозрачны все стороны кроме одной, по всей видимости она лицевая какая то =). Как так ума не приложу


    З.Ы. Кому интересно прикрепил демку http://vinevskiifront.narod.ru/RGBerror.rar
    кнопка Q - усиановить TGA текстуру
    кнопка W - устанновить BMP
    Esc - выход
    окно безобразное =) может выдавать ошибку при выходе: екзешнить призван только протестить и поэтому обработчик событий окна не делал
     
  2. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    _vi_,

    эта тема немного обсуждалась вот тут. может, поможет.
     
  3. _vi_

    _vi_ Денис

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    48
    К сожелению это уже читал =(, но проблема не в том что текстура не отображается, а том как она отображается. цвета инвертируютя, причем ,подчеркиваю, если не перествлять байты при загрузке ТГА не чего не меняется - я в шоке, причем раньше юзал тотже код и все норм было =( седня добавил загрузку RLE тоже сомое, хотя впрочем какая разница - таже ТГА
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _vi_
    Кулинг (отбрасывание одной из сторон), наверно включено. Рисуй всё или по часовой и или против.

    Насчёт цвета текстур: Вопрос в том почему ничего не меняется при перестановке байт, в этом IMHO и надо искать проблему.
     
  5. _vi_

    _vi_ Денис

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    48
    С этим разобрался, просто тестил несколько настроек, некоторые закоментировал а некоторые забыл и получилось что было включено:
    glEnable %GL_BLEND
    glBlendFunc %GL_SRC_ALPHA, %GL_ONE
    Ну а БМП? ему то что надо?
     
  6. dr_dred

    dr_dred Сергей

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    301
    Адрес:
    Russia
    На Второй вопрос: Проблема в инициализации: название функции не помню, она отвечает за прорисовку и порядок прорисовки слоев. При повороте задняя грань, которая не рисовалась, не видна
     
  7. _vi_

    _vi_ Денис

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    48
    ыыы ну вообщето все рисовалось просто одна грань не прозрачна а другие прозрачны, - пробывал разные варианты смешения и забыл где то один выключить.
     
  8. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _vi_
    Хех, tagRGBTRIPLE.
    Посмотри на определение этой структуры, разве реально это не BGR?
    У Нехе тоже сказано про этот прикол, называется RGB, а на самом деле BGR.
    Ты же вроде написал что всё запахало?
     
  9. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Да и с чего ты решил, что il функции будут автоматом переводить BGR в RGB?
    Вот ilutGLLoadImage по идее должна, так: ilutGLLoadImage loads an image directly to an OpenGL texture, skipping the use of OpenIL image names.
     
  10. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Держи, отображает теперь нормально.
     
  11. _vi_

    _vi_ Денис

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    48
    Ваууууу красота спасибо огромное, хахаххахахахха ну я намутил воду=)))