SetViewport Programmabsturz

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Suco-X

Betreff: SetViewport Programmabsturz

BeitragMi, März 26, 2008 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Abend.
Ich habe hier schon häufiger mitbekommen, dass der Befehl SetViewport bei einigen Rechnern (Anscheinend die mit alten Grafikkarten) zu einem Programmabsturz führt. Da ich aber nicht drum rum komme diesen Befehl zu nutzen, will ich der Sache mal genauer auf den Grund gehen und wende mich an euch. Wer hatte also schonmal so einen Absturz, wer kennt die genauen Gründe, passiert das ganze bei beiden Treibern und gibt es vielleicht die Möglichkeit, Hinweise auf ein nicht-funktionieren bei dem jeweiligen Programmausführer zu erhalten?
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
 

Dreamora

BeitragDo, März 27, 2008 0:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn es in DX ist: Kannst du nix dagegen machen.

Grund ist das Viewport in BlitzMax unter DX mit ClipPlanes arbeitet. 4 um genau zu sein.
Die Karten die dabei abstürzen jedoch supporten nur 2 ClipPlanes.

In OpenGL haben sie kein Problem weil der GLScissor Test anders funktioniert.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

ChristianK

BeitragDo, März 27, 2008 0:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit ich weiss, liegt es an daran, dass ältere Grafikkarten nicht genug Clip-Planes unterstützen. Ich dachte aber, dass das Programm nicht abstürtzt, sondern nur Grafikfehler hinterlässt. Aber das liegt vielleicht auch am Treiber.
Jedenfalls kann man ( bei DirectX ) die maximale Anzahl von unterstützten Clip-Planes mit Hilfe der Methode GetCaps ermitteln, die zu IDirect3DDevice7 gehört.
So kommt man an das Device:

Code: [AUSKLAPPEN]
Local device:IDirect3DDevice7 = D3D7Max2DDriver( ).device

Die Struktur, die GetCaps benötigt, ist so aufgebaut:

Code: [AUSKLAPPEN]
typedef struct _D3DDeviceDesc7 {
    DWORD        dwDevCaps;   
    D3DPRIMCAPS  dpcLineCaps;
    D3DPRIMCAPS  dpcTriCaps; 
    DWORD        dwDeviceRenderBitDepth; 
    DWORD        dwDeviceZBufferBitDepth;
    DWORD        dwMinTextureWidth, dwMinTextureHeight;
    DWORD        dwMaxTextureWidth, dwMaxTextureHeight;
    DWORD        dwMaxTextureRepeat;
    DWORD        dwMaxTextureAspectRatio;
    DWORD        dwMaxAnisotropy;
    D3DVALUE     dvGuardBandLeft;
    D3DVALUE     dvGuardBandTop;
    D3DVALUE     dvGuardBandRight;
    D3DVALUE     dvGuardBandBottom;
    D3DVALUE     dvExtentsAdjust;
    DWORD        dwStencilCaps;
    DWORD        dwFVFCaps;
    DWORD        dwTextureOpCaps;
    WORD         wMaxTextureBlendStages;
    WORD         wMaxSimultaneousTextures;
    DWORD        dwMaxActiveLights;
    D3DVALUE     dvMaxVertexW;
    GUID         deviceGUID;
    WORD         wMaxUserClipPlanes;
    WORD         wMaxVertexBlendMatrices;
    DWORD        dwVertexProcessingCaps;
    DWORD        dwReserved1;
    DWORD        dwReserved2;
    DWORD        dwReserved3;
    DWORD        dwReserved4;
} D3DDEVICEDESC7, *LPD3DDEVICEDESC7;
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

Suco-X

Betreff: .....

BeitragDo, März 27, 2008 0:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
Also funktioniert es mit dem OpenGL Treiber "ohne" Absturz und Grafikfehler?

Ich habe mal ein wenig in den DX Treiber geschaut und diese Zeilen gefunden
Code: [AUSKLAPPEN]
         
Local err
If device.SetClipPlane(0,[1.0,0.0,0.0,-Float(x)]) err=True
If device.SetClipPlane(1,[-1.0,0.0,0.0,Float(x+width)]) err=True
If device.SetClipPlane(2,[0.0,1.0,0.0,-Float(y)]) err=True
If device.SetClipPlane(3,[0.0,-1.0,0.0,Float(y+height)]) err=True
If err Throw "device does not support clipplanes"


Da der Fehler nirgendwo sonst abgefangen wird könnte man ein Programmende ja mit dem Abfangen dieses Fehlers beheben denke ich mal. Weiß aber nicht ob es DX Interne Fehler geben könnte, die zu einem Absturz führen.

@ChristianK:
Danke für den Hinweis, mal schauen was ich damit noch für Informationen erhalten kann.

Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group