camera auf window zeichen
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
nuja... wenn du nix anderes drin hast, als in deinem code oben...
was soll er dann auch zeichnen, deine welt is doch leer...
du hast wahrscheinlich ein klasse 3D-Bild von nem unbeleuchteten schwarzen Adler vor schwarzem Hintergrund...
was soll er dann auch zeichnen, deine welt is doch leer...
du hast wahrscheinlich ein klasse 3D-Bild von nem unbeleuchteten schwarzen Adler vor schwarzem Hintergrund...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Haste mal nen link, sowas suche ich nochKaeru Gaman hat geschrieben:du hast wahrscheinlich ein klasse 3D-Bild von nem unbeleuchteten schwarzen Adler vor schwarzem Hintergrund...

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

also ich habe den code jetzt geändert... er sieht jezt so aus.
er zeigt mir nichtmal schwarz an (er zeigt mir nur die normale window hintergrund farbe an.
Code: Alles auswählen
InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()
ExamineDesktops()
OpenWindow(0,0,0,1024,768,"3D-Editor by Thomas Brüggemann", #PB_Window_MinimizeGadget)
OpenWindowedScreen(WindowID(0), 71, 0, 953, 768, 0, 0, 0)
SetWindowState(0, #PB_Window_Maximize)
CreateGadgetList(WindowID(0))
ButtonGadget(0, 0, 0, 70, 30, "Neuer Stein")
TextGadget(1, 0, 31, 70, 20, "Verschiebung:",#PB_Text_Center)
StringGadget(2, 0, 51, 50, 20, "100",#PB_String_Numeric )
StringGadget(3, 0, 71, 50, 20, "100",#PB_String_Numeric )
StringGadget(4, 0, 91, 50, 20, "100",#PB_String_Numeric )
TextGadget(5, 51, 51, 19, 20, "X",#PB_Text_Border|#PB_Text_Center)
TextGadget(6, 51, 71, 19, 20, "Y",#PB_Text_Border|#PB_Text_Center)
TextGadget(7, 51, 91, 19, 20, "Z",#PB_Text_Border|#PB_Text_Center)
TextGadget(8, 0, 111, 70, 20, "Drehung:",#PB_Text_Center)
StringGadget(9, 0, 131, 50, 20, "0",#PB_String_Numeric )
StringGadget(10, 0, 151, 50, 20, "0",#PB_String_Numeric )
StringGadget(11, 0, 171, 50, 20, "0",#PB_String_Numeric )
TextGadget(12, 51, 131, 19, 20, "X",#PB_Text_Border|#PB_Text_Center)
TextGadget(13, 51, 151, 19, 20, "Y",#PB_Text_Border|#PB_Text_Center)
TextGadget(14, 51, 171, 19, 20, "Z",#PB_Text_Border|#PB_Text_Center)
TextGadget(15, 0, 191, 70, 20, "Skallierung:",#PB_Text_Center)
StringGadget(16, 0, 211, 50, 20, "100",#PB_String_Numeric )
StringGadget(17, 0, 231, 50, 20, "100",#PB_String_Numeric )
StringGadget(18, 0, 251, 50, 20, "100",#PB_String_Numeric )
TextGadget(19, 51, 211, 19, 20, "X",#PB_Text_Border|#PB_Text_Center)
TextGadget(20, 51, 231, 19, 20, "Y",#PB_Text_Border|#PB_Text_Center)
TextGadget(21, 51, 251, 19, 20, "Z",#PB_Text_Border|#PB_Text_Center)
Structure stein
x.d
y.d
z.d
zoomx.d
zoomy.d
zoomz.d
winkelx.d
winkely.d
an.d
EndStructure
Dim welt.stein(1000)
Procedure window()
window0 = WindowEvent()
If window0 = #PB_Event_CloseWindow
esc = 1
ProcedureReturn esc
EndIf
EndProcedure
;CreateCamera(0, 12, 0, 44, 50)
;CreateCamera(1, 58, 0, 44, 50)
;CreateCamera(2, 12, 50, 44, 50)
;CreateCamera(3, 58, 50, 44, 50)
CreateCamera(0, 0, 0, 50, 50)
CreateCamera(1, 50, 0, 50, 50)
CreateCamera(2, 0, 50, 50, 50)
CreateCamera(3, 50, 50, 50, 50)
CameraBackColor(0, RGB(255,0,0))
Repeat
esc = window()
RenderWorld()
Until esc = 1
er zeigt mir nichtmal schwarz an (er zeigt mir nur die normale window hintergrund farbe an.
Pure Basic 4.0
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
du solltest FlipBuffers() nicht vergessen...
@ts
http://img504.imageshack.us/img504/3098 ... leroo8.png
@ts
http://img504.imageshack.us/img504/3098 ... leroo8.png
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Mal abgesehen vom Kameraproblem, das Programm ist Tod!
Entweder WaitWindowEvent(10) oder noch besser einen HighResTimer
einsetzen, damit die Buttons überhaupt funktionieren können.
In die TimerProc packste dann den RenderWorld kram, durch HighResTimer
haste dann auch wirklich 10 ms die ausreichen sollten.
@Kaeru
Danke, hat leider keine Transparenz, aber ansonsten genau sowas hab ich mir vorgestellt
Entweder WaitWindowEvent(10) oder noch besser einen HighResTimer
einsetzen, damit die Buttons überhaupt funktionieren können.
In die TimerProc packste dann den RenderWorld kram, durch HighResTimer
haste dann auch wirklich 10 ms die ausreichen sollten.
@Kaeru
Danke, hat leider keine Transparenz, aber ansonsten genau sowas hab ich mir vorgestellt

Zuletzt geändert von ts-soft am 05.08.2007 20:40, insgesamt 1-mal geändert.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
also, es funktioniert zwar, aber läuft mit maximaler framerate durch.
d.h. es dürfte auch so an die 100% CPU verbraten.
in deiner eventabfrage solltest du zumindest WindowEvent() durch WaitWindowEvent(10) ersetzen.
das mit dem HighResTimer soll dir ruhig ts erklären...
d.h. es dürfte auch so an die 100% CPU verbraten.
in deiner eventabfrage solltest du zumindest WindowEvent() durch WaitWindowEvent(10) ersetzen.
das mit dem HighResTimer soll dir ruhig ts erklären...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
http://www.purebasic.fr/german/viewtopi ... 805#110805
Hab das mal direct eingebaut:
In der TimerProc() machste den Screenkram, in window() deine Buttons,
und alles läuft ohne stolpern
Hab das mal direct eingebaut:
Code: Alles auswählen
Global TimerResolution.TIMECAPS
Procedure Timer_Init()
Global Dim TimerHandles.l(15)
Global Dim TimerProcedures.l(15)
Protected err.l = timeGetDevCaps_(@TimerResolution, SizeOf(TIMECAPS))
If err = #TIMERR_NOERROR
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Procedure Timer_End()
Protected I.l
timeEndPeriod_(TimerResolution\wPeriodMin)
For I = 0 To 15
If TimerHandles(I)
timeKillEvent_(TimerHandles(I))
EndIf
Next
EndProcedure
Procedure Timer_Callback(TimerHandle, Message, TimerID, wParam, lParam)
If TimerProcedures(TimerID)
CallFunctionFast(TimerProcedures(TimerID))
EndIf
EndProcedure
Procedure TimerStart(TimerID.l, Delay.l, ProcAddr.l)
If TimerID > 15 Or TimerID < 0 : ProcedureReturn #False : EndIf
If TimerHandles(TimerID)
timeKillEvent_(TimerHandles(TimerID))
EndIf
TimerProcedures(TimerID) = ProcAddr
TimerHandles(TimerID) = timeSetEvent_(Delay, 0, @Timer_Callback(), TimerID, #TIME_PERIODIC)
ProcedureReturn TimerHandles(TimerID)
EndProcedure
Procedure TimerStop(TimerID.l)
If TimerID > 15 Or TimerID < 0 : ProcedureReturn #False : EndIf
If TimerHandles(TimerID)
timeKillEvent_(TimerHandles(TimerID))
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Procedure TimerGetMaxRes()
ProcedureReturn TimerResolution\wPeriodMax
EndProcedure
Procedure TimerGetMinRes()
ProcedureReturn TimerResolution\wPeriodMin
EndProcedure
InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()
ExamineDesktops()
OpenWindow(0,0,0,1024,768,"3D-Editor by Thomas Brüggemann", #PB_Window_MinimizeGadget)
OpenWindowedScreen(WindowID(0), 71, 0, 953, 768, 0, 0, 0)
SetWindowState(0, #PB_Window_Maximize)
CreateGadgetList(WindowID(0))
ButtonGadget(0, 0, 0, 70, 30, "Neuer Stein")
TextGadget(1, 0, 31, 70, 20, "Verschiebung:",#PB_Text_Center)
StringGadget(2, 0, 51, 50, 20, "100",#PB_String_Numeric )
StringGadget(3, 0, 71, 50, 20, "100",#PB_String_Numeric )
StringGadget(4, 0, 91, 50, 20, "100",#PB_String_Numeric )
TextGadget(5, 51, 51, 19, 20, "X",#PB_Text_Border|#PB_Text_Center)
TextGadget(6, 51, 71, 19, 20, "Y",#PB_Text_Border|#PB_Text_Center)
TextGadget(7, 51, 91, 19, 20, "Z",#PB_Text_Border|#PB_Text_Center)
TextGadget(8, 0, 111, 70, 20, "Drehung:",#PB_Text_Center)
StringGadget(9, 0, 131, 50, 20, "0",#PB_String_Numeric )
StringGadget(10, 0, 151, 50, 20, "0",#PB_String_Numeric )
StringGadget(11, 0, 171, 50, 20, "0",#PB_String_Numeric )
TextGadget(12, 51, 131, 19, 20, "X",#PB_Text_Border|#PB_Text_Center)
TextGadget(13, 51, 151, 19, 20, "Y",#PB_Text_Border|#PB_Text_Center)
TextGadget(14, 51, 171, 19, 20, "Z",#PB_Text_Border|#PB_Text_Center)
TextGadget(15, 0, 191, 70, 20, "Skallierung:",#PB_Text_Center)
StringGadget(16, 0, 211, 50, 20, "100",#PB_String_Numeric )
StringGadget(17, 0, 231, 50, 20, "100",#PB_String_Numeric )
StringGadget(18, 0, 251, 50, 20, "100",#PB_String_Numeric )
TextGadget(19, 51, 211, 19, 20, "X",#PB_Text_Border|#PB_Text_Center)
TextGadget(20, 51, 231, 19, 20, "Y",#PB_Text_Border|#PB_Text_Center)
TextGadget(21, 51, 251, 19, 20, "Z",#PB_Text_Border|#PB_Text_Center)
Structure stein
x.d
y.d
z.d
zoomx.d
zoomy.d
zoomz.d
winkelx.d
winkely.d
an.d
EndStructure
Dim welt.stein(1000)
Procedure TimerProc()
RenderWorld()
FlipBuffers()
EndProcedure
Procedure window()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndProcedure
;CreateCamera(0, 12, 0, 44, 50)
;CreateCamera(1, 58, 0, 44, 50)
;CreateCamera(2, 12, 50, 44, 50)
;CreateCamera(3, 58, 50, 44, 50)
CreateCamera(0, 0, 0, 50, 50)
CreateCamera(1, 50, 0, 50, 50)
CreateCamera(2, 0, 50, 50, 50)
CreateCamera(3, 50, 50, 50, 50)
CameraBackColor(0, RGB(255,0,0))
Timer_Init()
TimerStart(1,1000, @TimerProc())
window()
Timer_End()
und alles läuft ohne stolpern

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
