2D анимация
От: AlekVladis  
Дата: 08.12.04 22:33
Оценка:
Необходимо разработать достаточно сложную анимационную сцену на плоскости — одновременно перемещать несколько десятков объектов(векторные фигуры с заливкой и растровые изображения).
Требования: плавность перемещения, отсутствие мерцания.
Опыт программирования анимации у меня практически отсутствует.
Насколько понимаю, доступны 3 варианта:
1. GDI/GDI+. Как убрать мерцание?
2. DirectX. Где найти документацию о последних версиях? Есть материал о DirectDraw, но это, вероятно, уже не актуально?
3. OpenGL. Есть ли смысл работать в 2D?
Информация из различных источников противоречивая.
А времени на поиск решения и эксперименты не так много.
Re: 2D анимация
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 09.12.04 04:37
Оценка:
Здравствуйте, AlekVladis, Вы писали:

AV>Необходимо разработать достаточно сложную анимационную сцену на плоскости — одновременно перемещать несколько десятков объектов(векторные фигуры с заливкой и растровые изображения).

AV>Требования: плавность перемещения, отсутствие мерцания.
AV>Опыт программирования анимации у меня практически отсутствует.
AV>Насколько понимаю, доступны 3 варианта:
AV>1. GDI/GDI+. Как убрать мерцание?

Мерцание в любом из 3-ёх вариантов убирается с помощью теневого экрана: выделяется в памяти буфер со страницу видеопамяти, в нём строится сцена, после построения он целиком копируется в видеопамять (DirectX и OpenGL позволяют сделать это автоматически — переключение страниц, в GDI придётся копировать руками).

AV>2. DirectX. Где найти документацию о последних версиях?

MSDN тебе в руку.
AV>Есть материал о DirectDraw, но это, вероятно, уже не актуально?
Для векторной графики DirectDraw точно не актуален, а с самим DirectX`ом, если мало времени, разобраться можешь не успеть.
AV>3. OpenGL. Есть ли смысл работать в 2D?
Есть. OpenGL проще DirectX`а в программировании, а возможности те же самые.

AV>Информация из различных источников противоречивая.

Посмотри здесь и здесь
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
Re: 2D анимация
От: rus blood Россия  
Дата: 09.12.04 09:53
Оценка:
Здравствуйте, AlekVladis, Вы писали:

AV>Необходимо разработать достаточно сложную анимационную сцену на плоскости — одновременно перемещать несколько десятков объектов(векторные фигуры с заливкой и растровые изображения).

AV>Требования: плавность перемещения, отсутствие мерцания.

Для такой задачи хватит обычного GDI...
Имею скафандр — готов путешествовать!
Re: 2D анимация
От: Аноним  
Дата: 09.12.04 09:55
Оценка:
Здравствуйте, AlekVladis, Вы писали:

AV>1. GDI/GDI+. Как убрать мерцание?


По поводу мерцания могу порекомендовать почитать здесь

AV>2. DirectX. Где найти документацию о последних версиях? Есть материал о DirectDraw, но это, вероятно, уже не актуально?

AV>3. OpenGL. Есть ли смысл работать в 2D?

Не думаю что стоит использовать таких монстров как OpenGL и DirectDraw в этой задаче. Больше времени потратишь на изучение их работы.
Re[2]: 2D анимация
От: Карпов Евгений Россия  
Дата: 09.12.04 09:59
Оценка:
Здравствуйте, Аноним, Вы писали:

Блин, ошибся:

А>Не думаю что не стоит использовать таких монстров как OpenGL и DirectDraw в этой задаче. Больше времени потратишь на изучение их работы.
Re[2]: 2D анимация
От: Аноним  
Дата: 11.03.05 14:28
Оценка:
А>Не думаю что стоит использовать таких монстров как OpenGL и DirectDraw в этой задаче. Больше времени потратишь на изучение их работы.

