Перейти к содержанию

Получение ViewProjMatrix internal DirectX [C++]


Рекомендуемые сообщения

Всем привет. Игра CSS. Несколько дней уже ищу как получить эти матрицы через девайс. Перехватил EndScene. Пробовал следующее..

device->GetTransform(D3DTS_VIEW, ......);

device->GetTransform(D3DTS_PROJECTION, .......);

 

В этом случае я просто получал 2 единичные матрицы, и они не обновлялись.

 

device->GetVertexShaderConstantF - Через этот метод получал отдельно View, Projection ,World. Перемножал и вроде бы уже похожа на настоящую, но она не обновляется и остаётся статичной. Так же получал сразу перемноженную, результат тот же.

Может я что-то не так делаю, или как можно по другому, помимо поиска самостоятельно матрицы. Спасибо!

Ссылка на комментарий
Поделиться на другие сайты

22 часа назад, Wanderer сказал:

Через этот метод получал отдельно View, Projection

А что тебе собственно еще то нужно? О_о

Скрытый текст

bool WorldToScreen( D3DXVECTOR3* origin, D3DXVECTOR2* out )
{
	D3DXMATRIX pProjection;
	D3DXMATRIX pView;

	DirectX->pDevice->GetVertexShaderConstantF( PROJ_CONST, pProjection, 4 );
	DirectX->pDevice->GetVertexShaderConstantF( VIEW_CONST, pView, 4 );

	D3DVIEWPORT9 pViewport;
	DirectX->pDevice->GetViewport( &pViewport );

	D3DXMATRIX pWorld;
	D3DXMatrixIdentity( &pWorld );

	D3DXVECTOR3 screen;

	D3DXVec3Project( &screen, origin, &pViewport, &pProjection, &pView, &pWorld );

	if( screen.z < 1.0f )
	{
		out->x = screen.x;
		out->y = screen.y;

		return true;
	}
 
	return false;
}

 

 

Изменено пользователем Xipho
Большие куски кода нужно прятать под спойлер.
Ссылка на комментарий
Поделиться на другие сайты

19 часов назад, uhx сказал:

А что тебе собственно еще то нужно? О_о

Я понял что брал неверный индекс регистра для метода GetVertexShaderConstantF, как узнать какой именно нужен?

Изменено пользователем Xipho
Не нужно цитировать все сообщение целиком, достаточно части, чтобы было понятно, на что отвечаешь.
Ссылка на комментарий
Поделиться на другие сайты

11 час назад, Wanderer сказал:

как узнать какой именно нужен

Перебором)) А лучше просто найди ручками видовую матрицу и сделай классический W2S, без D3DXVec3Project, а то я думал что ты через константы нашел их, поэтому такой код предложил. Сам как-то так делал.

Ссылка на комментарий
Поделиться на другие сайты

6 часов назад, uhx сказал:

Перебором)) А лучше просто найди ручками видовую матрицу и сделай классический W2S, без D3DXVec3Project, а то я думал что ты через константы нашел их, поэтому такой код предложил. Сам как-то так делал.

Ну хорошо.  Спасибо:) 

Изменено пользователем Wanderer
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.