Pixelausgabe mit DX
-
Hej,
habe schon hier im Forum und auch unter google gesucht, zwar auch schon etwas gefunden, doch irgednwie klappts immer noch net
Ich will im Grunde nur eine Flaeche von 104x104 Pixel faerben (erstmal nur Rot).
Hier ist das was ich bisher zusammengebaut hab, doch aus mysterioesen Gruenden beendet sich das Programm immerLPDIRECTDRAW7 lpDD7; LPDIRECTDRAWSURFACE7 lpDDMiniMap; DDSURFACEDESC2 SurfDesc; HDC hSurfDC; // Oberflächenbeschreibung initialisieren ZeroMemory(&SurfDesc, sizeof(SurfDesc)); SurfDesc.dwSize = sizeof(SurfDesc); // Caps, Höhe und Breite sollen berücksichtigt werden SurfDesc.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH; SurfDesc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; SurfDesc.dwWidth = 104; SurfDesc.dwHeight = 104; lpDD7->CreateSurface(&SurfDesc,&lpDDMiniMap,NULL); // Device Context der Oberfläche holen lpDDMiniMap->GetDC(&hSurfDC); //DRAW BYTE *lpByte; // Oberflaeche sperren //lpDD7->Lock(NULL, lpDDMiniMap, DDLOCK_WAIT, NULL); lpDDMiniMap->Lock(NULL,&SurfDesc,DDLOCK_SURFACEMEMORYPTR|DDLOCK_WAIT,NULL); // Pointer holen lpByte = (BYTE*)SurfDesc.lpSurface; for(y=0;y<104;y++) { for(x=0;x<104;x++) { *lpByte = 255;//RGB(255,0,0); //*((BYTE*)SurfDesc.lpSurface) = *lpByte; lpByte++; } lpByte += (SurfDesc.lPitch - 104); } // Oberflaeche entsperren lpDDMiniMap->Unlock(NULL); // Device Context freigeben lpDDMiniMap->ReleaseDC(hSurfDC);
Hoffe mir kann jmd. helfen.
ByeBye, VIking69
-
Debugger & debug Runtimes felsen.
Und du arbeitest nicht wirklich in 8 Bit Farbtiefe, oder?Bye, TGGC (Der Held bei Dir!)
-
Welche version von DDraw verwendest du? Ansonsten versuch mal lpDDMiniMap = NULL am anfang einzufügen. Manche DDraw versionen brauchen das. Hab ich auch mal nen Problm mit gemacht
-
mwoidt schrieb:
Welche version von DDraw verwendest du?
Sollte das nicht aus dem Code ersichtlich sein?
-
Hm eigendlich schon