Esempio n. 1
0
    void Effect::SetParam(const string& name, const Vector4f& data) {
        auto it = vectorVars.find(name);
        _ASSERT(it != vectorVars.end());

        ID3DX11EffectVectorVariable* vectorVar = it->second;
        DXCall(vectorVar->SetFloatVector((const F32*) &data));
    }
Esempio n. 2
0
    void Effect::SetParam(const string& name, const Vector3f& data) {
        auto it = vectorVars.find(name);
        _ASSERT(it != vectorVars.end());

        ID3DX11EffectVectorVariable* vectorVar = it->second;
        Vector4f vec4(data.x, data.y, data.z, 0.0f);
        DXCall(vectorVar->SetFloatVector((F32*) &vec4));
    }
Esempio n. 3
0
void DX11Shader::setVector(const char* strName, float* pFloat)
{
    ID3DX11EffectVectorVariable*		   pVector;

    pVector = m_pEffect->pEffect->GetVariableByName(strName)->AsVector();
    if (pVector->IsValid())
        pVector->SetFloatVector(pFloat);
    else
        EventManager::Instance().postMessage("Unknown variable: %s in shader: %s", strName, m_pEffect->strName);
}
void App::OnSizeTerrain()
{
	if (!device) return;
	if (!g_pTerrainEffect) return;

	HRESULT hr;
	ID3D11Texture2D* pBackBuffer;
	hr = swapChain->GetBuffer( 0, __uuidof( *pBackBuffer ), ( LPVOID* )&pBackBuffer );
	DXGI_SURFACE_DESC pBBufferSurfaceDesc;
	ZeroMemory( &pBBufferSurfaceDesc, sizeof( DXGI_SURFACE_DESC ) );
	if( SUCCEEDED( hr ) )
	{
		D3D11_TEXTURE2D_DESC TexDesc;
		pBackBuffer->GetDesc( &TexDesc );
		pBBufferSurfaceDesc.Width = ( UINT )TexDesc.Width;
		pBBufferSurfaceDesc.Height = ( UINT )TexDesc.Height;
		pBBufferSurfaceDesc.Format = TexDesc.Format;
		pBBufferSurfaceDesc.SampleDesc = TexDesc.SampleDesc;
		SAFE_RELEASE( pBackBuffer );
	}

	ID3DX11EffectVectorVariable* pScreenSize = g_pTerrainEffect->GetVariableByName("g_screenSize")->AsVector();
	if (pScreenSize)
	{
		D3DXVECTOR2 v((float) pBBufferSurfaceDesc.Width, (float) pBBufferSurfaceDesc.Height);		
		pScreenSize->SetFloatVector(v);
	}

	g_Skybox.OnD3D11ResizedSwapChain(&pBBufferSurfaceDesc);

	unsigned int n = 1;
	context->RSGetViewports(&n, &g_BackBufferVP);

	g_ScreenSize = D3DXVECTOR2((float) pBBufferSurfaceDesc.Width, (float) pBBufferSurfaceDesc.Height);
	float aspectRatio = g_ScreenSize.x / g_ScreenSize.y;

	ActiveCam_->setFOV(RAD2DEG(noMath::PI / 3));
	ActiveCam_->setNear(CLIP_NEAR);
	ActiveCam_->setFar(CLIP_FAR);
	ActiveCam_->SetAspect(aspectRatio);
	ActiveCam_->ComputeProjection();
	
}