Поворот изображения
От: Karnak-Moruruk  
Дата: 24.02.04 20:28
Оценка: :)
Подскажите как на С++ в DirectDraw повернуть изображение на определённый угол,поворачивая каждый пиксель отдельно
Re: Поворот изображения
От: Аноним  
Дата: 27.02.04 15:24
Оценка:
Здравствуйте, Karnak-Moruruk, Вы писали:

KM>Подскажите как на С++ в DirectDraw повернуть изображение на определённый угол,поворачивая каждый пиксель отдельно


1. Аппаратно DD поворачивает только на 90 градусов.
2. Если надо вращать — то DD — не самый лучший выбор
Re: Поворот изображения
От: Аноним  
Дата: 27.02.04 16:45
Оценка: -1 :)
Здравствуйте, Karnak-Moruruk, Вы писали:

KM>Подскажите как на С++ в DirectDraw повернуть изображение на определённый угол,поворачивая каждый пиксель отдельно


Хватаешь пиксель и изо всех сил как тащищь его по прямой к месту назначения. Ни в коем случае не крути его , а то развалиться.
Re[2]: Поворот изображения
От: DEMON HOOD  
Дата: 28.02.04 10:29
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Здравствуйте, Karnak-Moruruk, Вы писали:


KM>>Подскажите как на С++ в DirectDraw повернуть изображение на определённый угол,поворачивая каждый пиксель отдельно


А>1. Аппаратно DD поворачивает только на 90 градусов.


а не аппаратно?
... << RSDN@Home 1.1.2 beta 1 >>
Re[3]: Поворот изображения
От: Аноним  
Дата: 28.02.04 11:03
Оценка:
Здравствуйте, DEMON HOOD, Вы писали:

А>>1. Аппаратно DD поворачивает только на 90 градусов.


DH>а не аппаратно?


Как правило, не аппаратно он тоже не поворачивает, так как в библиотеке программной реализации нет.
Может какие — то совсем новые директы и крутят, но вряд — ли.
ДД — уже не актуален.
Re: Поворот изображения
От: HeaveN Россия  
Дата: 28.02.04 15:19
Оценка: +1 -1
Здравствуйте, Karnak-Moruruk, Вы писали:

KM>Подскажите как на С++ в DirectDraw повернуть изображение на определённый угол,поворачивая каждый пиксель отдельно


Спрашивается, нафига?
Берешь полигон, натягиваешь на него изображение в качестве текстуры и ходь обвращайся. А DirectDraw уже давно умер.
... << RSDN@Home 1.1.3 stable >>
Нет такого закона, что человеку летать нельзя...
Re: Поворот изображения
От: EyeGem Россия https://vk.com/enginya
Дата: 11.03.04 18:29
Оценка: 2 (1)
Здравствуйте, Karnak-Moruruk, Вы писали:

KM>Подскажите как на С++ в DirectDraw повернуть изображение на определённый угол,поворачивая каждый пиксель отдельно


Если тебе ОЧЕНЬ нужно, то так (пример без отсечения, фильтров, блендинга и пр.):


struct pixel_t;
struct texel_t;

extern pixel_t* screen_buffer_pixel_t_ptr;
extern int      screen_buffer_width;

void scanline_texture
( 
    int x, int y, int length,  //где на экране вывести текстурированную горизонтальную линию (скэн-линию)
    int u1, int v1,            //дробное с фиксированной точкой 16:16
    int u2, int v2,            //дробное с фиксированной точкой 16:16
    texel_t* texture,          //указатель на текстуру
    int texture_width_shift,   //сдвиг (ширина текстуры должна быть степенью двойки)
    int texture_width_mask,    //маска, 16:16 (чтобы u-координата не выходила за размер текстуры)
    int texture_height_mask    //маска, 16:16 (чтобы v-координата не выходила за размер текстуры)
)
{
    //проверяем отрицательную длину
    if(length < 0) { x+=length; length=-length; int t=u1;u1=u2;u2=t; t=v1;v1=v2;v2=t; }
    
    //вычисляем количество пикселей и шаги по текстуре
    ++length;
    int du = (u2-u1)/length;
    int dv = (v2-v1)/length;
    
    //подготавливаем указатель на буфер экрана
    pixel_t *dest = screen_buffer_pixel_t_ptr + y * screen_buffer_width + x;
    
    //выводим length пикселей
    do{
        //переносим тексель текстуры в пиксель буфера экрана
        *dest++ = your_conversion_from_texel_to_pixel( texture[(u1>>16)+((v1>>16)<<texture_width_shift)] );
        
        //делаем шаг по текстуре
        u1+=du; u1&=texture_width_mask;
        v1+=dv; v1&=texture_height_mask;
    }while(--length);
}


Чтобы нарисовать спрайт — выводи полигоны этим или другим нужным scanline.
И вообще почитай об этом в нете.
... << RSDN@Home 1.1 beta 2 >>
^__^
Re: Поворот изображения
От: Аноним  
Дата: 14.03.04 10:54
Оценка:
Здравствуйте, Karnak-Moruruk, Вы писали:

KM>Подскажите как на С++ в DirectDraw повернуть изображение на определённый угол,поворачивая каждый пиксель отдельно


Мудрите вы всё... На самом деле в MSDN есть статья на эту тему — прямой доступ к поверхности, есть прямо готовая функция. Копируешь и наслаждаешься. Правда, лучше воспользоваться чем-нибудь другим, я согласен...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.