hue/saturation
  • dharryadharrya September 2010
    Никто не занимался проблемой отсутствия hue и saturation? может у кого какие наработки есть, да бы не топать дважды на одни и теже грабли:)
  • dharryadharrya September 2010
    пытаюсь сделать hue простым добавлением колора каждому пикселу текстурки...работает, но лишь при инициализации, в чем я не прав?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void hgeSprite::SetHUE(DWORD col)
    {
    int w=tex_width;
    DWORD* tex = hge->Texture_Lock(quad.tex,true,0,0,tex_width,tex_height);
    for (int i=0;i<tex_width;i++) for (int k=0;k<tex_height;k++)
    {
    tex [ i + k * w ] += col;
    }
    hge->Texture_Unlock(quad.tex);
    }

    нивкакую он не хочет меняться в FrameFunc
  • kvakvskvakvs September 2010
    А грабли заключаются в том, что менять живую текстуру прямо в видеопамяти операция дорогая, плюс у тебя написана абсолютно математически неправильно.

    Если надо в игре менять цветность и оттенок - надо делать свой пиксельный шейдер (задача скажем так нетривиальная, и требует внесения модификаций в HGE или скачать уже модифицированный). Шейдер посчитает для каждого пикселя текстуры нужный оттенок и выведет на экран уже готовый новый пиксель.

    Либо хранить текстуры в черно белом цвете, и множить на нужный цвет прямо при выводе - HGE это позволяет.
  • dharryadharrya September 2010
    Спасибо! буду разбиратся:) пока оставил как есть, HUE при помощи HSB:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    void hgeSprite::SetHUE(float h,float s,float v) // h [0,360] s [0,1] v [0,1] 
    {
    DWORD* tex;
    int w=tex_width;
    tex = hge->Texture_Lock(quad.tex,true,0,0,tex_width,tex_height);
    hgeColorHSV *color;
    color=new hgeColorHSV(0,0,0,0);
    for (int i=0;i<tex_width;i++) for (int k=0;k<tex_height;k++)
    {
    color->SetHWColor(tex [ i + k * w ]);
    color->AddColor(h/360,s,v,0);
    tex [ i + k * w ] = color->GetHWColor();
    }
    hge->Texture_Unlock(quad.tex);
    }

    мне это было необходимо лишь для создания рандомной раскраски(из заданного списка), посему оптимальным решением для меня стало создание массива текстур с "хуем" и их рандомный выбор.
    P.S. раскраска черно-белого спрайта увы мне не подходит

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Sign In Apply for Membership

In this Discussion

Who's Online (0)