Есть растр в районе 100 Мб. Есть реальные координаты x1, y1, ... x4, y4 четырехугольника соответствующие вершинам растра. Но этот четырехугольник имеет не прямые углы. А растр — обычное прямоугольное фото. Как вписать этот растр в четырехугольник планирую использовать WINAPI, но если там ничего нет для этих целей тол DirectX. Я так понимаю мне нужно каждой точке xi, yi сопоставить текстурную координату ui,vi? это как я понимаю будут текстурные координаты (0,0); (0,1); (1,1); (1, 0)?
и еще не подскажите как реализовать такое на direct x и примерчиком киньте в меня плиз если есть.
Здравствуйте, Bauern, Вы писали:
B>Есть растр в районе 100 Мб. Есть реальные координаты x1, y1, ... x4, y4 четырехугольника соответствующие вершинам растра. Но этот четырехугольник имеет не прямые углы. А растр — обычное прямоугольное фото. Как вписать этот растр в четырехугольник планирую использовать WINAPI, но если там ничего нет для этих целей тол DirectX.
Если четырехугольник — параллелограмм, то достаточно аффинных преобразований — например, с использованием функции SetWorldTransform и т.д. или PlgBlt.
Если нет, то понадобятся перспективные преобразования (на форуме было, скорее всего от McSeem2)
Здравствуйте, MBo, Вы писали:
MBo>Если четырехугольник — параллелограмм, то достаточно аффинных преобразований — например, с использованием функции SetWorldTransform и т.д. или PlgBlt. MBo>Если нет, то понадобятся перспективные преобразования (на форуме было, скорее всего от McSeem2)
B>Здравствуйте, MBo, Вы писали:
MBo>>Если четырехугольник — параллелограмм, то достаточно аффинных преобразований — например, с использованием функции SetWorldTransform и т.д. или PlgBlt. MBo>>Если нет, то понадобятся перспективные преобразования (на форуме было, скорее всего от McSeem2)
— "texture mapping" — преобразование, "натяжение" текстуры вообще. Конкретно подойдет "perspective projection", если нет каких-то специальных требований к наложению текстуры. Она чаще всего используется, найдется простой в использовании код для софтверного рендеринга;
— еще вылезет "texture filtering" — интерполяция пикселов картинки при трансформации.
Эти вещи описаны в алгоритмических библиотеках, нетрудно найти готовый и простой в использовании код, поэтому задача не такая трудоемкая, как может показаться.
Здравствуйте, goto, Вы писали:
G>Если не использовать готовый 3d-api (OpenGL, DirectX), то нужно посмотреть несколько вещей:
G>- scanline алгоритм — построчная заливка полигона;
G>- "texture mapping" — преобразование, "натяжение" текстуры вообще. Конкретно подойдет "perspective projection", если нет каких-то специальных требований к наложению текстуры. Она чаще всего используется, найдется простой в использовании код для софтверного рендеринга;
G>- еще вылезет "texture filtering" — интерполяция пикселов картинки при трансформации.
G>Эти вещи описаны в алгоритмических библиотеках, нетрудно найти готовый и простой в использовании код, поэтому задача не такая трудоемкая, как может показаться.
а если использовать DirectX, Open GL? тогда что посмотреть какие функции? Я новечек в графике. Натолкните куда нужно пож!
Здравствуйте, Bauern, Вы писали:
B>а если использовать DirectX, Open GL? тогда что посмотреть какие функции? Я новечек в графике. Натолкните куда нужно пож!
Я сейчас функции точно не вспомню, но нужно создать четырехугольник, его вертексам присвоить нужные текстурные координаты и, собственно, наложить текстуру. Это самые базовые вещи, и я уверен, найдутся примеры в DirectX sdk, а по opengl можно стартовать здесь.
Здравствуйте, Bauern, Вы писали:
B>Есть растр в районе 100 Мб. Есть реальные координаты x1, y1, ... x4, y4 четырехугольника соответствующие вершинам растра. Но этот четырехугольник имеет не прямые углы. А растр — обычное прямоугольное фото. Как вписать этот растр в четырехугольник планирую использовать WINAPI, но если там ничего нет для этих целей тол DirectX. Я так понимаю мне нужно каждой точке xi, yi сопоставить текстурную координату ui,vi? это как я понимаю будут текстурные координаты (0,0); (0,1); (1,1); (1, 0)?
B>и еще не подскажите как реализовать такое на direct x и примерчиком киньте в меня плиз если есть.
B>спасибо!
Если используете DirectX, то єто действительно просто. Создаете два треугольника по форме вашего четырехугольника. Формат вершин будет координаты в пространстве и текстурные координаты. Достаточно будет простого урока с любого сайта по DirectX. Только лучше взять трансформированные вершины xyzrhw. Тогда координаты задаются в формате экрана (0, 0) (800, 600).
Но с DirectX при таких размерах картины могут быть проблемы — на видеокартах есть ограничения на размер текстуры.