Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

11

22.08.2005, 11:59

[schleichwerbung]

Haben Sie auch oft das Problem eine Grad in Bogenmaß umzuwandeln? Und das auch noch mit ordentlicher Performance für jeden erdenklichen Datentyp? Ohne RTTI?

Jetzt gibt es eine Lösung dafür! Das GGD-FAQ ;)
http://www.germangamedev.de/index.php?site=faq&id=9

[/schleichwerbung]

- Patrick, der Ami-Werbung hasst :D

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

12

22.08.2005, 13:47

lol

edit: wegen der Klammer: Stell dir vor er rechnet nicht (PI / 2) * time, sondern PI / (2 * time).

Eins von beiden rechnet er auf jeden Fall wenn du gar keine Klammern setzt. Um sicherzugehen, dass er das erste macht, setz lieber gleich die Klammern, denn wenn du mal nachrechnest wirst du festellen dass die beiden Möglichkeiten unterschiedliche Ergebnisse haben.

Der Dude

Treue Seele

  • »Der Dude« ist der Autor dieses Themas

Beiträge: 73

Wohnort: Elleringhausen-City

Beruf: ITA

  • Private Nachricht senden

13

23.08.2005, 11:08

Also die Klammern habe ich gesetzt, aber es dreht sich immer noch so langsam. Es wird kurz schneller, wenn ich wie wild die Maus und Tastertur drücke. Ist ja auch logisch.

Hat sonst noch jemand eine Erklärung?

mfg

TIM
"Wenn ich morgens doppelt so schnell über den Flur laufe, kann ich 2 Minuten länger schlaften!" - leider war es ein Irrtum.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

14

23.08.2005, 11:26

Vielleicht stimmt was mit der Zeitmessung nicht?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

23.08.2005, 12:23

oder mit der mainloop

Der Dude

Treue Seele

  • »Der Dude« ist der Autor dieses Themas

Beiträge: 73

Wohnort: Elleringhausen-City

Beruf: ITA

  • Private Nachricht senden

16

23.08.2005, 14:18

mmmh, das könnte sein mit der Zeitmessung. Kennt jemand unter C# noch eine andere Zeitfunktion? So etwas wie timegettime() habe ich leider noch nicht gefunden ;(

MFG
TIM :)
"Wenn ich morgens doppelt so schnell über den Flur laufe, kann ich 2 Minuten länger schlaften!" - leider war es ein Irrtum.

Dave

Alter Hase

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

17

23.08.2005, 17:31

wenn du wirklich genaue zeitmessungen machen willst, reicht die .net bibliothek leider nicht und man muss auf die win32 api zurückgreifen.
hier mal meine klasse mit der ich das immer mache:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
using System;
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Threading;

namespace BloodlineSharp
{
    /// <summary>

    /// Klasse für genaue Zeitmessungen.

    /// </summary>

    /// <remarks>

    /// Verwendet Win32 Performance Counter

    /// </remarks>

    public class Timer
    {
        //--------------------------------------------

        #region Variables
        //--------------------------------------------


        private long _startTime;
        private double _duration;
        private long _stopTime;
        private long _freq;

        //--------------------------------------------

        #endregion
        //--------------------------------------------


        //--------------------------------------------

        #region Proberties
        //--------------------------------------------


        /// <summary>

        /// Dauer in Sekunden

        /// </summary>

        public double Duration
        {
            get
            {
                return _duration;
            }
        }

        /// <summary>

        /// Frequenz des Timers, bzw. Anzahl der Inkremente, welcher der

        /// Performance-Timer pro Sekunde ausführt 

        /// </summary>

        public long Freqeuncy
        {
            get
            {
                return _freq;
            }
        }

        /// <summary>

        /// Endzeitpunkt der Messung in Millisekunden seit dem letzten Systemstart

        /// </summary>

        public long StopTime
        {
            get
            {
                return _stopTime;
            }
        }

