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

[C++] Chams проблема со сплошной заливкой


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

Пытаюсь сделать сплошную заливку без ТЕНЕЙ. Если объект находится в тени, то толку от чамсов очень мало, приходится постоянно напрягатся и выискивать "затемненные" объекты, что конечно же никуда не годится. Я в общем уже пол гугла перерыл, чес слово, но так и не смог решить проблему.

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

DrawIndexedPrimitive( IDirect3DDevice9* pDevice, D3DPRIMITIVETYPE Type,
			INT BaseVertexIndex, UINT MinIndex, UINT NumVertices, UINT StartIndex, UINT PrimitiveCount )
...
			LPDIRECT3DBASETEXTURE9 oldTexture;
			DWORD dwOldZEnable;
			pDevice->GetTexture( 0, &oldTexture );
			pDevice->GetRenderState( D3DRS_ZENABLE, &dwOldZEnable ); // Запомнили старые параметры
			
			for( int i = 0; i < 203; i++ )
			{
				pDevice->GetRenderState( (D3DRENDERSTATETYPE)( i + 7 ), &renderStates[i] ); // О да, это я так дебажил RenderState и пытался восстановить такую картину: при наведении на объект вблизи он у меня подсвечивается и заливка ложится без теней... не вышло почему то
			}

			//pDevice->SetRenderState( D3DRS_ZENABLE, false ); Просто закомментил этот момент, дабы не мешал на момент правок
			//pDevice->SetTexture( 0, textureChamsColor ); 
			//CDirectX::oDrawIndexedPrimitive( pDevice, Type, BaseVertexIndex, MinIndex, NumVertices, StartIndex, PrimitiveCount );

			pDevice->SetRenderState( D3DRS_ZENABLE, true );
			pDevice->SetTexture( 0, textureChamsVisibleColor ); // Моя сплошная текстура желтого цвета.
			/*pDevice->SetRenderState( D3DRS_ALPHAREF, 0 );
			pDevice->SetRenderState( D3DRS_ALPHAFUNC, 5 );
			pDevice->SetRenderState( D3DRS_SRCBLEND, 5 );
			pDevice->SetRenderState( D3DRS_DESTBLEND, 6 );*/ // Не особо полезный код
			pDevice->SetRenderState( D3DRS_SRGBWRITEENABLE, false ); // Тоже понятия не имею что это, но в дебаге так было
			CDirectX::oDrawIndexedPrimitive( pDevice, Type, BaseVertexIndex, MinIndex, NumVertices, StartIndex, PrimitiveCount ); // Отрисовываю 

			pDevice->SetTexture( 0, oldTexture ); // Возвращаю старую текстуру, ибо из за этого последующий рендер немного ломается ( стандартная подсветка союзников и тд )
			pDevice->SetRenderState( D3DRS_ZENABLE, dwOldZEnable );

			return D3D_OK; // Ну и соответственно выходим из функции, так как мы все уже отрисовали что нужно.

 

Вот текущий код, всю функцию копировать не стал: помимо чамсов еще куча мусора, который к ним самим не относится. Если надо будет - скину все

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

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

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

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