DirectDraw DDPIXELFORMAT 32Bit



  • Hallo
    versuche DDPIXELFORMAT mit 32Bit für ein Overlay anzulegen, geht aber voll daneben.
    Hier ist der Code teil:

    /*******************************************/
    	/* Create Overlay                          */
    	/*******************************************/
    	DDPIXELFORMAT 	ddPixelFormat;
    	ddPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
         // fill the pixel-format structure:
         if (FAILED(hRet = m_pddsFrontBuffer->GetPixelFormat(&ddPixelFormat)))
         {
             AfxMessageBox("Failed to create Pixel-Format Structure.\n");
             return FALSE; 
         }
    	ddPixelFormat.dwFlags= DDPF_RGB;
         ddPixelFormat.dwFourCC= 0; 
    	ddPixelFormat.dwRGBBitCount = 32;
    
    	ddsd.dwSize = sizeof(DDSURFACEDESC);
    	ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT;
    	ddsd.ddsCaps.dwCaps = DDSCAPS_OVERLAY;
    	ddsd.dwHeight = 600;
    	ddsd.dwWidth = 800;
    
    	memcpy(&(ddsd.ddpfPixelFormat), &ddPixelFormat, sizeof(DDPIXELFORMAT));
    
    	if(FAILED(hRet = IDirectDraw_CreateSurface( m_pDD, &ddsd, &m_pddsOverlay, NULL )))
    	{
    		sprintf(strErrorMSG, "Failed Create Overlay Error[%d]", hRet) ; 
    		::MessageBox(this->hWnd,strErrorMSG,"Error",MB_OK) ;
              return FALSE;
            }
    

    was mache ich den Falsch. Auf jedenfalls wird es ohne Probleme kompiliert. Nur beim starten von Programm kommt Error MessageBox "Failed Create Overlay".


  • Mod

    mit welcher error nr und was bedeutet die? 😃



  • Folgende Fehlernr. wird ausgegeben: -2005532412. Aber ich kann es nicht bestimmen, was das für ein fehler ist. Ich glaube das ich das DDPIXELFORMAT nicht richtig anglege. 😕


  • Mod

    in hex hat das mehr informationsgehalt

    kurz googlen sagt dann

    ErrorCode:88760104
    ErrorString:DDERR_NOOVERLAYHW
    Description:Operation could not be carried out because there is no overlay hardware present or available.



  • 😕 😕 Was mache ich den jetzt.
    ErrorCode:88760104
    ErrorString:DDERR_NOOVERLAYHW
    Description:Operation could not be carried out because there is no overlay hardware present or available.

    Das heißt ja das meine Hardware Overlays nicht unterstützt?

    Welche Möglichkeiten habe ich den jetzt, ein Primär Surface und ein Back Surface habe ich ja schon erzeugt.
    Wie kann ich über ein Livebild ein "Overlay ähnliches Schicht" drüberlegen, um auf einen Livebild messungen vorzunehmen!



  • Neue Hardware kaufen. Und beim naechsten Mal erst die Caps abfragen, statt uns. f'`8k

    Gruß, TGGC (\-/ has leading)



  • TGGC ich glaube du schätzt das ganz falsch ein ich frage schon mit Caps ab ob Overlay's unterstützt werden oder nicht.

    /******************************************/
    	/* Test to Overlay Create                 */
    	/******************************************/
        DDCAPS	ddcaps; 
    	ddcaps.dwSize = sizeof( ddcaps );
    	if ( hRet = m_pDD->GetCaps( &ddcaps, NULL))
    	{
            AfxMessageBox("Fehler beim Abfragen der Fähigkeiten.\n");
    		return FALSE;
        }
        if ( !( ddcaps.dwCaps & DDCAPS_OVERLAY )) 
    	{
            AfxMessageBox("Grafikkarte unterstützt keine Overlays.\n");
    		return FALSE;
        }
    

    Und die Abfrage liefert mir keine Fehler, so dass ich annehme das die Hardware Overlay's ausführen kann. Vorallem das mir "dxdiag" Overlay's anzeigt. Ich bin immer noch der Meinung das ich DDPIXELFORMAT falsch anlege. Ich nehme an das ich kein 32 bit Overlay anlegen kann.



  • Dann frag halt mal die moeglichen Pixelformate fuer Overlays ab. f'`8k

    Gruß, TGGC (\-/ has leading)



  • Nun, wie frage ich das ganze ab? Ich weis es nich, ich beschäftige mich erst vor kurzem mit DirectDraw. Und es gibt nicht so viele Beispiele die mit MFC geschrieben sind und noch Overlay's ansprechen.


Anmelden zum Antworten