티스토리 뷰

DirectX

셰이더 컴파일

따분한놈 2014. 7. 31. 19:19
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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함