2017-12-15 15 views
0

좋아, 모델에서로드하는 것이 좋지만 질감이나 조명을 추가하려고하면 스트레치가 생기므로 꼭지점 공유에 문제가 있다고 생각합니다. 나는 sampler_desc 주소를 변경하려고 시도했지만 입력 레이아웃은 있지만 운이 없다.내 모델에 텍스처를 추가 할 때 문제가 발생합니다. directx11

HRESULT Model::CreateTextureSampler(char* filename) { 

    hr = D3DX11CreateShaderResourceViewFromFile(m_pD3DDevice, filename, 
     NULL, NULL, 
     &m_pTexture0, NULL); 
    if (FAILED(hr)) // Dont fail if error is just a warning 
     return hr; 

    D3D11_SAMPLER_DESC sampler_desc; 
    ZeroMemory(&sampler_desc, sizeof(sampler_desc)); 
    sampler_desc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR; 
    sampler_desc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP; 
    sampler_desc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP; 
    sampler_desc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP; 
    sampler_desc.MinLOD = 0; 
    sampler_desc.MaxLOD = D3D11_FLOAT32_MAX; 
    hr = m_pD3DDevice->CreateSamplerState(&sampler_desc, &m_pSampler0); 
    if (FAILED(hr)) // Dont fail if error is just a warning 
     return hr; 
} 

HRESULT Model::CreateInputLayout() 
{ 
    // Create and set the input layout object 
    D3D11_INPUT_ELEMENT_DESC m_iedesc[] = 
    { 
     { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0,0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, 
     { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }, 
     { "TEXCOORD", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }, 
     { "NORMAL", 0,DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 } 
    }; 

    hr = m_pD3DDevice->CreateInputLayout(m_iedesc, 4, M_VS->GetBufferPointer(), 
     M_VS->GetBufferSize(), &m_pInputLayout); 
    if (FAILED(hr)) // Dont fail if error is just a warning 
     return hr; 

    m_pImmediateContext->IASetInputLayout(m_pInputLayout); 

    m_pImmediateContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); 

    return S_OK; 
} 
+0

변경해 주셔서 감사합니다. 새로운 내용, 형식을 지정하는 방법을 알 수 없음 –

+0

형식 수정을 환영합니다. 코드 들여 쓰기 탭의 경우'ctrl + k'를 사용하십시오 –

답변

0

The results 나는 코드의 당신의 라인을보고있을 때 나는 여기이 줄을 참조하십시오

"TEXCOORD", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 }, 

당신은 함께 텍스 COORD의 입력 요소 기술자에게 전달됩니다 세 번째 매개 변수는 DXGI_FORMAT_R32G32B32A32_FLOAT입니다. 이 플래그가 사용자의 문제점을 일으키는 지 점검하기를 원할 수 있습니다.

일반적으로 3D 텍스처를 사용하는 경우가 아니면 간단한 텍스처를 사용할 때는 일반적으로 텍스처 좌표가 vec2 객체입니다.

이 값을 DXGI_FORMAT_R32G32_FLOAT으로 변경하고 텍스처 파일의 적절한 [S, T] 또는 [P, Q] 정점을 제공 할 수 있습니다. 텍스처는 보통 메모리에 선형 적으로 저장되지만 MxN 구조를 나타내는 이미지입니다.

+0

감사합니다. 그러나이 haha를 게시 한 후에 이것을 변경했습니다. 같은 문제가 발생합니다. –