Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 09, 2025 20:32

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Alphatest auf radeon 9200
BeitragVerfasst: Fr Aug 04, 2006 10:30 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
Hallo, im DF wird ja gerade an einem Lemmings-Klon gearbeitet, und dort konnte eines der Teammember die Map nicht sehen, vermutlich, weil die radeon 9200 keinen Alphatest unterstützt, woran kann das liegen ? was sind die alternativen ?

das topic zum thema hier: viewtopic.php?t=5754

könnte man einfach blending verwenden ?


mfg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Aug 04, 2006 11:59 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Der Alphatest ist seit OpenGL 1.1 (wenn nicht sogar schon 1.0) vorhanden. Glaube mir. Dieser wird unterstützt. Von JEDER Grafikkarte die auch OpenGL unterstützt.

Es könnte sein, dass du zu knappe Parameter gewählt hast und durch "Ungenauigkeiten" der Test nicht funktioniert. Oder durch ein ungüstiges Texturformat.

Ja. Blending könnte man auch verwenden. Allerdings solltest du, wenn du Alphatest benutzen möchtest auch Alphatest benutzen, da blendung Rechenintensiver ist. Es hat schließlich einen Grund warum das eine extra Funktion ist.

Und wenn du uns sagst was du bei dem Test eingestellt hast, welche Werte in der Map stecken etc, dann bekommen wir deinen Alphatest ans laufen. Da bin ich mir sicher.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Aug 04, 2006 12:01 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
Code:
  1.  
  2. procedure TMap.Render;
  3. var
  4.   TmpWidth, TmpHeight: Extended;
  5. begin
  6.   glPushMatrix;
  7.  
  8.   glTranslatef(Position.X * (FEngine.Form.ClientWidth / FEngine.Width),
  9.                Position.Y * (FEngine.Form.ClientHeight / FEngine.Height), 0);
  10.  
  11.   TmpWidth  := (Size.X * (FEngine.Form.ClientWidth  / FEngine.Width))  / 2;
  12.   TmpHeight := (Size.Y * (FEngine.Form.ClientHeight / FEngine.Height)) / 2;
  13.  
  14.   //HINTERGRUND
  15.  
  16.   glBindTexture(GL_TEXTURE_2D, FBackground);
  17.  
  18.   glBegin(GL_QUADS);
  19.     glTexCoord2f(0, 1); glVertex3f(-TmpWidth, -TmpHeight, - MaxDepth + 2);
  20.     glTexCoord2f(1, 1); glVertex3f( TmpWidth, -TmpHeight, - MaxDepth + 2);
  21.     glTexCoord2f(1, 0);               glVertex3f( TmpWidth,  TmpHeight, - MaxDepth + 2);
  22.     glTexCoord2f(0, 0);               glVertex3f(-TmpWidth,  TmpHeight, - MaxDepth + 2);
  23.   glEnd;
  24.  
  25.   //MAP
  26.  
  27.   glEnable(GL_ALPHA_TEST);
  28.   glAlphaFunc(GL_GREATER, 0.1);
  29.  
  30.   FTexture.Bind;
  31.  
  32.   glBegin(GL_QUADS);
  33.     glTexCoord2f(0,              FTexture.height); glVertex3f(-TmpWidth, -TmpHeight, 1 - MaxDepth + 2);
  34.     glTexCoord2f(FTexture.width, FTexture.height); glVertex3f( TmpWidth, -TmpHeight, 1 - MaxDepth + 2);
  35.     glTexCoord2f(FTexture.width, 0);               glVertex3f( TmpWidth,  TmpHeight, 1 - MaxDepth + 2);
  36.     glTexCoord2f(0,              0);               glVertex3f(-TmpWidth,  TmpHeight, 1 - MaxDepth + 2);
  37.   glEnd;
  38.  
  39.   glDisable(GL_ALPHA_TEST);
  40.  
  41.   glDisable(GL_BLEND);
  42.  
  43.   FTexture.UnBind;
  44.  
  45.   glPopMatrix;
  46. end;
  47.  

das bild ist ein tga, von dem der alpha kanal nochmal extra als s/w abgespeichert wird, das ist aber fürs zeichnen erstmal wurst, der wird nur neu geladen, falls sich was an der map ändert

der hintergrund wird bei der person mit der 9200er gezeichnet, aber die map net (hintergrund ist ein jpeg)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Aug 04, 2006 16:42 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Hast du im Pixelformatdescriptor auch explizit einen Alphakanal verlangt? Je nach OpenGL-Implementation kanns sein dass man, wenn man das nicht explizit macht, keinen Alphakanal bekommt. Während andere Implementation automatisch einen Alphakanal liefern, selbst wenn man keinen anfordert.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Aug 04, 2006 17:13 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
Wenn ich wüsste, was ein Pixelformatdescriptor ist ^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Aug 04, 2006 17:41 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Der Alphakanal im Framebuffer wirkt sich doch nicht auf den Alphatest aus. Oder doch? Aber muss ja anscheinend. Wobei ich das nicht so richtig glauben kann. Denn so sieht dein Code eigentlich ganz gut aus.

Beim Erstellen deines Kontextes musst du ein Pixelformat auswählen und dort kannst du ach sagen, dass du gerne Alpha mit hättest. Es kann allerdings sein, dass du die Methode aus der dglOpenGL.pas benutzt. Da haben wir Alpha allerdings nicht direkt angeboten. Alles andere aber nicht Alpha. Wobei der Treiber sich dennoch gegen alphakanal entscheiden kann.

Evtl könnte es auch sein, dass der jenige 24Bit im Windows eingestellt hat, dann wird der auch weggelassen. Bei 32 sollte er von hause dabei sein.

PS: Wenn man dem Kontext zu viel aufzwingt kann es auch sein, dass er in den Softwaremodus umschaltet.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Aug 04, 2006 18:07 
Offline
DGL Member

Registriert: Di Mai 24, 2005 16:43
Beiträge: 710
kann ich denn bei der initialisierung, bzw nach der initialisierung eine aktivierung des alpha forcieren ?


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.013s | 16 Queries | GZIP : On ]