| |
|
|
| 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. KompilierenMarkierenSeparierencls 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 KompilierenMarkierenSeparierenCLS 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. |
|
|
| |
|
|
|
| Hm vielleicht ein für Roland etwas motivierenderes Beispiel: KompilierenMarkierenSeparierenCLS 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
|
|
|
| |
|
|
|
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? |
|
|
| |
|
|
|
| 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> |
|
|
| |
|
|
|
Frank Abbing | Ne, kommt dir sicher nur so vor. |
|
|
| |
|
|
|
| Verstehe Frank - dann liegts wohl an mir.
Mal schauen was Roland zum Thema meint... |
|
|
| |
|
|
|
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. |
|
|
| |
|
|