OpenGL: FBO + ATi-Karte == Problem

Übersicht Sonstiges Smalltalk

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Fetze

Betreff: OpenGL: FBO + ATi-Karte == Problem

BeitragMo, Jul 07, 2008 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe ein Problem und es geht um OpenGL, daher poste ich in diesem Forum, obwohl die eigentlich verwendete Sprache nicht BlitzMax ist. OpenGL ist ja schließlich auch mit ein BLitzMax-Thema.

Nach langem herumprobieren habe ich FBOs unter OpenGL vor einiger Zeit zum laufen gebracht. Hier der funktionierende Code:

Code: [AUSKLAPPEN]


--------------------< CreateFBO( .. ) from Texture object >--------------------

// Set-up texture
Bind(this);
Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGBA8, oglWidth, oglHeight, 0, Gl.GL_RGBA, Gl.GL_UNSIGNED_BYTE, null);
this.ApplyTexFlags( .. );

// Create objects
Gl.glGenFramebuffersEXT(1, out this.framebufferID);
Gl.glBindFramebufferEXT(Gl.GL_FRAMEBUFFER_EXT, this.framebufferID);

// Attach texture to FBO
Gl.glFramebufferTexture2DEXT(Gl.GL_FRAMEBUFFER_EXT, Gl.GL_COLOR_ATTACHMENT0_EXT, Gl.GL_TEXTURE_2D, this.textureID, 0);

// Initialize Depthbuffer
if (reqZBuffer)
{
   Gl.glGenRenderbuffersEXT(1, out this.depthbufferID);
   Gl.glBindRenderbufferEXT(Gl.GL_RENDERBUFFER_EXT, this.depthbufferID);
   Gl.glRenderbufferStorageEXT(Gl.GL_RENDERBUFFER_EXT, Gl.GL_DEPTH_COMPONENT, oglWidth, oglHeight);
   Gl.glFramebufferRenderbufferEXT(Gl.GL_FRAMEBUFFER_EXT, Gl.GL_DEPTH_ATTACHMENT_EXT, Gl.GL_RENDERBUFFER_EXT, this.depthbufferID);
}

// Status check
<code stuff>

// Unbind all to regularily continue drawing operations
Gl.glBindRenderbufferEXT(Gl.GL_RENDERBUFFER_EXT, 0);
Gl.glBindFramebufferEXT(Gl.GL_FRAMEBUFFER_EXT, 0);
Bind(lastBound);

-----------------------------------------------------------------------------------


Code: [AUSKLAPPEN]

--------------------< ApplyTexFlags( .. ) from Texture object >--------------------

if ((this.texflags & TexFlag.EdgeClamp) != 0)
{
   Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_S, Gl.GL_CLAMP_TO_EDGE);
   Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_T, Gl.GL_CLAMP_TO_EDGE);
}
if ((this.texflags & TexFlag.Smooth) != 0)
{
   if ((this.texflags & TexFlag.MipMap) != 0)
   {
      Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR_MIPMAP_LINEAR);
      Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
      Gl.glGenerateMipmapEXT(Gl.GL_TEXTURE_2D);
   }
   else
   {
      Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);
      Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
   }
}
else
{
   if ((this.texflags & TexFlag.MipMap) != 0)
   {
      Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_NEAREST_MIPMAP_LINEAR);
      Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_NEAREST);
      Gl.glGenerateMipmapEXT(Gl.GL_TEXTURE_2D);
   }
   else
   {
      Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_NEAREST);
      Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_NEAREST);
   }
}

-----------------------------------------------------------------------------------


Wie gesagt: Dieser Code funktioniert wunderbar. Das Problem ist, dass er genau das auf ATi-Karten scheinbar *nicht* tut, wieso ist mir ein Rätsel.

Hat irgendjemand eine Lösung oder ein vergleichbares Problem?

ozzi789

BeitragMo, Jul 07, 2008 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Neuster Treiber druffe ?
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Fetze

BeitragMo, Jul 07, 2008 18:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe kein ATi-Testsystem und von den Leuten, die entsprechende Problemberichte abgaben habe ich trotz Nachfrage keine Informationen erhalten. Insofern geht es hier mehr darum, ob das Problem bekannt ist und ob etwas dagegen getan werden kann.
 

Ava

Gast

BeitragMo, Jul 07, 2008 20:49
Antworten mit Zitat
Hi Fetze! Smile

Also ich kann dazu nur soviel sagen ... 1) ich habe eine ATI Karte ... und 2) sieht Dein Code-Schnippsel dem sehr ähnlich, woran ich zur Zeit arbeite ... und dieses läuft bei mir Exclamation

Oki, keine Ahnung, ob Dir das jetzt irgendwie hilft?! Very Happy ... wenn Du magst, darfst Du mir gerne etwas schicken, dann würde ich es für Dich austesten *smile*

Lieben Gruss,
Ava

Fetze

BeitragMo, Jul 07, 2008 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut, dann tritt das Problem wenigstens nicht *grundsätzlich* bei ATi-Karten auf, das ist doch beruhigend zu wissen ^^

Ich vermute jetzt einfach mal, dass in den entsprechenden Fällen veraltete Treiber vorlagen - was anderes kann ich jetzt für den Moment dann wie's aussieht sowieso nicht tun.
 

klepto2

BeitragDi, Jul 08, 2008 12:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ATI hatte arge Probleme mit FBOs, vorallem mit reinen Depth FBOs. Allerdings hat ATI seit dem Catalyst 7.12 einen komplett neu geschriebenen OpenGL Treiber drinne. Dieser ist bis zur aktuellen Version sehr verbessert worden und gleicht sich vom verhalten immer mehr NVidia an.

Ich würde empfehlen erstmal auf den neuesten Treiber hinzuweisen und ansonsten direkt mit dem ATI Developer Support in kontakt treten. Das mit dem Depthbuffer Fehler zb wurde aufgrund einer Mail von Leadwerks und mir tatsächlich gefixt und das relativ schnell.
Da es bei dem neuen Treiber natürlich immer mal wieder Fehler geben kann, kann so eine Mail dann nicht schaden Wink
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu

Fetze

BeitragDi, Jul 08, 2008 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut, werde darauf hinweisen. Danke Smile

Falls sich Leute mit aktuellen Treibern finden, bei denen das ganze Probleme verursacht, werde ich deinen Vorschlag mit der eMail an den Dev Support denke ich aufgreifen - ansonsten warte ich eifach mal ab, bis sich das Problem durch steigenden Treiberstandard verflüchtigt - scheint ja nun doch nicht am Code zu liegen Smile
 

Dreamora

BeitragDi, Jul 08, 2008 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Moved da es nicht BM ist.

OpenGL ist kein Teil von BM, OpenGL ist eine API.
Da nicht Blitz related bitte im OffTopic fragen oder im Board der Sprache die du verwendest. Oder halt im OGL Board.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Kernle 32DLL

BeitragDi, Jul 08, 2008 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe hier insgesammt 4 Computer mit ATI Karten drin rumstehen (+ ein Laptop mit ner Oboard ATI Karte, aber auf dem bekomme ich sämtliche mit BB oder Bmax, etc. geschriebene Programme nur sehr sporadisch ans laufen). Wenn du willst kann ich die mal mit deinem Prog durchtesten und dir Grafikkarten Name + Treiberversion, etc. durchgeben. Musst mir nur was ausführbares zum testen geben. Mit dem Code da oben kann ich nichts anfangen @_@.

So long,
Kernle
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog]
Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89
Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009

Fetze

BeitragDi, Jul 08, 2008 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Als Testprogramm kannst du die Graphics Source Demo von ZweiDe verwenden - danke! Smile
 

#Reaper

Newsposter

