Конференция "Игры" » OpenGL Delphi Alpha-Bland [Delphi, Windows]
 
  • sloosar © (03.10.08 14:50) [0]
    Доброго времени суток.
    У меня такая проблема. Мне надо что бы на текстуре один цвет был полностью прозрачен. Я кое-что нарыл в инете, но оно не работает вот код :

    r := TBitmap.Create;
         r.LoadFromFile('cursor.bmp');
         n := TBitmap.Create;
         n.LoadFromFile('cursor_bland.bmp');

             For i := 0 to 127 do
         For j := 0 to 127 do begin
           bits2 [i, j, 0] := GetRValue(r.Canvas.Pixels[i,j]);
           bits2 [i, j, 1] := GetGValue(r.Canvas.Pixels[i,j]);
           bits2 [i, j, 2] := GetBValue(r.Canvas.Pixels[i,j]);
           bits2 [i, j, 3] := GetBValue(n.Canvas.Pixels[i,j]);

       end;
       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_nearest);
       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_nearest);
       gluBuild2DMipmaps(GL_TEXTURE_2D,4,128,128,GL_RGBA,GL_UNSIGNED_BYTE,@bits2);
       glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
    {________________________________________________________}

    glEnable(GL_TEXTURE_2D);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    glEnableClientState(GL_VERTEX_ARRAY);
    glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
    glEnable(GL_BLEND);

       glVertexPointer(3, GL_FLOAT, 0, @bVertex);
    glTexCoordPointer(3,GL_FLOAT,0,@bVertex);
    glDrawArrays(gl_quads, 0, 4);

    glDisable(GL_TEXTURE_2D);
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    glDisableClientState(GL_VERTEX_ARRAY);
    glDisable(GL_BLEND);

  • XProger © (03.10.08 18:10) [1]
    если GetBValue(n.Canvas.Pixels[i,j]) = прозрачный_цвет тогда
     bits2 [i, j, 3] := 0
    иначе
     bits2 [i, j, 3] := 255;
  • XProger © (03.10.08 18:10) [2]
    тьфу...
    * если n.Canvas.Pixels[i,j] = прозрачный_цвет тогда ...
  • antonn © (03.10.08 18:38) [3]
    синий канал... мож ему colorkey нужно? тогда и другие на 0 нужно проверять
  • sloosar © (04.10.08 21:33) [4]
    Текстура стала прозрачной, но примитив на которой она нарисована - нет
  • XProger © (04.10.08 23:34) [5]
    GL_DECAL замени на GL_MODULATE
  • sloosar © (05.10.08 15:31) [6]
    Теперь фсё работает как надо, токо фсё стало очень тёмным.
  • @!!ex © (05.10.08 15:32) [7]
    > [5] XProger ©   (04.10.08 23:34)

    Первое что я ему посоветовал. :))
  • sloosar © (05.10.08 15:44) [8]
    Так как мне от темноты избавится?
  • XProger © (05.10.08 18:13) [9]
    glColor3f(1, 1, 1) перед рендером попробуй выставить
  • sloosar © (05.10.08 20:44) [10]
    Я уже решил проблему. Просто надо было свет включить.
  • @!!ex © (05.10.08 20:54) [11]
    > [10] sloosar ©   (05.10.08 20:44)

    Выложи весь код. ощущение, что ты одни грабли прикрываешь другими граблями.
  • sloosar © (06.10.08 14:20) [12]
    У меня просто код расбросан по библиотеках.
 
Конференция "Игры" » OpenGL Delphi Alpha-Bland [Delphi, Windows]
Есть новые Нет новых   [134431   +5][b:0][p:0.002]