А если есть необходимость выводить на плоскость картинку, а поверх рисовать еще изменяющуюся текстуру... Тут уж точно нужен OpenGL. Только вот все равно выходит лажа какая-то ... даже при использование double-bufferringа .



void COpenGLView::OnDraw(CDC* pDC)
{
    DrawScene();
    SwapBuffers(pDC->m_hDC);
}

void COpenGLView::OnMouseMove(UINT nFlags, CPoint point) 
{    
    m_CurMousePos=glGetPoint();
    Invalidate();
}
void  COpenGLView::Init()
{
    //....

    image=auxDIBImageLoad("data\\begin.bmp");

    //....
}
void COpenGLView::DrawScene()
{
    glDrawPixels(image->sizeX, image->sizeY,GL_RGB,GL_UNSIGNED_BYTE,image->data); 
    
    glBegin(GL_LINE_STRIP); 
     glVertex2f(0,0);
     glVertex2f(m_CurMousePos.x,m_CurMousePos.y);
    glEnd();
}


Помогите кто-нить советом, что тут можно придумать ???
Я просто обезоружен... получается, что такой пустяк а тормозит просто жутко
Re[3]: 2D анимация
От: Lef  
Дата: 16.03.05 20:48
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>>Не думаю что стоит использовать таких монстров как OpenGL и DirectDraw в этой задаче. Больше времени потратишь на изучение их работы.


А>А если есть необходимость выводить на плоскость картинку, а поверх рисовать еще изменяющуюся текстуру... Тут уж точно нужен OpenGL. Только вот все равно выходит лажа какая-то ... даже при использование double-bufferringа .




А>
А>void COpenGLView::OnDraw(CDC* pDC)
А>{
А>    DrawScene();
А>    SwapBuffers(pDC->m_hDC);
А>}

А>void COpenGLView::OnMouseMove(UINT nFlags, CPoint point) 
А>{    
А>    m_CurMousePos=glGetPoint();
А>    Invalidate();
А>}
А>void  COpenGLView::Init()
А>{
А>    //....

А>    image=auxDIBImageLoad("data\\begin.bmp");

А>    //....
А>}
А>void COpenGLView::DrawScene()
А>{
А>    glDrawPixels(image->sizeX, image->sizeY,GL_RGB,GL_UNSIGNED_BYTE,image->data); 
    
А>    glBegin(GL_LINE_STRIP); 
А>     glVertex2f(0,0);
А>     glVertex2f(m_CurMousePos.x,m_CurMousePos.y);
А>    glEnd();
А>}
А>


А>Помогите кто-нить советом, что тут можно придумать ???

А>Я просто обезоружен... получается, что такой пустяк а тормозит просто жутко

Какого рода анимацию ты используешь? glDrawPixels не годится вообще для real-time анимации.
Нужно юзать динамическую текстуру.
... << RSDN@Home 1.1.3 stable >>
Re: 2D анимация
От: Ovl Россия  
Дата: 17.03.05 07:20
Оценка:
Здравствуйте, AlekVladis, Вы писали:

AV>Необходимо разработать достаточно сложную анимационную сцену на плоскости — одновременно перемещать несколько десятков объектов(векторные фигуры с заливкой и растровые изображения).

AV>Требования: плавность перемещения, отсутствие мерцания.
AV>Опыт программирования анимации у меня практически отсутствует.
AV>Насколько понимаю, доступны 3 варианта:
AV>1. GDI/GDI+. Как убрать мерцание?
AV>2. DirectX. Где найти документацию о последних версиях? Есть материал о DirectDraw, но это, вероятно, уже не актуально?
AV>3. OpenGL. Есть ли смысл работать в 2D?
AV>Информация из различных источников противоречивая.
AV>А времени на поиск решения и эксперименты не так много.

попробуй SDL
Read or Die!
Как правильно задавать вопросы
Как правильно оформить свой вопрос
Автор: anvaka
Дата: 15.05.06
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.