BeitragDi, Jul 08, 2008 22:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab auch eine (ältere..) ATi-Karte, geht bei mir trotz der neusten Treiber nicht. Wink
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Thorsten

BeitragMi, Jul 09, 2008 2:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Radeon X1600, funktioniert alles.

mfG,

Thorsten
  • Zuletzt bearbeitet von Thorsten am Mi, Jul 09, 2008 10:06, insgesamt einmal bearbeitet

BladeRunner

Moderator

BeitragMi, Jul 09, 2008 7:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Läuft einwandfrei. Mobility Radeon x1600.
Ich hatte damals für die Crysis-Demo neue Treiber besorgt weil da einiges nicht lief, seitdem rennt die Karte richtig gut, falls Dir das was hilft.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Shark

BeitragMi, Jul 09, 2008 13:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Fetze,
ich bekomme mit meiner ATI x800 nachdem die Graphics Source Demo schließt so ein Fenster

user posted image

Zitat:
OpenGL renderer: Radeon X800 Series (Omega 3.8.442)



mfg Shark

Thorsten

BeitragMi, Jul 09, 2008 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Jop, das sollte ich wohl noch hinzufügen (siehe Shark), außerdem habe ich auch die neuesten Omega Treiber.

Fetze

BeitragMi, Jul 09, 2008 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm.. dann scheint es bestimmte ATi Karten zu geben, die auch mit aktuellen Treibern nicht mit FBOs klarkommen..

da ich auf FBOs absolut nichtverzichten kann, werde ich da aber wohl recht wenig gegen tun können.. es sei denn jemand mit Fehler kann mir sagen, dass FBOs mit anderem (zB. BlitzMax-OGL-)Code schon bei ihm funktioniert haben.
Es ist nicht so, dass ich mir keine Mühe um Kompatibilität machen würde - allerdings habe ich insgesamt sicherlich nun rund 10 Stunden darin investiert, herumzuprobieren und zu recherchieren; ein gewisser Konsens scheint in verschiedenen Foren nun auch darüber zu herrschen dass ATi Karten sich tendenziell weniger mit OpenGL vertragen als NVidia Karten und es oft an den Treibern liegt.

Insofern werde ich das, sollte niemand einen Rat wissen, erstmal alles beim alten lassen. Auch wenn ich liebend gerne auch ATi Karten voll supporten würde ôo


Edit: Ist eine x800 ATi Karte denn eher neu oder eher alt? Wie lange liegt das Erscheinungsdatum zurück? Wenn sie eher der älteren Generation angehört, dürfte sich das Problem ja ohnehin binnen fortschreitender Entwicklungszeit lösen.

Thorsten

BeitragMi, Jul 09, 2008 14:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine Karte (X1600) ist um die 2 Jahre alt (AGP).

mfG,

Thorsten

EDIT : Zitat:
Die Radeon X1600-Serie wurde im 4. Quartal des Jahres 2005 veröffentlicht.
 

Shark

BeitragMi, Jul 09, 2008 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine Grafikkarte ( x800) ist im Jahre 2004 erschienen.
Also schon satte 4 Jahre alt.
Laut Produktbeschreibung müsste meine Grafikkarte Opengl2.0 unterstützen.
Jetzt weiss ich nicht seit wann es FBOs bei Opengl gibt.

mfg Shark

Fetze

BeitragMi, Jul 09, 2008 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Sollten zumindest sei 2.1 fester Bestandteil der Spezifikation sein; allerdings ist mir auch zu Ohren gekommen, dass ATi in Treibern und Karten nicht zwingend die "vollständige" OpenGL-Spezifikation - also inklusive gängiger Extensions - unterstützt. Kann gut sein, dass FBOs vor vier Jahren von ATi noch nicht supported wurden. ôo

Thorsten

BeitragMi, Jul 09, 2008 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Dir ist klar, dass bei mir der selbe Fehler kommt^^ ? :weird:

mfG,

Thorsten

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group