티스토리 뷰
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 |
string s;
s+=
"셰이더코드";
LPD3DXBUFFER shader = NULL;
LPD3DXBUFFER errorBuffer = NULL;
HRESULT hr = D3DXCompileShader( s, s.size(), 0, 0,
"vsBuild", "vs_2_0", D3DXSHADER_DEBUG|D3DXSHADER_SKIPOTIMIZATION, &shader, &errorBuffer, NULL );
if( errorBuffer )
{
MessageBox( 0, static_cast<char*>(errorBuffer->GetBufferPointer(), 0, 0 );
SAFE_RELEASE( errorBuffer );
}
=======================================
string s;
s+=
"셰이더코드";
HRESULT hr = D3DXCreateEffectCompiler( s.c_str(), s.size(), NULL, NULL, D3DXFX_NOT_CLONEABLE | D3DXSHADER_SKIPOTIMIZATION |
D3DXSHADER_DEBUG, &pEffectCompier, &errorBuffer );
if( FAILED(hr) )
MessageBox(...
LPD3DXEFFECT pEffect = NULL;
LPD3DXBUFFER pComfileEffect = NULL;
if( pEffectCompier )
{
pEffectCompier->CompileShader( 0, &pComfileEffect, NULL );
D3DXCreateEffect( m_pDev, static_cast<char*>(pComfileEffect->GetBufferPointer() ), pComfileEffect->GetBufferSize(), NULL, NULL, NULL,
NULL, pEffect, NULL );
}
|
첫 번째의 경우에는 테크닉설정안하고 그냥 버텍스, 픽셀 셰이더 적용하면서 하는 거고 아래는 테크닉 사용하는 그런건데 내가 잘못해서 그런지는 모르겠지만 1번째 방식에선 픽셀셰이더에서 COLOR0이외에 렌더타겟에 0~3까지 담으려고 하는데 계속 에러가 나는데..
원래 그런건가...
아 그리고 D3DXCreateEffectCompiler 예를 쓸경우 당연한 말이지만 테크닉도 정의 해줘야 한다.
D3DXCreateEffectCompiler에선 에러가 나지 않는데 그걸 다시 버퍼에 옮길때 실패를 한다..
'DirectX' 카테고리의 다른 글
디바이스 로스트 (0) | 2014.11.27 |
---|---|
렌더타겟텍스쳐에 Lock을 걸때 (0) | 2014.11.13 |
D3DPOOL (0) | 2014.07.22 |
D3DXVec3CatmullRom (0) | 2014.07.15 |