색상값적용

 

색상값의 표현은 0xAARRGGBB의 형태로 한다. 아래 소스를 보자

 HRESULT InitGeometry()

{
     /// 삼각형을 렌더링하기위해 세개의 정점을 선언
   CUSTOMVERTEX g_Vertices[] =
    {
        { -1.0f,-1.0f, 0.0f, 0xffff0000, },      // 0xAARRGGBB (좌)
        {  1.0f,-1.0f, 0.0f, 0xff0000ff, },       // 0xAA = 알파값(투명:0x00, 불투명:0xff) (우)
        {  0.0f, 1.0f, 0.0f, 0xffece527, },     // RRGGBB = 색상값(포토샵으로 확인가능) (상)
    };
    //순서대로 맨위가 좌, 우, 상의 순서이다.

    /// 정점버퍼 생성
    if( FAILED( g_pd3dDevice->CreateVertexBuffer( 3*sizeof(CUSTOMVERTEX),
                                                  0, D3DFVF_CUSTOMVERTEX,
                                                  D3DPOOL_DEFAULT, &g_pVB, NULL ) ) )
    {
        return E_FAIL;
    }
 

    /// 정점버퍼를 값으로 채운다. 
    VOID* pVertices;
    if( FAILED( g_pVB->Lock( 0, sizeof(g_Vertices), (void**)&pVertices, 0 ) ) )
        return E_FAIL;
    memcpy( pVertices, g_Vertices, sizeof(g_Vertices) );
    g_pVB->Unlock();

    return S_OK;
}

 

 여기서 컬러에 대해서 알아보자!!!!!


 

비디오 컬러 소스

비디오 컬러 소스는, 단색의 연속적인 비디오 이미지를 생성 한다.
 

클래스 ID (CLSID) : {0CFDD070-581A-11D2-9EE6-006008039E37}

CLSID 변수명 : CLSID_ColorSource

프로퍼티

 

프로퍼티 디폴트 설명
Color DWORD 0 생성하는 색을 지정한다. 「주의」를 참조할것.

주의

비디오 컬러 소스는, 소스 개체와 함께 사용된다. 최초로, 새로운 소스 개체를 생성 한다.
다음에,IAMTimelineObj::SetSubObjectGUID 메서드를 호출해, 소스 개체의 서브 개체 GUID 에 CLSID_ColorSource 를 설정한다.

색을 설정하려면 ,프로파티셋타 개체 를 생성 해,Color 프로퍼티를 시간 제로에 적용한다.
이 프로퍼티의 값은 0xAARRGGBB 포맷의 16 진수값이며,AA 는 알파값,RR 는 빨강의 값,GG 는 초록의 값,BB는 파랑의 값을 나타낸다. 알파값은 0x00 (투명) ~ 0xFF (불투명)의 범위이다. 이 프로퍼티는 정적이고, 시간 제로로 적용되지 않으면 안 된다.

알파값을 지정하지 않는 경우는, 디폴트값의 제로 (투명)가 사용된다. 32 비트 컬러 비디오 프로젝트에서는, 이 알파를 사용해 비디오 컬러 소스를 렌더링 하는 트랜지션 또는 이펙트를 완전하게 투명하게 한다. 안전이기 때문에, 항상 알파를 지정하는 것. 예를 들어, 불투명한 흑은 0xFF000000 가 된다.

다음 샘플 코드는, 이 개체의 사용법을 나타내고 있다.

 

DWORD           dwYellow = 0xFFFF00;
IAMTimelineObj  *pSource = NULL;
IPropertySetter *pProp = NULL;


// 간단하게 하기 위해서 에러 체크는 생략.

hr = pTimeline->CreateEmptyNode(&pSourceObj, TIMELINE_MAJOR_TYPE_SOURCE);
pSource->SetStartStop(0, 50000000);
pSource->SetSubObjectGUID(CLSID_ColorSource);


// 프로파티셋타를 생성 한다.
CoCreateInstance(CLSID_PropertySetter, NULL, CLSCTX_INPROC_SERVER, 
    IID_IPropertySetter, (void**) &pProp);


// 색을 설정한다.
DEXTER_PARAM param;
DEXTER_VALUE val;

param.Name = SysAllocString(OLESTR("Color"));
param.dispID = 0;
param.nValues = 1;

val.v.vt = VT_I4;
val.v.lVal = dwYellow;
val.rt = 0; 
 // 시간은 제로가 아니면 안된다.
val.dwInterp = DEXTERF_JUMP;

pProp->AddProp(param, &val);
pSource->SetPropertySetter(pProp);


// 클린 업 한다.
SysFreeString(param.Name);
VariantClear(&val.v);
pProp->Release();

다음 샘플 코드는, 전의 예로 생성 한 개체의 XML 표현을 나타내고 있다. 이 경우, 개체가 동적인 프로퍼티를 지원 하고 있지 않기 때문에,param 엘리먼트는 at 및 linear 엘리먼트를 지원 하지 않는다.

이 글을 공유하기

댓글

Designed by JB FACTORY