        /// <summary>

        /// Startzeitpunkt der Messung in Millisekunden seit dem letzten Systemstart

        /// </summary>

        public long StartTime
        {
            get
            {
                return _startTime;
            }
        }


        //--------------------------------------------

        #endregion
        //--------------------------------------------


        //--------------------------------------------

        #region Initialisation
        //--------------------------------------------


        /// <summary>

        /// Standardkonstruktor.

        /// Setzt Frequenz des Timers und wirft eine Win32Exception,

        /// falls kein High-Performance Timer existiert.

        /// </summary>

        public Timer()
        {
            _startTime = 0;
            _stopTime = 0;
            _duration = 0;

            if (Timer.QueryPerformanceFrequency(out _freq) == false)
            {
                // high-performance counter not supported

                throw new Win32Exception(); ;
            }
        }

        //--------------------------------------------

        #endregion
        //--------------------------------------------


        //--------------------------------------------

        #region Methods
        //--------------------------------------------


        /// <summary>

        /// QueryPerformanceCounter stellt fest, wie viele Millisekunden seit dem letzten Systemstart

        /// vergangen sind und legt diese in bestmöglicher auflösung in einem 64-Bit Wert ab.

        /// </summary>

        /// <param name="lpPerformanceCount">

        /// Ein Zeiger auf einen 64-Bit Wert, in dem der Wert des Perfomance-Timers abgelegt wird.

        /// Dabei handelt es sich um eine 64-Bit Zahl, die die Zeit seit dem Systemstart in der

        /// bestmöglichen Auflösung mißt.

        /// </param>

        /// <returns>

        /// true  - Es gibt einen hochauflösenden Performance-Timer im System.

        /// false - Das System bietet den angeforderten Timer nicht.

        /// </returns>

        [DllImport("Kernel32.dll")]
        private static extern bool QueryPerformanceCounter(out long lpPerformanceCount);

        /// <summary>

        /// QueryPerformanceFrequency legt die Auflösung des hochauflösenden Performance-Timers fest.

        /// </summary>

        /// <param name="lpFrequency">

        /// Zeiger auf eine vorzeichenlose 64-Bit Zahl, die die Anzahl der Inkremente bestimmt die der

        /// Performance-Timer pro Sekunde ausführt.

        /// </param>

        /// <returns>

        /// true  - Es gibt einen hochauflösenden Performance-Timer im System.

        /// false - Das System bietet den angeforderten Timer nicht.

        /// </returns>

        [DllImport("Kernel32.dll")]
        private static extern bool QueryPerformanceFrequency(out long lpFrequency);

        /// <summary>

        /// Startet die Zeitmessung

        /// </summary>

        public void Start()
        {
            // lets do the waiting threads there work

            Thread.Sleep(0);

            // messen

            Timer.QueryPerformanceCounter(out _startTime);
        }

        /// <summary>

        /// Stopt die Zeitmessung

        /// </summary>

        public void Stop()
        {
            // messen

            Timer.QueryPerformanceCounter(out _stopTime);

            long spanne = _stopTime - _startTime;
            // zeitspanne errechnen

            _duration = (double)spanne / (double)_freq;
        }

        //--------------------------------------------

        #endregion
        //--------------------------------------------

    }
}

Der Dude

Treue Seele

  • »Der Dude« ist der Autor dieses Themas

Beiträge: 73

Wohnort: Elleringhausen-City

Beruf: ITA

  • Private Nachricht senden

18

10.09.2005, 19:11

Tata,

es geht jetzt. Leider habe ich noch eine ganz andere Lösung gefunden, die mich total verwirrt.
ABER es geht! :)

Vielen Dank für die ganze Hilfe.

TIM :)
"Wenn ich morgens doppelt so schnell über den Flur laufe, kann ich 2 Minuten länger schlaften!" - leider war es ein Irrtum.

Werbeanzeige