| |
|
|
| la première Collisionsabfrage avec dem Viereck 128X128 Pixel. je Bilde cela Viereck maintenant noir ab, avec cela möglichs viele Farben pris volonté peut. là sonst autre Farben im Viereck qui aussi qui Collisionsfarbe avons ,angesprochen volonté. si cela voiture cela "Viereck" berührt ,welches hiermit erstellt wurde : ogl("glReadPixels",140,140,128,128,~GL_BGRA,~GL_UNSIGNED_BYTE,ogl_rgb#) , wird qui Wert 255 ausgeben.
Massgebend sommes qui Farben RGB grösser 252. peux on jederzeit dans qui CPP-Dossier changement.
Habe seulement einmal qui Abfrage avec dem DEV C++ gemacht bzw DLL erstellt., weil je dans ASM erstmal wieder gescheitert suis. qui DEV C++ Source-Fichiers sommes aussi avec dabei.
qui Zip ist angehängt.
mfg |
|
|
| |
|
|
|
Jörg Sellmeyer | très joli! Funktioniert prima - es wäre seulement joli, si Du aussi encore irgendwo vermerkst, qui qui Tasten Q,W,E,S Bewegungen verursachen. je zumindest habe pas alle Scancodes im tête |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 21.08.2008 ▲ |
|
|
|
|
| ici sieht on aussi qui enorme Geschwindigkeit de qui DEV C++ Dll. si sich cela voiture ausserhalb des Rechteckes bewegt, doit 128X128x3 abfragen avoir lieu si quelque chose passiert et es bewegt sich toujours super vite sans ruckeln. cela était erstmal mon erstes but. une fliessende Bewegung avec viel kontrollen.
Einen unregelmässigen Körper pourrait on aussi abfragen. Daran wird maintenant getüftelt.
Versuche aussi cet encore dans ASM umzusetzen.
mfg peter |
|
|
| |
|
|
|
| ici ist qui ASM-Code.
auparavant, bevor qui xpse genutzt wird , muss cet Changement avoir lieu:
ogl("glReadPixels",140,140,128,128,~GL_BGRA,~GL_UNSIGNED_BYTE,ogl_rgb#) > GL_BGRA entfernen ogl("glReadPixels",140,140,128,128,32993,~GL_UNSIGNED_BYTE,ogl_rgb#) > qui numéro 32993 reinsetzen
qui Grund ist, cela dans qui INC-Dossier cet Variable encore pas reingesetzt wurde.
Den Aufruf avec qui Variablen z% et dem Drawbefehl aussi qui Variable z% transfert : DrawText 20,160,(Format$("######0 ",z%)) ensuite z%=Call(xpia_getprocaddressm(xpia_hmodule&,"rgb_farbe"),ogl_rgb#,groesse%)
Im Anhang ist cela gesamte Programme pour den Assembler xpse comme Zip.
mfg peter KompilierenMarqueSéparation
If 0
AsmStart rgb_farbe
Parameters ogl_rgbxy#,groesse%
LOCAL r :BYTE
LOCAL g :BYTE
LOCAL b :BYTE
LOCAL n :DWORD
mov eax,para2
mov n,eax
mov ecx,0
mov ebx,para1
.while ecx<=n
mov al,[ebx+ecx]
mov r,al
mov al,[ebx+ecx+1]
mov g,al
mov al,[ebx+ecx+2]
mov b,al
mov al,b
.if al>252
mov eax,255
.break
.endif
mov al,g
.if al>252
mov eax,255
.break
.endif
mov al,r
.if al>252
mov eax,255
.break
.endif
add ecx,4
.endw
AsmEnd(z%)
./../funcion-referencias/XProfan/endif/'>EndIf
|
|
|
| |
|
|
|
Frank Abbing |
Im Anhang ist cela gesamte Programme pour den Asssembler xpse comme Zip.
Peter, qui Inline-Assembler heisst XPIA. XPSE ist qui Precompiler... |
|
|
| |
|
|
|
| peut-être begreife je le reste dans mon vivre.
mfg |
|
|
| |
|
|
|
| Ablaufzeiten (Brutto)qui Collisionsabfrage des Rechteckes 128X128X4 avec 10000 Schleifendurchgänge : calculateur avec 1,6 Gigahz
qui Profan Tandis que-Leerschleife braucht ca 200ms.
ASM avec XPIA/XPSE (DLL) sommes es 4550 ms .
DEV C++ sommes es 6210 ms ( une For-Boucle).
DEV C++ sommes es 6260 ms (Tandis que-Boucle).
chez 10000 durchgängen lohnt es sich cet dans ASM umzusetzen, sommes ca 1,5 sec unterschied.
mfg peter |
|
|
| |
|
|
|
Frank Abbing | Votre Assembler-Routine ist pas optimiert. si du vous umstellst de Variablen sur Register ist encore einiges plus drin. Ca. 20 Prozent, schätze je.
cet Routine behält deine Programmstruktur chez, sollte mais déjà travailler plus vite: KompilierenMarqueSéparation
If 0
AsmStart rgb_farbe (ogl_rgbxy#,groesse%)
mov edi,para2
xor ecx,ecx
mov ebx,para1
.while ecx<=edi
mov al,[ebx]
mov cl,[ebx+1]
mov dl,[ebx+2]
.if al>252
mov eax,255
.break
.endif
.if cl>252
mov eax,255
.break
.endif
.if dl>252
mov eax,255
.break
.endif
lea ebx,[ebx+4]
lea ecx,[ecx+4]
.endw
AsmEnd(z%)
EndIf
|
|
|
| |
|
|
|
Jörg Sellmeyer |
qui Profan Tandis que-Boucle braucht ca 200ms.
es Du sûrement, qui Profan plus que 20-la fois plus rapide ist comme ASM? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 22.08.2008 ▲ |
|
|
|
|
| Soll vide-Boucle heissen, weil je entier dessus aussi de Brutto spreche. qui Test fonctionne chez allen dans qui gleichen Tandis que-Boucle de Profan
j'ai aussi la fois cet Freebasic getestet zum DLL erstellen.
qui dans Freebasic une DLL erstellen voudrais et ne...aucune ASM peux/voudrais et ne...aucune "C", ist avec cela bien bedient.
qui Freebasic-DLL braucht 7400ms alors seulement 1 seconde länger comme DEV C++.
Könnte pour qui Basicprogrammierer , qui une DLL erstellen serait einer qui besten Freewarealternativen son.
chez meiner Collisionstest-Auswertung avec qui Freebasic-DLL sur dem Bildschirm à qui Grafik, c'est moi qui Unterschied optique pas aufgefallen. cela objet flitzte weiterhin toujours hin et her trotz qui Überprüfung/Auswertung.
mfg peter |
|
|
| |
|
|
|
| Frank, deine braucht 3,5 sekunden länger.
je weiss eh bien pas, comment cela avec den Registern et LEA là funktioniert. sur jeden le cas muss qui Adresse toujours um "4" continuer.
mfg peter |
|
|
| |
|
|
|
Frank Abbing |
Frank, deine braucht 3,5 sekunden länger.
Unrichtig! Register travailler toujours plus rapide comme Varablen im grenier, selbst si vous bistrot sommes. Solche Tests habe je déjà Dutzende durchgeführt. et so une Assemblerroutine nécessaire niemals 3,5 Sekunden länger, vous nécessaire überhaupt seulement wenige Millisekunden en tout. Selbst si du avec grossen Bitmaps arbeitest. tu peux cela volontiers avec qui ProSpeed.dll testen, qui zahlreiche Bitmapeffekte kennt. Irgendwas allez chez deinen Tests gewaltig de travers. quoi oui c'est ca soll qui Routine car faire? vous bricht doch tout de suite ab, si vous une très hellen Farbwert findet. si du une Robotersoftware écrivons veux, qui qui données einer Cam auswertet, musst du déjà le nombre heller Bildpunkte zählen. auparavant mais cela Cambild gris faire, bzw. noir-weiss. |
|
|
| |
|
|