На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Правила раздела "Программирование графики"
1) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с чтением, сохранением, обработкой, созданием, отрисовкой графической информации (в том числе - 3D [OpenGL, Direct3D] и анимации [в т.ч. VFW, DirectShow, OpenDML]).
Флэш обсуждают здесь!.

2) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе.

3) Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно.



Ваше мнение о модераторах: user posted imageBarazuk, user posted imageOpenGL, user posted imageMikle
Модераторы: OpenGL, Mikle
  
> как загрузить bmp с альфа, OpenGL
    При отображении текстуры с альфа каналом изображение искажается, похоже что не хватает данных именно с альфа.

    ExpandedWrap disabled
      AUX_RGBImageRec *FormLoadBMP(char filename[256])
      {
          FILE *file = NULL;
          if (!filename)
          {
              return NULL;
          }
          file = fopen(filename, "r");
          if (file)
          {
              fclose(file);
              return auxDIBImageLoad(filename);
          }
          return NULL;
      }
       
      // ...
       
          AUX_RGBImageRec *TextureImage[1];
          memset(TextureImage, 0, sizeof(void *)*1);
          for (i=0; i<1; i++)
          {
          glGenTextures(1, &e::texture[i]);
          glBindTexture(GL_TEXTURE_2D, e::texture[i]);
          glTexImage2D(GL_TEXTURE_2D, 0, 4, TextureImage[i]->sizeX, TextureImage[i]->sizeY, 0, GL_RGBA, GL_UNSIGNED_BYTE, TextureImage[i]->data);
          glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
          glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
          glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
          glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
          }
       
      // для RGB все работает нормально
      // glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[i]->sizeX, TextureImage[i]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[i]->data);


    Как правильно загрузить текстуру с альфа каналом ?
    Сообщение отредактировано: E.A. -
      Нашел как загружается файл, но становится прозрачным не только фон(где альфа черное) но и рисунок.

      ExpandedWrap disabled
        data = (unsigned char*) malloc(64 * 64 * 4);
        fread(data, 54, 1, file);
        fread(data, 64 * 64 * 4, 1, file);
         
        glGenTextures(1, &e::texture[i]);
        glBindTexture(GL_TEXTURE_2D, e::texture[i]);
        glTexImage2D(GL_TEXTURE_2D, 0, 4, 64, 64, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
         
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
        glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
         
        // ...
         
        glEnable(GL_ALPHA_TEST);
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // если менять в этой функции аргументы, то появляется картинка но прозрачная картинка а не фон...
        Уважаемые коллеги, можете проверить правильный ли альфа канал в рисунке bmp ?
        Прикреплённый файлПрикреплённый файлpic.rar (3,65 Кбайт, скачиваний: 24)
          В твоём bmp альфаканал есть, но он чистый - нули.
          Вот как-то так должно быть:
          Прикреплённый файлПрикреплённый файлpic1.zip (415 байт, скачиваний: 24)
            Mikle Спасибо ! получилось, работает как надо.
            А как сделать такой рисунок, вот как я делал в фотошопе:
            Прикреплённая картинка
            Прикреплённая картинка

            Что нужно включить или как это делается ?
              рисунок в архиве с большим разрешением
              Прикреплённый файлПрикреплённый файлphotoshop.rar (27,52 Кбайт, скачиваний: 21)
                Разобрался, нужно было перейти на вкладку Channels и добавить канал Альфа 1
                Прикреплённая картинка
                Прикреплённая картинка


                Спасибо. Вопрос решен.
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script Execution time: 0,1304 ]   [ 27 queries used ]   [ Generated: 20.07.19, 14:22 GMT ]