Deutsch
Wünsche und Anregungen

Set("usehdc2",0)

 
Hallo Roland.

Da ich am 2006er Wettbewerb mit einem Spiel als Einreichung teilnehmen möchte, und ich mich demzufolge damit beschäftigte mit XProfan ein Spiel herzustellen, hatte ich da so eine flapsige Idee.

Das Spiel wird ein 2D-Spiel sein, kein OpenGL und (sorry Frank) auch keine ProSpeed.Dll. Nur XProfaneigene Befehle - also CopyBmps.

Für den Fall das jemand also solch ein Spiel herstellen möchte bleiben IMHO auch nur - wenns grafisch werden soll mit Sprites etc - die mCopys.

Ich glaube Du machst pro Mcopy mindestens aber 2 BitBlits ?!

Würde es vielleicht einen Geschwindigkeitszuwachs geben wenn man - in diesem besonderen Fall das man an einem Spiel schreibt - wenn man das DoppelKopieren abschalten könnte?

Set(usehdc2,0) ?

Hier mal ein McopyBmp FPS-Test, ich erreiche 420 Fps auf nem 2,2er AMD mit ner PCI-OnboardGrKarte.
KompilierenMarkierenSeparieren
cls 0
var xx&:=width(hwnd)
var yy&:=height(hwnd)-1
var fps&:=0
var fpst&:=&gettickcount+1000

while 1

    setpixel rnd(xx&),0,if(rnd(2),rgb(0,rnd(255),0),0)
    copybmp 0,0 - xx&,yy& > 0,1;0
    fps&+

    if &gettickcount>fpst&

        fpst&:=fpst&+1000
        settext %hwnd,"FPS: "+str$(fps&)
        fps&:=0

    endif

wend

end
Nicht-XPSEer
KompilierenMarkierenSeparieren
CLS 0
VAR XX&=WIDTH(%HWND)
VAR YY&=HEIGHT(%HWND)-1
VAR FPS&=0
VAR FPST&=&GETTICKCOUNT+1000

WHILE 1

    SETPIXEL RND(XX&),0,IF(RND(2),RGB(0,RND(255),0),0)
    COPYBMP 0,0 - XX&,YY& > 0,1;0
    INC FPS&

    IF &GETTICKCOUNT>FPST&

        FPST&=FPST&+1000
        SETTEXT %HWND,"FPS: "+STR$(FPS&)
        FPS&=0

    ENDIF

ENDWHILE

END
Es geht natürlich nicht um dieses Beispiel - im Spiel gibts hunderte kleine Sternchen Explosionen Murmeln und ein wirkliches FPS-Problem habe ich auf meinem Rechner auch nicht - aber mehr Speed würde es natürlich auf jedem Rechner flüssiger machen. (Flüssiger weil ist Echtzeitgeschrieben)

Ich meine so als kleines Gimmik für die Spieleprogrammierung unter XProfan.
 
23.10.2006  
 



Hm vielleicht ein für Roland etwas motivierenderes Beispiel:
KompilierenMarkierenSeparieren
CLS 0
VAR XX&=WIDTH(%HWND)
VAR YY&=HEIGHT(%HWND)-1
VAR FPS&=0
VAR FPST&=&GETTICKCOUNT+1000
MCLS XX&,YY&+200,0
STARTPAINT -1
USEFONT "Arial",150,0,1,0,0
TEXTCOLOR $00FF0000,-1
ENDPAINT

WHILE 1

    STARTPAINT -1
    SETPIXEL RND(XX&),0,IF(RND(2),RGB(0,RND(255),0),0)
    COPYBMP 0,0 - XX&,YY& > 0,1;0
    COPYBMP 60,110 - 500,200 > 0,YY&+1;0
    DRAWTEXT 60,110,"XProfan"
    ENDPAINT
    MCOPYBMP 0,0 - XX&,YY& > 0,0;0
    STARTPAINT -1
    COPYBMP 0,YY&+1 - 500,200 > 60,110;0
    ENDPAINT
    INC FPS&

    IF &GETTICKCOUNT>FPST&

        FPST&=FPST&+1000
        SETTEXT %HWND,"FPS: "+STR$(FPS&)
        FPS&=0

    ENDIF

ENDWHILE

END

726 kB
Hochgeladen:23.10.2006
Ladeanzahl69
Herunterladen
 
23.10.2006  
 




Frank
Abbing
[quote:31e21c143b]...auch keine ProSpeed.Dll. Nur XProfaneigene Befehle - also CopyBmps.[/quote:31e21c143b]
Anstelle von CopyBmp könntest du die API BitBlt() verwenden. Somit würde nur jeweils eine Kopie erstellt. Wo also ist dein Problem?
 
23.10.2006  
 



Und bei Drawtext könnte ich... und bei CopySizeBmp könnte ich... bei Line könnte ich und bei Ellipse könnte ich... klar könnte ich auf jede der Bereits von Roland erstellen Funktionen verzichten - ich könnte auch in ASM schreiben, oder in C, oder doch JS? Wo ist eigendlich mein Problem? Ich glaub mein Problem ist nicht verstanden worden? Ist das mein Problem? Rechtfertig dies einen neuen Thread? Sollte ich ne Selbsthilfegruppe für nichtverstandene XProfaner gründen wollen?

<offtopic>Kommt mir das nur so vor oder sind heut ein paar Programmierer etwas aggresiv aus mir unbekannten gründen? Liegts an mir? Hab ich meine Kelloggs(TM) nicht aufgefuttert? </offtopic>
 
23.10.2006  
 




Frank
Abbing
Ne, kommt dir sicher nur so vor.
 
23.10.2006  
 



Verstehe Frank - dann liegts wohl an mir.

Mal schauen was Roland zum Thema meint...
 
23.10.2006  
 




RGH
Hallo,
prinzipiell ist so etwas möglich. ich müßte dann eben an allen Stellen, an denen ich die zwei hDC und hDC2 bediene eine IF-Abfrage einbauen und wenn hDC2 = 0 ist nur hDC benutzen. Sicher eine Sache die zu überlegen wäre, ... aber sicher nicht für XProfan 10. Es sind doch eine Menge Stellen zu berücksichtigen ...
Außerdem müßte dann der Programmierer bei jeder Bewegung und Veränderung des Hauptensters darauf reagieren und den Bildschirm komplett neu aufbauen.
Ich behalte es mal im Hinterkopf ...

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
23.10.2006  
 



Schön.
 
23.10.2006  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.702 Betrachtungen

Unbenanntvor 0 min.
H.Brill09.10.2020
RudiB.30.03.2020
Jörg Sellmeyer10.11.2011

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

iF (5x)
Frank Abbing (2x)
RGH (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie