bmp's erstelen im programm
-
hi,
benutze directdraw und habe folgendes problem:
ich habe mir ein fenstersystem geschrieben, damit wird aber die fps sehr wenig (ca 35). meine idee war einfach ein fenster herzustellen und als bild zu speichern, bis es sich aendert.hat jemand eine idee dafuer?
danke
msp
-
normalerweise zeichnet man die inaktiven fenster vom hintergrund in einen zwischenspeicher und darüber dann immer das aktive fenster, auf diese weise läuft das ziemlich gut, egal wieviel fenster du im inaktiven zustand hast
natürlich kannst du ein problem haben wenn alles animiert ist..tja, da wir aber nichtmal wissen wie du das realisiert hast bei dir, und wofür und bei welchen belastungen (leeres bild oder 1000fenster) die framerate bei 35 ist.. finde ich es schwierig dir weiter zu helfen.
einfach zu sagen "hier, hab ein problem, programm will nicht wie ich will, ist in c++" ist keine problembeschreibungrapso->greets();
-
also du willst es etwas genauer, ok.
ich habe eine klasse fenster geschrieben. mit der klasse soll ist es moeglich theoretisch undendlich viele fenster zu erstellen, egal, ob sie ein elternfenster haben oder nicht. laso es kann auch ein fenster in einem fenster geben, oder ein fenster im fenster im fenster.
mein problem ist einfach, da ich mit front- und backbuffer arbeite, muessen die fenster erst im backbuffer gezeichnet werden und anschliessend in den frontbuffer geflipped werden. im hintergrund der fenster, also nicht in den fenstern selber, laeuft eine animation.
da ich aber die fenster theoretisch nur einmal zeichnen muesste, bis sich was an den fenstern selber wieder was aendert, ein wert z.b., hatte ich die frage wohin ich das machen koennte. der einfachste weg fuer mich waere gewesen man erzeugt daraus halt ein bild. da ich nicht weiss wie man das macht wollte ich nur mal fragen.gruss
msp
-
ok, das ist schon klarer, das problem ist einfach zu lösen.
erstell eine textur in die gerendert werden kann, setze sie als rendertarget, zeichne die inaktiven fenster rein und setze den backbuffer wieder als rendertarget, nun kannst du die textur nutzen um reinzuzeichnen...
okok, ich geb's zu, ich weiß nicht mehr wie das genau mit ddraw geht, ob man sich die fenster in ein surface rendern kann und das dann immer als hitnergrund nehmen kann, oder eine textur in einer surface setzt, ich hab bisher fast alles mit d3d/oGL gemacht und oGL hat ja keine 2d funktionalität in dem sinne wie DDraw... deswegen, mit den texturen ging das.
rapso->greets(); //sorree dass ich keine konkrete hilfe geben kann
-
hi, kein problem das du mir nicht direkt helfen konntest, aber ich denke etwas hat mir das schon gebracht.
danke
msp