Pixel Zeichnen mit DDRAW
-
Ich arbeite mich zzt durch ein Buch über DirectX und bin momentan an eienr Stelle angelangt wo einfache Pixel auf den Bildschirm gezeichnet werden, soweit so gut. Nun bin ich beim 24Bit Modus angelangt und dort tritt bei mir ein Kleines Problem auf dessen ursache ich nicht kenne udn das sich auch kaum Lösen läst da das Testprogramm das dazu gehört nicht läuft und der Quelcode irgendwie den Wurm drin hat. Mein eigener Code funktioniert zwar, zeichnet aber nur von links aus auf 3/4 des Screens. Hier ist mal mein Quelcode vielleichts eht ihr ja den Fehler.
memset(&ddsd,0,sizeof(ddsd)); ddsd.dwSize=sizeof(ddsd); if(FAILED(lpddsprimary->Lock(NULL,&ddsd,DDLOCK_SURFACEMEMORYPTR | DDLOCK_WAIT,NULL))) { return 0; }; int mempitch=(int)ddsd.lPitch; UCHAR *video_buffer=(UCHAR *)ddsd.lpSurface; for(int i=0;i<1000;++i) { int x=rand()%screen_width;//random breite int y=rand()%screen_height;//random höhe DWORD pixel=(x+x+x)+y*mempitch; video_buffer[pixel]=rand()%256; video_buffer[pixel+1]=rand()%256; video_buffer[pixel+2]=rand()%256; }; lpddsprimary->Unlock(NULL);In anderen teilen des Programms kann der fehler eigentlich nicht liegen, ich habe im Set Display Mode von 16 auf 24 Umgestellt und diese Form hier wird so im Buch beschrieben, dennoch werden nur 75% des Bildschirms zugepflastert wärend die rechten 25% einfach Schwarz bleiben, der 32Bit Modus hingegen Funktioniert.
-
Meine erste Vermutung waere, dass Dein 24bit-Modus in Wahrheit 32bit hat.
Es gibt heutzutage keine Grafikkarte mehr, die 24bit (dh. 3 byte pro pixel) unterstuetzt.
Rauschen ist ein verhaeltnismaessig schlechtes Testbild.
-
Ich denke mal das wirds dann auch sein, würde zumindest die sehr genaue Aufteilung erklären.