Einzelnen Beitrag anzeigen

Destroxi

Registriert seit: 29. Okt 2011
55 Beiträge
 
Delphi 7 Enterprise
 
#1

OpenGL Alpha Kanal funktioniert nicht

  Alt 5. Dez 2011, 20:14
Hi,
ich habe das Problem, dass bei mir plötzlich der Alphakanal nicht mehr funktioniert.
Früher ging er jetzt nochmal probiert und schon geht er nicht mehr, sprich der Hintergrund der Textur bleibt schwarz.

Mein Quellcode:
Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
var
 i1, i2: Integer;
begin
 If not InitOpenGL then
 begin
  ErrorMsg('Konnte OpenGL nicht initialisieren!'#10'Error: '+IntToStr(GetLastError));
  Exit;
 end;
 DC := GetDC(Handle);
 RC := CreateRenderingContext(DC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);
 ActivateRenderingContext(DC, RC);

 glClearColor(0.3, 0.3, 1, 0);
 Application.OnIdle := glRender;

 try
  For i1 := Low(MarioTex) to High(MarioTex) do
  begin
   For i2 := Low(MarioTex[i1]) to High(MarioTex[i1]) do
    LoadTexture(GetCurrentDir+'\Textures\'+IntToStr(i1)+'\frame_'+GetFrameStr(i2)+'.jpg', MarioTex[1][i2], False);
  end;
 except
  on E: Exception do
   ErrorMsg('Konnte Textur['+IntToStr(i1)+']['+GetFrameStr(i2)+'] nicht laden!'#10'Fehler: ['+IntToStr(GetLastError)+']'+E.Message);
 end;
 AktFrame := Low(MarioTex);

 glEnable(GL_TEXTURE_2D);
 glEnable(GL_ALPHA_TEST);
 glAlphaFunc(GL_GREATER, 0.1);
Und zum anzeigen:
Delphi-Quellcode:
procedure TMainForm.glRender(Sender: TObject; var Done: Boolean);
begin
 glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
 glClearColor(0.3, 0.3, 1, 0);

 glSetSizes;

 glEnable(GL_ALPHA_TEST);
 glAlphaFunc(GL_GREATER, 0.1);
 glBindTexture(GL_TEXTURE_2D, MarioTex[1][AktFrame]);

 Player.Walk(1);
 glDraw(Player.pX, Player.pY, Player.pWidth, Player.pHeight);

 SwapBuffers(DC);

 Done := False;
end;
Was ist da falsch?
Ist der Fehler beim anzeigen oder beim laden?
Danke für jede Hilfe!
  Mit Zitat antworten Zitat