none
shader 생성중 예외발생 에러 RRS feed

  • 질문

  • #include <windows.h>
    #include <windowsx.h>
    #include "stdafx.h"
    #include <d3d11.h>
    #include <d3dx11.h>
    #include <d3dx10.h>

    // include the Direct3D Library file
    #pragma comment (lib, "d3d11.lib")
    #pragma comment (lib, "d3dx11.lib")
    #pragma comment (lib, "d3dx10.lib")

    // 화면 해상도를 정의합니다.
    #define SCREEN_WIDTH 800
    #define SCREEN_HEIGHT 600

    // global declarations
    IDXGISwapChain *swapchain;             // the pointer to the swap chain interface
    ID3D11Device *dev;                     // the pointer to our Direct3D device interface
    ID3D11DeviceContext *devcon;           // the pointer to our Direct3D device context
    ID3D11RenderTargetView *backbuffer;    // the pointer to our back buffer
    ID3D11InputLayout *pLayout;            // the pointer to the input layout
    ID3D11VertexShader *pVS;               // the pointer to the vertex shader
    ID3D11PixelShader *pPS;                // the pointer to the pixel shader
    ID3D11Buffer *pVBuffer;                // the pointer to the vertex buffer

     // load and compile the two shaders
     ID3D10Blob *VS;
     ID3D10Blob *PS;
     D3DX11CompileFromFile(L"Shaders.shader", 0, 0, "VShader", "vs_4_0", 0, 0, 0, &VS, 0, 0);
     D3DX11CompileFromFile(L"Shaders.shader", 0, 0, "PShader", "ps_4_0", 0, 0, 0, &PS, 0, 0);

     // encapsulate both shaders into shader objects
     dev->CreateVertexShader(VS-> GetBufferPointer(), VS->GetBufferSize(), NULL, &pVS);
     dev->CreatePixelShader(PS->GetBufferPointer(), PS->GetBufferSize(), NULL, &pPS);

     // set the shader objects
     devcon->VSSetShader(pVS, 0, 0);
     devcon->PSSetShader(pPS, 0, 0);

     // create the input layout object
     D3D11_INPUT_ELEMENT_DESC ied[] =
     {
      {"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0},
      {"COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0},
     };

     dev->CreateInputLayout(ied, 2, VS->GetBufferPointer(), VS->GetBufferSize(), &pLayout);
     devcon->IASetInputLayout(pLayout);
    }

    예외가 throw됨: 읽기 액세스 위반입니다.

    **VS**이(가) nullptr였습니다. 발생

    에러내용입니다.

    뭐가 문제져?

    2019년 1월 11일 금요일 오전 2:51

모든 응답

  • 글자수 제한으로 상당한 양의 코드를 잘라냈습니다.

    이코드 자체는 디버그가 안될겁니다;

    • 편집됨 배낭이 2019년 1월 11일 금요일 오전 2:52
    2019년 1월 11일 금요일 오전 2:52
  • 메시지대로라면 VS 변수가 nullptr이므로, D3DX11CompileFromFile이 정상적으로 컴파일하지 못한 것으로 보입니다. 그 함수의 호출 결과값 HRESULT가 S_OK인지 확인해 보세요.
    2019년 1월 11일 금요일 오전 7:03