Seite 19 von 22
Re: MP3D Alpha 32
Verfasst: 26.12.2013 20:07
von udg
N_Gnom hat geschrieben:Kann mir jemand eine andere simple exe hier kurz senden?
Zum testen bitte.
bitteschön:
http://rghost.net/51228439
Re: MP3D Alpha 32
Verfasst: 27.12.2013 00:56
von N_Gnom
danke dir, aber bei mir lags am soundtreiber der die mp3d exen abstürzen lies...
Re: MP3D Alpha 32
Verfasst: 09.01.2014 02:13
von udg
@Mpz
hallo Meister der Lib .
zzt arbeite ich an einem V2M Mediaplayer unter Verwendung deiner MP3D.Lib unter PB v 4.61
nun habe ich schon eher festgestellt, dass Deine Lib nur v2m Sounds der Version 1.5 unterstützt. Ich möchte Dich fragen ob:
~ es eine Möglichkeit gibt die v2m Sound Version 1.0 ebenfalls unterstützen zu können
~ gibt es eine Möglichkeit einen Loop V2M Sound Befehl setzen zu können
*1
~ gibt es in der Lib die Möglichkeit, einen Font.ttf einzubinden und mit einem Befehl, sagen wir mal sowas wie CatchFont freizugeben
(könntest Du eine CatchFontTTF- Funktion implementieren?) PB unterstützt dies leider nicht und somit müsste ich den TTF Font Includen und später jedesmal in einen Tempordner schreiben,was VirenProgramme möglicherweise verhindern
*1
Der Player endet automatisch wenn das Ende eines Songs erreicht ist. Per Button kann man die Loop Funktion einschalten, sodass der Song nun wiederholt wird. Jedoch ist diese Methode
umständlich wie ich sie umsetzen musste.
Für Tipps wäre ich Dir sehr dankbar.
grüße inc
Re: MP3D Alpha 32
Verfasst: 12.01.2014 03:13
von mpz
Hi udg,
eine Nachfrage nach dem v2m ist schon laaaaaange her. Leider gibt es keine x64 Version davon und der Programmierer will da nicht mehr ran. Ist teilweise sogar in ASM geschrieben. Eine Loop Möglichkeit kann ich Dir sicher einbauen kommt auf die -> Todo Liste. V1.0 Unterstützung leider nicht, da hatte ich damals zu viel ändern müssen um das zu realisieren und man kann auch den Song nicht abfragen ob er 1.0 oder 1.5 ist. Da man die Songs aber "leicht" auf 1.5 ändern kann sollte man diese Songs anpassen. Wie man ein Font.tff einbindet weiß ich nicht, kann ich mir aber mal ansehen ob das geht. In MP3D kann man aber auch leicht Bitmap Fonts einbinden, ist für deine Zwecke denke ich eh flexibler....
Gruß Michael
Re: MP3D Alpha 32
Verfasst: 12.01.2014 06:55
von udg
Danke für deine Antwort.
Ich denke mir, dass ich den Converter einbinde, sodass der Player erkennt ob es eine Version 1.0 oder Version 1.5 ist. Wenn nun V1.0 gewählt wurde, soll der Converter den Song automatisch zu 1.5 konvertieren und dann den Song abspielen. Sollte zu realisieren gehen.
Die Loop Funktion war nur so eine Idee wie zb: MP_PlayV2MLoop()

