Долго возившись с MSDN наконец понял что они имели в веду под "Выборам" растра в контестном устройстве. Оказвается они имели в виду функцию SelectObject()... блин! Сразу бы написали чего они имели в веду... а то них не понятно!!!!
Идея двойной буферизации заключается в том, чтобы объекты выводить не сразу на экран по очереди, а сначало нарисовать их все на "картинке", которая содержиться в памяти и только потом эту самую картинку целиком вывести на экран
Для того, чтобы эту самую "картинку" которая потом будет выводить на экран все нарисованное за одно повторение "цикла игры" создать надо было
1 создать для нее HDC (назову ее hdc1), совместное с HDC экрана функцией CreateCompatibleBitmap()
2 создать HBITMAP, совместный с HDC экрана функцией CreateCompatibleBitmap()
3 выделить в hdc1 созданную только что HBITMAP функцией SelectObject()
и только потом можно рисовать в hdc1 "обычными" методами...
В моей змейки мерцания незаметно только потому, что у нее маленькие квадратики, елси их сделать чуть бульше будет ЖЕСТЬ =)
Идея двойной буферизации заключается в том, чтобы объекты выводить не сразу на экран по очереди, а сначало нарисовать их все на "картинке", которая содержиться в памяти и только потом эту самую картинку целиком вывести на экран
Для того, чтобы эту самую "картинку" которая потом будет выводить на экран все нарисованное за одно повторение "цикла игры" создать надо было
1 создать для нее HDC (назову ее hdc1), совместное с HDC экрана функцией CreateCompatibleBitmap()
2 создать HBITMAP, совместный с HDC экрана функцией CreateCompatibleBitmap()
3 выделить в hdc1 созданную только что HBITMAP функцией SelectObject()
и только потом можно рисовать в hdc1 "обычными" методами...
В моей змейки мерцания незаметно только потому, что у нее маленькие квадратики, елси их сделать чуть бульше будет ЖЕСТЬ =)