음, 형변환이야 그냥 static_cast<>로 뿅 해버리면 되는데 말이죠.
Direct3D Documentation을 읽다가 신기한 것을 발견했습니다. 사실, 이런 방법도 2D 때 모 사이트에서 본 건데 실험결과 이상한 값이 나와버려서 아닌가 보다 하고 있었죠.
일단 Documentation에 나온 것은..

m_pDevice9->SetRenderState(D3DRS_POINTSIZE, *((DWORD*)&pointSize));

요거 입니다(지금 파티클 시스템에 공부중이라서요).
신기한 것은 저 뒤의 *((DWORD*)&pointSize 이거 인데요.

float형의 pointSize의 주소값을 DWORD 주소로 캐스팅해서 집어 넣은 다음 그 안에 있는 값을 읽는다는 의미인데...

.......이게 됩니까?
아 사실 됩니다. 실험결과 static_cast로 한 DWORD는 이상한 그림이 출력되고 저렇게 주소를 캐스팅해서 하면 되더군요-_- 아니 왜!!!!
그래서 또 실험해봤습니다.

DWORD FloatToDworld(float f)
{
        return *((DWORD*)&f);
}

void main()
{
        cout << static_cast<DWORD>(20.0f) << endl;
        cout << FloatToDworld(20.0f);
}

물론 여러분이 예상하셨다시피 다른 값이 출력됩니다.

그래서 질문은,

저 주소캐스팅이 어떻게 돌아가는지에 대해서 자세히 설명해 주시면 감사하겠습니다.
예상하기에는 컴퓨터 내부적인 부분까지 파고 들어가야 할 것 같은데 제가 이부분이 좀 약해서 말이죠-ㅅ-)
그럼 조언 기다리고 있겠습니다.