Scherm per pixel tekenen

Status
Niet open voor verdere reacties.

Neo Angelus

Gebruiker
Lid geworden
27 mei 2007
Berichten
27
Hallo Iedereen,

Ik heb een vraagje. Ik probeer een beetje een 3D-Ray trace programma te maken. En het werkt op zich goed, maar er zit een verschrikkelijk vertraging in het tekenen.

Ik gebruik een leeg windows form gemaakt met CreateWindowEx

en dan specifiek:
Code:
CreateWindowEx(0,"#32769","", WS_POPUP |WS_VISIBLE,0,0,x,y,NULL,NULL,NULL,NULL);
(waarbij x=1920, y=1200...de resolutie is)

En gebruik SetPixel om pixel voor pixel te tekenen(omdat ik dat ook gebruik bij het maken van het plaatje).

Nu duurde het best lang om iets simpel 3D's te renderen. Wat uiteraard in mijn ontwerp zit. Het feit dat ik alleen de processor gebruik en dat mijn code een eerste keer gok is.

Toch merk ik ook dat SetPixel voor heel wat vertraging zorgt.(ik heb het programma laten draaien met de SetPixel erin en SetPixel eruit gecommentarieerd en het verschil is toch best groot) Ook zit er een ander nadeel in dat het plaatje er niet in zijn geheel op beeld verschijnt, maar lijn voor lijn. Nu is mijn vraag, weet iemand een snellere&|betere manier om mijn kleur-informatie op scherm te krijgen?(ik kan de informatie per pixel opvragen en dus ook in een matrix of dergelijk plaatjes hoewel minder conversies/verplaatsingen waarschijnlijk beter zijn)

Alvast bedankt!:D
 
Je zou eerst een DIB (Device independent bitmap) kunnen genereren en die vervolgens naar het scherm blitten, dat is maar één systeemfunctie aanroep en maar een scherm redraw. Met setpixel wordt je scherm iedere keer opnieuw gerendered.
 
Ok...ik heb het gevonden en het werkt nu, bedankt voor de tip over DIB
 
Laatst bewerkt:
Misschien kun je de screen update uitzetten? Ik weet niet hoe het moet, maar het is maar een ideetje. Na het genereren moet je hem weer aanzetten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan