DirectX Verhalten auf unterschiedlichen Rechnern



  • Ich habe ein gewisses Problem mit der Liniendarstellungen unter DirectX. Und zwar habe ich ein Programm geschrieben, mit dem man vermaschte Körper anzeigen kann. Dazu werden die Vermaschungslinien als LPD3DXMESH mittels

    this->m_pMeshEnhanced->DrawSubset(0);
    

    gezeichnet.

    Zusätzlich habe ich einige Linien mittels

    m_pd3dDevice->SetStreamSource(0, this->m_pPolygonBuffer, 0, sizeof(tVertex));			
    m_pd3dDevice->DrawPrimitive(D3DPT_LINELIST, 0, polygon_size);
    

    gezeichnet.

    In der Funktion RestoreDeviceObjects() habe ich folgenden Render-Einstellungen vorgenommen:

    m_pd3dDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
    m_pd3dDevice->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT);
    m_pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); 
    m_pd3dDevice->SetRenderState(D3DRS_LIGHTING, TRUE);	
    m_pd3dDevice->SetRenderState(D3DRS_CLIPPING, TRUE);	
    m_pd3dDevice->SetRenderState(D3DRS_LOCALVIEWER, FALSE);
    m_pd3dDevice->SetRenderState(D3DRS_DITHERENABLE, TRUE);
    

    Zusätzlich kann ich noch die Projektionsarten zwischen Zentral- und Parallelprojektion umschalten.

    ****************************************************************************

    Auf meinem aktuellen Rechner funktioniert alles wie es sein sollte. Auch auf anderen Rechnern funktioniert es. Jedoch habe ich zwei Rechner gefunden, wo dies nicht der Fall ist.

    Auf dem ersten Rechner verschwinden einige Linien, sobald die Fenstergröße eine gewisse Größe von um die 1200x1200 überschreitet. Macht man das Fenster kleiner als 1200x1200, werden alle Linien gezeichnet. Man man es größer, fehlen einige Linien.

    Auf dem zweiten Rechner zeigt sich wiederrum ein anderes Bild. Dort tritt der Fehler der fehlenden Linien nicht auf. Dafür werden aber beide Linienarten in der Parallelprojektion nicht richtig gezeichnet. In der Zentralprojektion sind die Linien wie sie sein sollten. Aber in der Parallelprojektion sind diese eindeutig zu dünn.

    Hat jemand eine Ahnung wo das Problem liegen könnte ?


Anmelden zum Antworten