Всем привет!
Проблема в том, что я столкнулся с проблемой в матричных преобразованиях и просто запутался, не могу понять как сделать лучше.
Программирую на C++, использую DirectX 11 (Direct3D) API. Есть некоторое видео, которое должно отображаться на весь экран, видео накладывается на текстуру меша.
У меня есть только лишь одна модель (меш/сетка), которая создается процедурным путем, состоит из четырех точек, можно сказать, прямоугольник. Разрешение экрана - 1920x1080, но иногда может быть и 1920x1200. В идеале мне нужно рассчитать значения так, чтобы при любых разрешениях меш растягивался на весь экран. То есть первая точка в левом верхнем углу, вторая точка справа вверху и так далее. Я в DirectX'е не новичок, но все равно не хватает математической базы, путаюсь в таких понятиях как "перспектива", "проекция" и все такое в этом духе.
Сейчас я сделал криво - вручную в режиме отладки подогнал при нужном разрешении координаты камеры и ее параметры, но это очень грязное решение.
Подскажите, как можно рассчитать координаты камеры, ее угол обзора, высоту и прочие значения, чтобы меш пиксель-в-пиксель перекрывал весь экран.
Вот вертексы меша:
pVertices[0].Pos = XMFLOAT3(0.0f, 0.0f, 0.0f); pVertices[0].Tex = XMFLOAT2(0.0f, 0.0f);
pVertices[1].Pos = XMFLOAT3(meshMaxX, 0.0f, 0.0f); pVertices[1].Tex = XMFLOAT2(0.0f, 0.0f);
pVertices[2].Pos = XMFLOAT3(meshMaxX, 0.0f, meshMaxY); pVertices[2].Tex = XMFLOAT2(0.0f, 1.0f);
pVertices[3].Pos = XMFLOAT3(0.0f, 0.0f, meshMaxY); pVertices[3].Tex = XMFLOAT2(0.0f, 1.0f);
А вот как настраивается камера:
X = 19.215715f;
Y = 14.345325f;
Z = 4.789997f;
viewAngleX = -(XM_PIDIV2 + XM_PI);
viewAngleY = XM_PIDIV2;
__width = 1920;
__height = 1200;
ConstantBuffer cb;
const float ratio = static_cast<float>(__width) / static_cast<float>(__height);
CB->p = XMMatrixPerspectiveFovLH(XM_PIDIV4, ratio, 0.01f, 100.0f);
XMVECTOR eye = XMVectorSet(X, Y, Z, 0.0f);
XMVECTOR at = XMVectorSet(X + 1.0f * cos(viewAngleX), Y + 1.0f * sin(viewAngleY) / cos(viewAngleY), Z + 1.0f * sin(viewAngleX), 0.0f);
XMVECTOR up = XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f);
CB->v = XMMatrixLookAtLH(eye, at, up);
Заранее большое спасибо!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Ребят подскажите существуют ли стандартные методы для работы с WMI из под QtВ доках нашёл какой-то QAxObject а примеров нет
Допустим, у меня есть таблица news с колонками id(PK), title, descriptionТакже есть некоторый поисковый запрос, например, 'самолет'
Делаю тестовое задание там есть следующие пункты:
Как выбрать в массиве и опубликовать данные за месяц из базы с разбивкой данных за каждый день? Есть таблицы из которых нужно вытянуть запрс...