Формат данных для текстуры

Тема в разделе "WASM.DirectX", создана пользователем KingT, 20 сен 2008.

  1. KingT

    KingT Member

    Публикаций:
    0
    Регистрация:
    12 янв 2006
    Сообщения:
    208
    Создаю процедурную текстуру размером 64x64.Каким должен быть формат для массива,который необходимо передать в функции glTexImage2D?
    Я создаю массив таким образом:

    GLuint cord = 0;
    pixelmap = new RGB[64*64];
    for(int i=0;i<64;++i)
    {
    for (int j=0;j<64;++j)
    {
    int r = 100;
    int g = 255;
    int b = 255;

    pixelmap[cord].r = r;
    pixelmap[cord].g = g;
    pixelmap[cord].b = b;
    ++cord;


    }
    }

    Тоесть массив Pixelmap выглядит так:RGBRGBRGBRGB...
    У меня рисуются полоса красная,полоса зеленая,полоса синяя,а должны рисоваться полосы не по отдельным цветовым компонентам а смесь цветов.Накладываю я текстуру на прямоугольник:
    glTexCoord2f(0,0);glVertex3f(-50,0,-50);
    glTexCoord2f(0,1);glVertex3f(50,0,-50);
    glTexCoord2f(1,0);glVertex3f(50,0,50);
    glTexCoord2f(1,1);glVertex3f(-50,0,50);
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Сдаётся мне что каждая цветовая компонента у вас int, размером соответственно 4 байта. А родной формат OGL это BGRA, где на один канал 1 байт. Или возможны чудеса с неверными параметрами glTexImage2D.
     
  3. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    Как вы вызываете TexImage2D?
    Тут, как правильно заметил Booster, не исключён косяк с самим вызовом.
     
  4. KingT

    KingT Member

    Публикаций:
    0
    Регистрация:
    12 янв 2006
    Сообщения:
    208
    _int8 решил проблему.Спасибо.