<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Visual C++ 6.0 / .NET (unmanaged)</title><link>https://www.dotnetzone.gr:443/cs/forums/30/ShowForum.aspx</link><description>Για τους hardcore developers, C/C++ forum για windows εφαρμογές!</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Timing Issues</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/19613.aspx</link><pubDate>Wed, 01 Nov 2006 16:11:44 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:19613</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/19613.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=19613</wfw:commentRss><description>Ανακάλυψα και αυτό : &lt;a href="http://blogs.msdn.com/coding4fun/archive/2006/10/31/916368.aspx"&gt;http://blogs.msdn.com/coding4fun/archive/2006/10/31/916368.aspx&lt;/a&gt;&lt;br&gt;</description></item><item><title>Timing Issues</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/19155.aspx</link><pubDate>Wed, 25 Oct 2006 13:48:39 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:19155</guid><dc:creator>BruteForce</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/19155.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=19155</wfw:commentRss><description>&lt;P&gt;Όντως καλό το άρθρο για το game loop. Ό,τι και αν κάνεις να έχεις υπόψιν σου ότι το ζήτημα του timing είναι εξαιρετικά πολύπλοκο. Γι'αυτό και κάποιοι ονομάζουν τα λειτουργικά τους Real Time. Γιατί εκεί το λειτουργικό &lt;STRONG&gt;εγγυάται&lt;/STRONG&gt; όμορφα πράγματα σχετικά με το timing.&lt;/P&gt;
&lt;P&gt;Ένα άλλο άρθρο που μπορείς να δει όποιος θέλει να εμβαθύνει στο ζήτημα είναι το &lt;A href="http://msdn.microsoft.com/msdnmag/issues/04/03/HighResolutionTimer/"&gt;http://msdn.microsoft.com/msdnmag/issues/04/03/HighResolutionTimer/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Επιπλέον θα ήθελα να αναφέρω τα εξής:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Υπάρχει ένα ωραίο φρούτο που λέγεται waitable timers (CreateWaitableTimer). Για όσους τα WM_TIMER δεν εξυπηρετούν. Αυτή και καλά δουλεύει με μεγάλο accuracy αλλά άλλο πράγμα το πότε έγινε set ένα event και άλλο το πότε θα τρέξει το thread που κάνει wait σε αυτό το event. Αν όμως το thread δεν κάνει wait αλλά test μέσα σε ένα tight loop όπου κάνει και άλλα πράγματα τότε ίσως κάτι καλό να παίζεται. 
&lt;LI&gt;Υπάρχει η υπεραγαπημένη μου function η MsgWaitForMultipleObjects(Ex) με την οποία σε συνδιασμό με ότι timer χρησιμοποιείς μπορείς να κοντρολλάρεις τα πράγματα με μαγικό τρόπο χωρίς να καλείς την PeekMessage τόσο συχνά ώστε να χτυπά 100% CPU το μηχάνημα. 
&lt;LI&gt;Υπάρχει η GetSystemTimeAdjustment με την οποία μπορείς να ανακαλύψεις προγραμματιστικά το timer resolution των windows στο PC σου, δηλαδή κάθε πότε βαράει το clock interrupt (η δεύτερη output parametros). Αυτό είναι στενά συνδεδεμένο με το resolution της GetTickCount. Το σχετικό utility βρίσκεται στο &lt;A href="http://www.sysinternals.com/Utilities/ClockRes.html"&gt;http://www.sysinternals.com/Utilities/ClockRes.html&lt;/A&gt; 
&lt;LI&gt;Τέλος πολλές φορές μπορείς να βρεις ένα καλό και&amp;nbsp;εξαιρετικά αξιόπιστο hi-res ρολογάκι αν απλά κοιτάξεις μέσα στο PC σου. Π.χ. πλέον όλα τα mobos έχουν 1394 (FireWire) on board. Και το 1394 έχει ένα ρολόι με διακριτικότητα 125μsec, δηλαδή χτυπάει 8125 φορές το δευτερόλεπτο. Και είναι hardware timer που δεν κάνει drift ποτέ των ποτών. Κάνει wrap κάθε 128 sec. Όποιος θέλει πληροφορίες για αυτό ας μου μιλήσει.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Τέλος για όποιον νιώθει γενναίος και&amp;nbsp;του αρέσει&amp;nbsp;να βαδίζει σε παρθένα εδάφη υπάρχει το /TIMERES switch του boot.ini. Αντιγράφω από το &lt;A href="http://www.sysinternals.com/Information/bootini.html"&gt;http://www.sysinternals.com/Information/bootini.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;FONT style="BACKGROUND-COLOR: #f5f5dc"&gt;/TIMERES= Sets the resolution of the system timer on the standard x86 &lt;STRONG&gt;multiprocessor&lt;/STRONG&gt; HAL (Halmps.dll). The argument is a number interpreted in hundreds of nanoseconds, but the rate is set to the closest resolution the HAL supports that isn't larger than the one requested. The HAL supports the following resolutions: &lt;BR&gt;&lt;BR&gt;Hundreds of nanoseconds Milliseconds (ms)&lt;BR&gt;9766 0.98&lt;BR&gt;19532 2.00&lt;BR&gt;39063 3.90&lt;BR&gt;78125 7.80 &lt;BR&gt;&lt;BR&gt;The default resolution is 7.8 ms. The system timer resolution &lt;STRONG&gt;affects the resolution of waitable timers&lt;/STRONG&gt;. Example: /TIMERES=21000 would set the timer to a resolution of 2.0 ms.&lt;/FONT&gt;
&lt;P&gt;Όπως καταλαβαίνετε το /TIMERES δεν είναι κάτι που βάζετε ελαφρά τη καρδία στο setup του game σας. Αν όμως έχετε μια εξαιρετικά custom εφαρμογή που είναι timing sensitive τότε μπορεί να βοηθήσει πολύ.&lt;/P&gt;
&lt;P&gt;Δημήτρης&lt;/P&gt;</description></item><item><title>Απ: ΤΟ ΠΡΟΓΡΑΜΜΑ ΔΕΝ ΤΡΕΧΕΙ ΜΕ ΤΗΝ ΙΔΙΑ ΤΑΧΥΤΗΤΑ ΣΕ ΟΛΑ ΤΑ PCS.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18923.aspx</link><pubDate>Sat, 21 Oct 2006 02:28:34 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18923</guid><dc:creator>georiege</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18923.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=18923</wfw:commentRss><description>Παιδία ευχαριστώ πολύ για τις απαντήσεις , το link από τον φίλο Palladin βοήθησε παρά πολύ :-)</description></item><item><title>Απ: ΤΟ ΠΡΟΓΡΑΜΜΑ ΔΕΝ ΤΡΕΧΕΙ ΜΕ ΤΗΝ ΙΔΙΑ ΤΑΧΥΤΗΤΑ ΣΕ ΟΛΑ ΤΑ PCS.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18754.aspx</link><pubDate>Wed, 18 Oct 2006 20:48:18 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18754</guid><dc:creator>Χρήστος Γεωργακόπουλος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18754.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=18754</wfw:commentRss><description>Αυτή η ερώτηση μου θύμισε τα πολύυυυυ νιάτα μου.... :-)</description></item><item><title>Απ: ΤΟ ΠΡΟΓΡΑΜΜΑ ΔΕΝ ΤΡΕΧΕΙ ΜΕ ΤΗΝ ΙΔΙΑ ΤΑΧΥΤΗΤΑ ΣΕ ΟΛΑ ΤΑ PCS.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18742.aspx</link><pubDate>Wed, 18 Oct 2006 17:21:49 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18742</guid><dc:creator>PALLADIN</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18742.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=18742</wfw:commentRss><description>Eνα πολύ καλο post για το πως να φτιάξεις ένα Win32 Game Loop&lt;BR&gt;&lt;BR&gt;http://www.mvps.org/directx/articles/writing_the_game_loop.htm&lt;BR&gt;&lt;BR&gt;</description></item><item><title>Απ: ΤΟ ΠΡΟΓΡΑΜΜΑ ΔΕΝ ΤΡΕΧΕΙ ΜΕ ΤΗΝ ΙΔΙΑ ΤΑΧΥΤΗΤΑ ΣΕ ΟΛΑ ΤΑ PCS.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18739.aspx</link><pubDate>Wed, 18 Oct 2006 16:45:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18739</guid><dc:creator>Νατάσα Μανουσοπούλου</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18739.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=18739</wfw:commentRss><description>Disclaimer: έχω μεσάνυχτα από game development, αλλά καταλαβαίνω ότι αυτό που κάνεις είναι αρκετά απλό και μάλλον δεν εμπίπτει σε αυτή την κατηγορία.&lt;br&gt;&lt;br&gt;Για να τρέχει πάντα το παιχνίδι σου στη "σωστή" ταχύτητα, πρέπει τα βήματά του να γίνονται σε τακτά χρονικά διαστήματα. Για να το κάνεις αυτό χρησιμοποιείς timers. Το Windows API σου δίνει τους απλούς timers (&lt;a href="http://go.microsoft.com/fwlink/?linkid=16908"&gt;SetTimer&lt;/a&gt;, &lt;a href="http://go.microsoft.com/fwlink/?linkid=16909"&gt;WM_TIMER&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/timers/timerreference/timerfunctions/killtimer.asp"&gt;KillTimer&lt;/a&gt;), αλλά όταν θέλεις χρονισμό με μεγαλύτερη ακρίβεια πρέπει να χρησιμοποιήσεις τους &lt;a href="http://windowssdk.msdn.microsoft.com/en-us/library/ms712704%28vs.80%29.aspx"&gt;multimedia timers&lt;/a&gt;.&lt;br&gt;</description></item><item><title>Απ: ΤΟ ΠΡΟΓΡΑΜΜΑ ΔΕΝ ΤΡΕΧΕΙ ΜΕ ΤΗΝ ΙΔΙΑ ΤΑΧΥΤΗΤΑ ΣΕ ΟΛΑ ΤΑ PCS.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18728.aspx</link><pubDate>Wed, 18 Oct 2006 06:10:08 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18728</guid><dc:creator>anjelinio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18728.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=18728</wfw:commentRss><description>Πρέπει να βρείς ένα τρόπο να διασφαλίσεις οτι το επόμενο refresh της οθόνης, το next frame paint ας πούμε, γίνεται σε σταθερά χρονικά διαστήματα. &lt;br /&gt;
&lt;br /&gt;
Μπορείς να κρατάς ένα timestamp απο την τελευταία φορά που έκανες process ένα frame, και να περίμένεις ή να επιταχύνεις προτου επεξεργαστείς το επόμενο frame, διασφαλίζοντας έτσι ότι θα έχεις ομαλή χρονικά ροή ανανέωσης στην οθόνη.&lt;br /&gt;
&lt;br /&gt;
Δυστυχώς, τα C++ skills μου δεν είναι πλέον αρκετά καλά για να σε βοηθήσω και με λίγο κώδικα ...</description></item><item><title>ΤΟ ΠΡΟΓΡΑΜΜΑ ΔΕΝ ΤΡΕΧΕΙ ΜΕ ΤΗΝ ΙΔΙΑ ΤΑΧΥΤΗΤΑ ΣΕ ΟΛΑ ΤΑ PCS.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/18724.aspx</link><pubDate>Wed, 18 Oct 2006 02:46:27 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:18724</guid><dc:creator>georiege</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/18724.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=18724</wfw:commentRss><description>&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EL; mso-fareast-language: EL; mso-bidi-language: AR-SA"&gt;Έχω γράψει ένα απλό παιχνίδι σε C++&amp;nbsp; ,&amp;nbsp; με Visual Studio 2005 χρησιμοποιώντας MFC.Απλός χειρίζομαι μερικά Bitmaps &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;και έχω και κάποια controls με τα πλήκτρα. Το πρόβλημα που αντιμετωπίζω είναι ότι το πρόγραμμα δεν τρέχει με την ίδια ταχύτητα σε όλα τα &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EL; mso-bidi-language: AR-SA"&gt;PCs&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EL; mso-fareast-language: EL; mso-bidi-language: AR-SA"&gt;. Π.χ σε παλιά-αργά μηχανήματα πηγαίνει πολύ αργά , ενώ εάν το τρέξω σε σχετικά καινουργιο &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EL; mso-bidi-language: AR-SA"&gt;PC&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EL; mso-fareast-language: EL; mso-bidi-language: AR-SA"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EL; mso-fareast-language: EL; mso-bidi-language: AR-SA"&gt;πηγαίνει πολύ γρήγορα και δεν προλαβαίνεις να το ελέγχεις. Υπάρχει κάποια σχετικά απλός τρόπος , έτσι ώστε το πρόγραμμα να τρέχει με την ίδια ταχύτητα σε όλα τα &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EL; mso-bidi-language: AR-SA"&gt;PCs&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Tahoma; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EL; mso-fareast-language: EL; mso-bidi-language: AR-SA"&gt; ?. Ευχαριστώ :)&lt;/SPAN&gt;</description></item></channel></rss>