| imho.ws |
![]() |
|
|
|
# 1 |
|
Guest
Сообщения: n/a
|
Привет!
У меня есть в тебе вопрос. Передо мной стоит задача: Написать программу(c++, win32 API), отображающую анимацию. Начало движения: левый нижний угол окна. Конец - правый верхний угол окна. Объект движения - круг, который уменьшается в размере, сменяя цвета. Использовать метод двойной буферизации. Ничего толкового не нашел? Как решить задачу? Еще нужно разобраться с такими вопросами, как класс Bitmap, cоздание, заполнение, вывод битовой карты Сергей-Минск |
|
|
# 2 |
|
Advanced Member
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498
![]() ![]() ![]() ![]() |
Пользуй OpenGL там уже все встроено. API не предназначен для графики как таковой и катит только для самой простой "офисной" графики, ну там всякие диаграммки и др. А анимация без двойной буферизации будет очень сильно мерцать, т.к. стандартный API ее изначально не поддерживает. Самый простой выход чтобы не парится и самому не изобретать велосипед, я имею в виду двойную буферизацию - использования встроенного во все окна движка OpenGL. Что быстро и просто.
могу кинуть мануал, правда для дельфи, но зато там очень понятно все написано.
__________________
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах Последний раз редактировалось /7y3uK; 14.03.2004 в 16:47. |
|
|
|
|
# 5 |
|
Advanced Member
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498
![]() ![]() ![]() ![]() |
Вводную читайте на _ttp://vr-online.ru/books/bib.htm в разделе библия Delphi есть в электронном варианте, целая глава как раз про OpenGL и API графику - автор Фленов М.
Пока не знаю куда залить целиковую книгу с экземплами.
__________________
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|
|
|
|
# 6 |
|
::VIP::
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310
![]() ![]() ![]() ![]() ![]() |
по сабжу: 100 лет не пользовал, если что - ногами не бить
1. движение объекта есть рисование его в различных позициях по таймеру 2. буферизация есть подготовка изображения ДО его показа (заполнили битмэм и ждём вызова на показ) 3. двойная буфф. - заполнение буфера №2 для СЛЕДУЮЩЕГО кадра, пока показывается текущий всего-то функций - заполни битмэп, приаттачь битмэп и таймер |
|
|
|
|
# 7 |
|
Advanced Member
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498
![]() ![]() ![]() ![]() |
Я так тоже пробовал, но увы - мерцает. API графики не предназначены для более серьезных вещей, чем диграммки и пр. Там даже нет дефорлтной очистки битмапа. Двойная буферизация - имхо в наше время, это функциональная взможность девайса, который берет на себя, при определенной крутизне его самого, достаточно большую долю вычислений камня.
__________________
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|
|
|
|
# 8 |
|
Junior Member
Регистрация: 05.02.2004
Адрес: Indianapolis
Сообщения: 64
![]() |
Mozhno vospolzovatsya DirectX.
Sam delal. Vse dovolno prosto:sozdaesh 2 surfaces i menyaesh ih.No inogda proishodyat takie oshibki, chto novichku ochen trudno razobratsya. Vobshem dlya DX nuzhna horoshaya kniga. Da tok smotrite, chtobi v knige visokoe resolution ressmatrivalos tozhe. |
|
|
|
|
# 9 |
|
Junior Member
Регистрация: 08.05.2004
Адрес: Саратов
Сообщения: 131
![]() |
создаешь переменную типа битмап чёто вроде
Graphics::TBitmap *bmp; bmp = new Graphics::TBitmap(); bmp->Height = 500; //задаешь высоту, ширину bmp->Width = 500; рисуешь на неё чё тебе надо(надеюсь, умеешь ;Р) дальше смотря куда ты рисуешь(допустим на форму) Form1->Canvas->CopyRect(TRect(0,0,500, 500), bmp->Canvas, TRect(0,0,500, 500)); усё, регламент ... т.е. получается что ты сначала в памяти рисуешь а потом на экран уже нарисованное пихаешь |
|
|
|
|
# 10 |
|
Newbie
Регистрация: 05.04.2004
Сообщения: 24
![]() |
самый правильный вариант - openGL. очень простой АПИ, кроссплатформенность и т.д.
www.opengl.org
__________________
|
|
|