Compare commits

...

2 Commits

3 changed files with 50 additions and 46 deletions

View File

@ -17,19 +17,19 @@ SamplerState samLinear {
struct VS_INPUT struct VS_INPUT
{ {
float4 Pos : POSITION; float4 Pos : POSITION;
float4 Weight : TEXCOORD0;
float4 Joint : TEXCOORD1;
float3 Normal : NORMAL; float3 Normal : NORMAL;
float2 Tex : TEXCOORD2; float2 Tex : TEXCOORD0;
float4 Weight : BLENDWEIGHT0;
float4 Joint : BLENDINDICES0;
}; };
struct PS_INPUT struct PS_INPUT
{ {
float4 Pos : SV_POSITION; float4 Pos : SV_POSITION;
float4 Weight : TEXCOORD0; float3 Normal : NORMAL;
float4 Joint : TEXCOORD1; float2 Tex : TEXCOORD0;
float3 Normal : TEXCOORD2; float4 Weight : BLENDWEIGHT0;
float2 Tex : TEXCOORD3; float4 Joint : BLENDINDICES0;
}; };
PS_INPUT VS(VS_INPUT input) PS_INPUT VS(VS_INPUT input)

View File

@ -48,12 +48,16 @@ HRESULT InitInput(HINSTANCE hInstance)
void UpdateInput() void UpdateInput()
{ {
XINPUT_STATE state; XINPUT_STATE state;
DWORD ret;
for (DWORD i = 0; i < 4; i++) { for (DWORD i = 0; i < 4; i++) {
DWORD ret = g_XInputGetState(i, &state); ret = g_XInputGetState(i, &state);
if (ret != ERROR_SUCCESS) { if (ret == ERROR_SUCCESS) {
continue; break;
} }
break; }
if (ret != ERROR_SUCCESS) {
g_Joystate = {};
return;
} }
const float trigger = 1.0f / 255.0f; const float trigger = 1.0f / 255.0f;

View File

@ -389,32 +389,6 @@ HRESULT LoadMesh()
return hr; return hr;
} }
// weights
bd.Usage = D3D10_USAGE_IMMUTABLE;
bd.ByteWidth = mesh->weights_0_size;
bd.BindFlags = D3D10_BIND_VERTEX_BUFFER;
bd.CPUAccessFlags = 0;
bd.MiscFlags = 0;
initData.pSysMem = mesh->weights_0;
hr = g_pd3dDevice->CreateBuffer(&bd, &initData, &g_pVertexBuffers[1]);
if (FAILED(hr)) {
print("CreateBuffer\n");
return hr;
}
// joints
bd.Usage = D3D10_USAGE_IMMUTABLE;
bd.ByteWidth = mesh->joints_0_size;
bd.BindFlags = D3D10_BIND_VERTEX_BUFFER;
bd.CPUAccessFlags = 0;
bd.MiscFlags = 0;
initData.pSysMem = mesh->joints_0;
hr = g_pd3dDevice->CreateBuffer(&bd, &initData, &g_pVertexBuffers[2]);
if (FAILED(hr)) {
print("CreateBuffer\n");
return hr;
}
// normals // normals
bd.Usage = D3D10_USAGE_IMMUTABLE; bd.Usage = D3D10_USAGE_IMMUTABLE;
bd.ByteWidth = mesh->normal_size; bd.ByteWidth = mesh->normal_size;
@ -422,7 +396,7 @@ HRESULT LoadMesh()
bd.CPUAccessFlags = 0; bd.CPUAccessFlags = 0;
bd.MiscFlags = 0; bd.MiscFlags = 0;
initData.pSysMem = mesh->normal; initData.pSysMem = mesh->normal;
hr = g_pd3dDevice->CreateBuffer(&bd, &initData, &g_pVertexBuffers[3]); hr = g_pd3dDevice->CreateBuffer(&bd, &initData, &g_pVertexBuffers[1]);
if (FAILED(hr)) { if (FAILED(hr)) {
print("CreateBuffer\n"); print("CreateBuffer\n");
return hr; return hr;
@ -435,6 +409,32 @@ HRESULT LoadMesh()
bd.CPUAccessFlags = 0; bd.CPUAccessFlags = 0;
bd.MiscFlags = 0; bd.MiscFlags = 0;
initData.pSysMem = mesh->texcoord_0; initData.pSysMem = mesh->texcoord_0;
hr = g_pd3dDevice->CreateBuffer(&bd, &initData, &g_pVertexBuffers[2]);
if (FAILED(hr)) {
print("CreateBuffer\n");
return hr;
}
// weights
bd.Usage = D3D10_USAGE_IMMUTABLE;
bd.ByteWidth = mesh->weights_0_size;
bd.BindFlags = D3D10_BIND_VERTEX_BUFFER;
bd.CPUAccessFlags = 0;
bd.MiscFlags = 0;
initData.pSysMem = mesh->weights_0;
hr = g_pd3dDevice->CreateBuffer(&bd, &initData, &g_pVertexBuffers[3]);
if (FAILED(hr)) {
print("CreateBuffer\n");
return hr;
}
// joints
bd.Usage = D3D10_USAGE_IMMUTABLE;
bd.ByteWidth = mesh->joints_0_size;
bd.BindFlags = D3D10_BIND_VERTEX_BUFFER;
bd.CPUAccessFlags = 0;
bd.MiscFlags = 0;
initData.pSysMem = mesh->joints_0;
hr = g_pd3dDevice->CreateBuffer(&bd, &initData, &g_pVertexBuffers[4]); hr = g_pd3dDevice->CreateBuffer(&bd, &initData, &g_pVertexBuffers[4]);
if (FAILED(hr)) { if (FAILED(hr)) {
print("CreateBuffer\n"); print("CreateBuffer\n");
@ -1010,7 +1010,7 @@ HRESULT InitDirect3DDevice()
D3D10_CREATE_DEVICE_DEBUG, D3D10_CREATE_DEVICE_DEBUG,
(D3D10_CREATE_DEVICE_FLAG)0, (D3D10_CREATE_DEVICE_FLAG)0,
}; };
UINT numFlags = (sizeof (flags)) / (sizeof (flags[0])); UINT numFlags = (sizeof (flags)) / (sizeof (flags[0]));
HRESULT hr; HRESULT hr;
D3D10_DRIVER_TYPE driverType = D3D10_DRIVER_TYPE_NULL; D3D10_DRIVER_TYPE driverType = D3D10_DRIVER_TYPE_NULL;
@ -1108,11 +1108,11 @@ HRESULT InitDirect3DDevice()
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
D3D10_INPUT_ELEMENT_DESC layout[] = { D3D10_INPUT_ELEMENT_DESC layout[] = {
{"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0}, {"POSITION" , 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0},
{"TEXCOORD", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 1, 0, D3D10_INPUT_PER_VERTEX_DATA, 0}, {"NORMAL" , 0, DXGI_FORMAT_R32G32B32_FLOAT, 1, 0, D3D10_INPUT_PER_VERTEX_DATA, 0},
{"TEXCOORD", 1, DXGI_FORMAT_R32G32B32A32_FLOAT, 2, 0, D3D10_INPUT_PER_VERTEX_DATA, 0}, {"TEXCOORD" , 0, DXGI_FORMAT_R32G32_FLOAT, 2, 0, D3D10_INPUT_PER_VERTEX_DATA, 0},
{"NORMAL" , 0, DXGI_FORMAT_R32G32B32_FLOAT, 3, 0, D3D10_INPUT_PER_VERTEX_DATA, 0}, {"BLENDWEIGHT" , 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 3, 0, D3D10_INPUT_PER_VERTEX_DATA, 0},
{"TEXCOORD", 2, DXGI_FORMAT_R32G32_FLOAT, 4, 0, D3D10_INPUT_PER_VERTEX_DATA, 0}, {"BLENDINDICES", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 4, 0, D3D10_INPUT_PER_VERTEX_DATA, 0},
}; };
UINT numElements = (sizeof (layout)) / (sizeof (layout[0])); UINT numElements = (sizeof (layout)) / (sizeof (layout[0]));
@ -1388,10 +1388,10 @@ void RenderModel(float t)
UINT stride[] = { UINT stride[] = {
(sizeof (mesh->position[0])), (sizeof (mesh->position[0])),
(sizeof (mesh->weights_0[0])),
(sizeof (mesh->joints_0[0])),
(sizeof (mesh->normal[0])), (sizeof (mesh->normal[0])),
(sizeof (mesh->texcoord_0[0])), (sizeof (mesh->texcoord_0[0])),
(sizeof (mesh->weights_0[0])),
(sizeof (mesh->joints_0[0])),
}; };
UINT offset[] = { 0, 0, 0, 0, 0 }; UINT offset[] = { 0, 0, 0, 0, 0 };
g_pd3dDevice->IASetInputLayout(g_pVertexLayout); g_pd3dDevice->IASetInputLayout(g_pVertexLayout);