Aber man kann ja auch ganz einfach den Song mit ein paar Zeilen Code wieder starten.
Ich habe die Loop Funktion wie man es von einem Mediaplayer gewohnt ist, nun mit einem Button versehen. (so solls ja auch sein)
Das mit dem Font (System TTF, wäre
ober-cool wenn Du da eine Idee hättest), ansonsten werde ich auf einen 8*8 bmp Font zurückgreifen müssen den ich aus dem TTF Font mir dann erstelle.
Sei gegrüßt
Re: MP3D Alpha 32
Verfasst: 14.01.2014 17:48
von mpz
Hi,
wie man ttf Fonts als Resource dazulädt findest Du hier:
http://www.purebasic.fr/english/viewtop ... &hilit=TTF
In diesem Beispiel mache ich aus einem ttf Font ein 3d Mesh:
Code: Alles auswählen
#AppName$ = "Font"
#Appversion = 1 : Global AppV$ = StrF(#Appversion/100.0,2)
#ScreenWidth = 1024
#ScreenHeight = 768
; Please font from here:
; www.myfont.de/download.php?winfont=zeichen-hundert&type=zip
MP_Graphics3D (#ScreenWidth, #ScreenHeight,0,1) ; Erstelle ein WindowsFenster mit 3D Funktion #Window = 0
SetWindowTitle(0, #AppName$+" v"+AppV$ )
camera=MP_CreateCamera() ; Kamera erstellen
light= MP_CreateLight(1) ; Es werde Licht
OpenLibrary(0,"gdi32.dll")
; Entspricht CatchFont
fontid=CallFunction(0,"AddFontMemResourceEx",?font,?end_font-?font,0,@"1")
CloseLibrary(0)
mesh1 = MP_Create3DText ("Zeichen Hundert", "MP 3D Engine") ; Erstes Mesh erstellen aus Schriftart Times
; Entspricht FreeCatchFont
RemoveFontMemResourceEx_(fontid)
MP_PositionMesh (mesh1, -MP_MeshGetWidth(mesh1)/4 ,-MP_MeshGetHeight(mesh1)/2,-MP_MeshGetDepth(mesh1)/2) ; Mittelpunkt des Meshs erzeugen
If CreateImage(0, 255, 255) ; Etwas Farbe selber erzeugen
MP_CreateImageColored(0,0,RGB($FF,$FF,$00),RGB($FF,$FF,$FF),RGB($FF,$00,$00),RGB($00,$00,$FF)) ;
MP_EntitySetTexture (mesh1, MP_ImageToTexture(0))
FreeImage(0)
EndIf
x.f=0
y.f=0
z.f=6
While Not MP_KeyDown(#PB_Key_Escape) And Not WindowEvent() = #PB_Event_CloseWindow;
; nen bishen apielen und das Objekt drehen
If MP_KeyDown(#PB_Key_Left)=1 : x=x-1 : EndIf ;links Debug #PB_Key_Left
If MP_KeyDown(#PB_Key_Right)=1 : x=x+1 : EndIf ;rechts #PB_Key_Right
If MP_KeyDown(#PB_Key_Down)=1 : y=y-1 : EndIf ;Runter #PB_Key_Down
If MP_KeyDown(#PB_Key_Up)=1 : y=y+1 : EndIf ;rauf #PB_Key_Up
If MP_KeyDown(#PB_Key_Z)=1 : z=z-0.1 : EndIf ;y Vertauscht bei y-z bei deutscher tastatur
If MP_KeyDown(#PB_Key_A)=1 : z=z+0.1 : EndIf ;a #PB_Key_A
If mesh1 ; Objekt drehen
MP_PositionEntity (Mesh1,0,0,z)
MP_RotateEntity (Mesh1,x,y,0)
EndIf
MP_RenderWorld ()
MP_Flip ()
Wend
DataSection
font:
IncludeBinary "fonts/Zeichen Hundert.ttf"
end_font:
EndDataSection
Gruß Michael
Re: MP3D Alpha 32
Verfasst: 23.01.2014 00:21
von udg
Hallo Michael,
der Font ist eingebunden.
eine andere Frage.
ist es möglich die MP_PlayV2M Funktion so zu nutzen dass:
wenn man einen v2m Song doppel-klickt, es dann automatisch das v2m Modul abspielt?
Der Player öffnet sich zwar aber abspielen tut es auf diese Weise noch nix.
v2m verknüpfen mit dem Player - per Registry Eintrag?
Evtl. hast Du einen Tipp?
danke dir.
neuester Stand des Players:
Direkt Download
Re: MP3D Alpha 32
Verfasst: 24.01.2014 14:02
von mpz
Hi udg,
hier mal ein paar Infos für Dich:
1) Dateiextensionen sind in der Registrierdatenbank hier zu finden:
Code: Alles auswählen
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts
2) Offizielle Info von Microsoft
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
3)Ein PB Beispiel in der Winapi (Danke an rsbasic, geiles Tool) zum Thema registreinträge gefunden
Code: Alles auswählen
;Administratorrechte erforderlich
Define NewKey
Define KeyInfo
Define Pfad$
Pfad$ = "%windir%\System32\notepad.exe"
RegCreateKeyEx_(#HKEY_CLASSES_ROOT, "*\shell\notepadxyz\command", 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, 0, @NewKey, @KeyInfo)
RegSetValueEx_(NewKey, "", 0, #REG_SZ, Pfad$, Len(Pfad$) + 1)
RegCloseKey_(NewKey)
MessageRequester("","Eintrag erstellt.",0)
RegDeleteKey_(#HKEY_CLASSES_ROOT, "*\shell\notepadxyz\command\")
RegDeleteKey_(#HKEY_CLASSES_ROOT, "*\shell\notepadxyz\")
MessageRequester("","Eintrag entfernt",0)
3) Wenn Du einen Übergabeparameter (hier z.B. Song.v2m) im Programm lesen willst muss Du z.B. folgende Zeile einfügen:
Ich hoffe das hilft.
Michael
Re: MP3D Alpha 32
Verfasst: 25.11.2015 11:02
von udg
FRAGE
wie kann ich ein simples StringGadget in einem 3d Fenster darstellen? ...sprich mit normalen PureBasic Befehl?
Ebenso einen normalen Buttongadget? --> flackern
Auszug:
Code: Alles auswählen
OpenWindow(0, 732, 301, 540, 540, "", #PB_Window_ScreenCentered | #PB_Window_BorderLess)
;-SET WINDOW ALWAYS ON TOP
SetWindowPos_(WindowID(0),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
StringGadget(1, 18, 310, 240, 20, "Test")
;-HANDLE 3D SCREEN
MP_ScreenToHandle(WindowID(0))
alles was ich mit normalen PureBasic Befehlen anzeigen lassen will, sei es Text oder auch dieses String Gadget, FLACKERT dann nur rum aber wird nicht korrekt dargestellt.
Wie muss ich das richtig angeben?
Danke für eine schnelle Hilfe
Re: MP3D Alpha 32
Verfasst: 27.11.2015 12:01
von mpz
Hi udg,
man kann keine Windows Gadgets in einem DX9/DX10/DX11 Screen benutzen. Hier muss man eigene grafische Gadget bauen indem man Sprites, MP3D Text o.ä. verwendet. Die andere Möglichkeit ist es Screen über Viewport zu verkleinern und dann dort die Gadgets zu verwenden.
Gruß Michael
Code: Alles auswählen
OpenWindow(0, 732, 301, 540, 540, "", #PB_Window_ScreenCentered | #PB_Window_BorderLess)
;-SET WINDOW ALWAYS ON TOP
SetWindowPos_(WindowID(0),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
StringGadget(1, 18, 10, 240, 20, "Test")
ButtonGadget(2, 300, 10, 80, 20, "Drückmich!")
;-HANDLE 3D SCREEN
MP_ScreenToHandle(WindowID(0))
camera=MP_CreateCamera(); 3d sachen, ist sonst langweilig
x = 0 : y = 40 : xw = 540 : yw = 510
MP_Viewport(x,y,xw,yw)
teapot = MP_CreateTeapot()
MP_EntitySetZ (teapot ,6 )
light=MP_CreateLight(1)
Repeat
Event = WindowEvent()
If Event = #PB_Event_Gadget
Select EventGadget()
Case 2 ; Test
MessageRequester("Info", "Ja drück mich weiter", 0)
EndSelect
EndIf
MP_TurnEntity (teapot,0.1,0.2,0.3)
MP_RenderWorld () ; Hier gehts los
MP_Flip () ;
Until Event = #PB_Event_CloseWindow Or MP_KeyDown(#PB_Key_Escape)