Announcement

Collapse
No announcement yet.

Ruckeln!! bei K6-266 und 4MB Grafikkarte?!?!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ruckeln!! bei K6-266 und 4MB Grafikkarte?!?!

    Wir haben ein Spiel programmiert, das mit einer 32 MB Grafikkarte schnell und Ruckelfrei läuft, aber wenn jetzt der gleiche Computer mit einer 4MB Grafikkarte gefüttert wird, ruckelt das gesamte Spiel! Das ist doch nicht normal, oder? Andere Spiele, wie Episode 1, laufen mit gleicher Austattung(4MB Grafikkarte) wunderbar, zwar ruckelt es ein wenig, aber das ist schließlich auch 3d gerendert und nicht einfach nur ein Bild, das jede 40 Millisekunden Abständen neu gezeichnet wird (Fullscreen)!<BR> Was machen wir falsch?

  • #2
    du solltest versuchen 32-bit-assembler-routinen einzubauen. das buch spiele programmieren mit delphi für 49dm von smartbooks kann dir da wahrscheinlich weiterhelfen. die quellcodes sind zwar schlecht dokumentiert aber trotzdem ganz nützlich

    Comment


    • #3
      Hast du nicht zufällig so ne vertige Assembler Routine? Ich bin gerade nicht gut bei kasse(habe mir nen neuen ATLON 800 gekauft und bin noch schüler). Und ich weiß nicht ob mein Freund Florian geld dafür hat! Muss ihn mal fragen! Na Floria wie siehts aus?<br> Denn wir zeichnen nur ein bild und das sollte doch meine grafikkarte packen! Wir brauchen nur eine Assembler Routine die in ein Windowsfenster(besser in die paint box die wir auf der form haben) ein Bild Zeichnet danach sollte das Spiel wieder schnell laufen! Außerdem können wir beide noch kein Assembler und werden ihn doch auch nicht so leicht lernen können(ich hab mir vor jahren einmal ein buch gekauft doch hab´s dann schell wieder aufgegeben!)

      Comment


      • #4
        Wahrscheinlich zeichnechst du direkt auf das Form, bzw. fügst Grafiken direkt auf dem Form ein. Das zwingt erfahrungsgemäß den stärksten Rechner in die Knie. Versuch einfach eine Canvas dazwischen zu schalten und dann alle Objekte auf die Canvas zu zeichnen

        Comment


        • #5
          Hää? Wir Zeichnen auf eine PaintBox! Außerdem liegt das zu fast 100% an der Grafikkarte! Weil ich jetzt aufgerüstet habe auf ATLON 800 und es immer noch bei mir Ruckelt wie vorher! Zum Atlon weiß zufällig jemand warum am Systemmonitor eine hohe auslastung meines Prozessors angezeigt wird (oft ca. 80% ) obwohl ich nichts in windows geöffnet habe(alles geschlossen mit STRG UND ALT ENTF)? Das kann doch wirklich nicht sein! Der Norton anzeiger zeigt zwar weniger an aber das kann auch nicht sein mindestens 3%?

          Comment


          • #6
            Zeichnet ihr mit Canvas-Methoden (MoveTo,LineTo) oder soger Pixelweise? (Paintbox1.canvas.pixels[x,y]:=?) besser gehts mit einem TBitmap, was mit BitBlt auf die Form kopiert wird

            Comment


            • #7
              Hi

              Wenn Du eine PaintBox nutzt, zeichnest Du in Wirklichkeit in das übergeordnete Parent der PaintBox. Eine PaintBox stellt somit NUR ein Ausschnitt des Canvas des PaintBox.Parent dar. Liegt diese PaintBox in einem Form so wird in Wirklichkeit direkt in's Form gezeichnet. Falko's Bemerkung IST also absolut richtig. Nun, liegt die PaintBox in einem TPanel und dieses besitzt KEINEN OwnerDC (eigenen Gerätecontext) wird der Gerätecontext (DC) des übergeordneten TopLevel Windows benutzt. Das ist auch der fall und der DC des TopLevels ist IMMER der des Formulars. Also AUCH hier wird in echt in den Canvas des Formulars gezeichnet !!

              Aber das wird garnicht Euer Problem sein. Meine Frage ist, wie flackert es ? Flackert die komplette PaintBox in der Hintergrundfarbe des Formulars ? Das ist immer der fall bei "löschen des Bildes" durch eine WM_EraseBkGnd Message. Abhilfe: PaintBox in ein TPanel und eventuell beim Panel.DoubleBuffered := True.

              Die Unterschiede zwischen den einzelnen Grafikboards lassen sich durch deren unterschiedliche Treiber erklären. Nämlich genau diese Grafiktreiber sind die BASIS für das Windows GDI. Im grunde erledigt das Windows GDI überhauptkeine Arbeit, sondern reicht die einzelnen Zeichenaufrufe (BitBlt, FillRect etc.) an den Treiber der karte durch.

              Ist auch logisch, da eine Karte mit harwarebeschleunigungen einen auszufüllenden Bereich (FillRect) mit deren Hardwarebefehlen füllt.
              All dies macht natürlich der Treiber der Karten !!
              Der Einfluß dieser Treiber reicht sehr weit ins Windows-System. Z.b. gibt es schlechte Treiber die Bitmaps nur bis zur größe der aktuellen Bildschirmauflösung bearbeiten können. Größere Bitmaps erzeugen entweder Abstürze oder werden gar nicht erzeugt. Das gleiche Problem tritt mit Metafiles auf !!

              Gruß Hage

              Comment


              • #8
                Achso nochwas.

                Die "Mißstände" der Grafikkartentreiber/Soundkarten/MMediakarten hat Microsoft schon seit längerem erkannt, und hat deshalb die DirectX Serie gestartet. DirectX hat sehr hohe Ansprüche an deren Treiber, die meistens von $MS selber stammen. DirectX ist somit in der Lage die Hardwarefeatures aller beteiligten Systeme (auch MMX CPU's) zu nutzen und so eine höhere Performance zu erzielen.

                Fazit: ein Spieleprogrammierer kommt unter Windows NICHT an DirectX vorbei !

                Gruß Hage

                Comment

                Working...
                X