Hi
Ich wollte mal meine objekte ein wenig schattieren und hab dazu versucht mich mal mit shadern auseinanderzusetzen:
VertexShader.h
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#pragma once
#include "Framework.h"
class CVertexShader
{
public:
CVertexShader();
virtual ~CVertexShader();
HRESULT Create(LPDIRECT3DDEVICE9 d3ddevice);
HRESULT Destroy();
LPDIRECT3DVERTEXSHADER9 Get();
protected:
LPDIRECT3DVERTEXSHADER9 m_lpShader;
TCHAR Filepath[200];
bool UsingHLSL;
};
|
VertexShader.cpp
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#include "Framework.h"
CVertexShader::CVertexShader()
{
m_lpShader = NULL;
UsingHLSL = false;
}
HRESULT CVertexShader::Create(LPDIRECT3DDEVICE9 d3ddevice)
{
ID3DXBuffer* pShaderBuffer;
ID3DXBuffer* pShaderErrors;
if(FAILED(D3DXAssembleShaderFromFile("Shader.vsh",NULL,NULL,D3DXSHADER_DEBUG,&pShaderBuffer,&pShaderErrors)))
{
MessageBox(NULL,"Fehler beim erstellen des Assembler shaders","Fehler",MB_OK);
}
if(FAILED(d3ddevice->CreateVertexShader((DWORD*)pShaderBuffer->GetBufferPointer(),&m_lpShader)))
{
MessageBox(NULL,"Fehler beim erstellen des VertexShaders","Fehler",MB_OK);
}
if(pShaderBuffer != NULL)
pShaderBuffer->Release();
if(pShaderErrors != NULL)
pShaderErrors->Release();
return 0;
}
LPDIRECT3DVERTEXSHADER9 CVertexShader::Get()
{
return m_lpShader;
}
HRESULT CVertexShader::Destroy()
{
if(m_lpShader != NULL)
{
m_lpShader->Release();
m_lpShader = NULL;
}
return 0;
}
CVertexShader::~CVertexShader()
{
Destroy();
}
|
und hier der aufruf in der Game.cpp:
|
C-/C++-Quelltext
|
1
2
3
4
5
|
CVertexShader vshader;
...
vshader.Create(cd3d.GetDevice());
Gehöft->DrawSubset(0);
|
Aber statt das er das macht was er soll wirft er die Fehlermeldung:
"Fehler beim erstellen des Assembler shaders" aus. Ich dachte zuerst die Datei liegt nicht im richtigen verzeichnis aber des liegt bei der solution -.-
Gruß
Fabian
EDIT:
hab den Shadercode vergessen. Ist Assembler Shader:
Shader.vsh
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
vs_1_1
dcl_position v0
dcl_normal v3
dcl_color v5
m4x4 oPos, v0, c0
dp3 r1.x, v3, c4
dp3 r1.y, v3, c5
dp3 r1.z, v3, c6
dp3r1.w, r1, r1
rsq r1.w, r1.w
mul r1, r1, r1.w
mul oD0, v5, -r1.z
|