Форум программистов, компьютерный форум, киберфорум
DirectX
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
24 / 24 / 1
Регистрация: 16.05.2012
Сообщений: 285

Анимация изображений

31.05.2013, 17:13. Показов 1191. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как ее реализовать? Я вроде как научился выводить на экран просто изображение, но как выводить только его часть? Да и еще с необходимой частотой менять выводимое "содержимое"?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2013, 17:13
Ответы с готовыми решениями:

Анимация в OpenGL, а где собсно, анимация?
// Bounce.cpp // Demonstrates a simple animated rectangle program with GLUT // OpenGL SuperBible, 3rd Edition // Richard S. Wright...

Анимация изображений
Доброго времен суток форумчане. Вопрос следующего характера: Нужно написать скрипт с циклом for ,который создает на диске изображение....

Анимация двумерных изображений
Необходимо построить два отрезка длиной 70 пикселей, которые будут взаимно перпендикулярными и которые появляются касательно к невидимому...

6
 Аватар для BeginerMan
51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427
31.05.2013, 18:09
Загружаешь любой рисунок с анимациями в его реальном размере. Т.е. если рисунок 580х280 , то так и загружай.
C++
1
D3DXCreateTextureFromFileEx
msdn в помощь.
Дальше.
Создаёшь какую-нибудь RECT для анимации , ширина ректа = ширине одного слайда , также высота. Реализация будет ниже.
Я пользуюсь directx9.
Я рендерю свой спрайт с помощью
C++
1
2
LPD3DXSPRITE q_sprite;
q_sprite->Draw(texture,твой rect для анимации,Центровка,Позиция,Цвет);//Впрочем посмотри msdn
Дальше.
Запехни себе куда-нить define
C++
1
#define SPRITE_UPDTAE 100//10 кадров в 1 сек. Т.е. 1 кадр в 0.1 сек
В рендер сцены пихай функцию
C++
1
2
3
4
5
6
7
8
void Animation()
{
    rect.left = q_frameNumber * frame_width;
    rect.right = anim_hero.left + frame_width;
    rect.top = frame_height;
    rect.bottom = frame_height + frame_height;
    DoAnimation();
}
rect - твой RECT для анимации
int q_frameNumber - поставь 0 , номер фрэйма или слайда.
int frame_width - ширина слайда.
int frame_height - высота слайда.
Вот функция DoAnimation:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void DoAnimation()
{
    q_animationTimer = timeGetTime();
 
    if(q_animate)
    {
        if(q_animationTimer - q_lastUpdate > SPRITE_UPDATE)
        {
            q_frameNumber++;
            if(q_frameNumber == q_maxFrames)
            {
                q_frameNumber = 0;
            }
            q_lastUpdate = q_animationTimer;
        }
    }
    else
    {
        q_frameNumber = 0;
    }
}
Надеюсь знаешь что за функция timeGetTime() , msdn в помощь.
float q_animationTimer - поставь равно 0 , твой таймер типо для смены слайдов.
bool q_animate - проверка , нужна ли анимация , поставь равно true.
float q_lastUpdate - поставь равно 0 , записывает последний апдэйт таймера.
int q_maxFrame - ставь сколько у тебя будет всего слайдов для анимации. Если поставишь 5 будет 5 анимаций.

Вот я использую так.
Если не получится , спрашивай.
0
24 / 24 / 1
Регистрация: 16.05.2012
Сообщений: 285
31.05.2013, 18:14  [ТС]
к сожалению, мне необходим пример для dx11... а в нем не предусмотрено типа для спрайтов, по-моему...
0
 Аватар для BeginerMan
51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427
31.05.2013, 18:15
Это для directx9 а не 11 , в принципе смысл тот же , только найди вывод спрайт и загрузку текстуры для твоего directx11. И всё ок.
0
24 / 24 / 1
Регистрация: 16.05.2012
Сообщений: 285
31.05.2013, 19:22  [ТС]
ну не совсем, например в шейдер что передавать? Всю текстуру целиком а потом уже в шейдере как-то "выбирать", что выводить(тут очень сомнительно), или же несколько обрезков текстуры, и при проходе "устанавливать" необходимый кадр?
0
 Аватар для BeginerMan
51 / 50 / 14
Регистрация: 17.11.2012
Сообщений: 427
31.05.2013, 19:29
Ахах , ну уж извините , но в directx11 не разбираюсь : D
Но как я уже объяснял выше , просто я с помощью RECT выбирал мне нужный слайд и всё , причём каждые 0.1 секунды
Но как это убдет выглядить в 11 я не знаю :/
0
24 / 24 / 1
Регистрация: 16.05.2012
Сообщений: 285
31.05.2013, 20:16  [ТС]
нет, теоретически, я знаю как это сделать, но вот на практике скорее всего, это очень криво
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.05.2013, 20:16
Помогаю со студенческими работами здесь

Анимация двухмерных изображений
Ребятки, очень нужна ваша помощь. Необходимо построить два отрезка длиной 70 пикселей, которые будут взаимно перпендикулярными и которые...

Анимация двухмерных изображений
Не могу сделать так, чтобы при каждом обороте треугольник менял цвет. program laba; uses crt,graph; procedure Vrash(a:real;var...

Анимация двумерных изображений
Как сделать так чтобы отрезки с каждым новым оборотом меняли цвет? uses graph,wincrt; var xc,yc,x,y,x1,y1,x2,y2,x3,y3,x4,y4:integer;...

Анимация исчезновения изображений
Нужно чтобы плавно появлялось изображение, исчезало, появлялось другое. Таких около 50. И на каждое разные ссылки. Как лучше реализовать?

Анимация двухмерных изображений
На экране по максимально возможному кругу расположены равномерно числа от 1 до 12 (часы). Из центра экрана на цифры по очереди указывает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru