블로그는 나의 힘!
[ Programing ]/C++2009. 12. 24. 00:05
[전 처리기 활용] 프로젝트 - 속성 - 전처리기 - 전처리기 정의      
 ====================================================================================전처리기 정의에 정의 한다. _TEMP;
또는 #define _TEMP
 
코더 :
#ifdef _TEMP    // _TEMP 정의가 되어 있으면 동작 != #ifndef
 
#else
 
#end if
 
------------------------------------------------------------------------------------------------
#pragma once 와 비슷한 기능 (고정 방식)
 
#ifndef _H_NAME_         // _H_NAME 정의가 없다면 동작
#define _H_NAME_        // _H_NAME 정의. 다음 #ifndef는 동작 하지 않는다.
 
#else
 
#end if
 

 - 간단한 #ifdef와 #ifndef를 설명하였다.
 - #ifdef 는 주로 코딩때 활용 하며, #ifndef 는 #pragma once 같이 헤더 정의 부분에서 주로 사용한다.
 - #ifndef 와 같은 것이 #pragma once 이다. 하지만 window 전용이니 참고하시길.
Posted by Mister_Q
[ Programing ]/C++2009. 12. 23. 23:59
[ 매크로 설정 ]  #define DEL(x)  { if( NULL != x ) { delete( x ); x = NULL; } }  
=================================================================================== 
// delete 해제 설정 같이 긴 경우 이 같이 설정 하여 DEL( cName ); 만 하면 동적 객체가 제거 되는 설정을 할 수 있다.




 - 간단히 function을 설정하기 위해 매크로를 설정이 필요할때 유용. 뭐... 다들 아시겠지~
 - 하나 더 추가하자면, define을 전역이 아닌 해당 header나 cpp 한곳에만 쓸 경우 const를 활용하시길 바랍니다. define과 const의 결정적인 차이는 define은 매크로로 잘못된 code라도 컴파일에서 오류를 잡아 내질 못합니다.
Posted by Mister_Q
[ Programing ]/OpenGL2009. 12. 23. 23:55
[OpenGL Move]
 
#include <math.h>
 // open GL VECTOR Normalize
 VECTOR* Normalize( VECTOR *pOut, const VECTOR *pV )
 {
     //REAL32 len = pV->x * pV->x + pV->y * pV->y + pV->z * pV->z;
     float len = pV->x * pV->x + pV->y * pV->y + pV->z * pV->z;

     if( len > 0.000001f )
     {
         len = Math::Sqrt( len );
         pOut->x = pV->x / len;
         pOut->y = pV->y / len;
         pOut->z = pV->z / len;
     }
     else
     {
         pOut->x = 0.f;
         pOut->y = 0.f;
         pOut->z = 0.f;
     }

     return ( VEC3D* )pOut;
}
 

// open GL VECTOR 길이 구하기
float Lenght( const VEC3D *pV )
{
     return Math::Sqrt( ( pV->x * pV->x ) + ( pV->y * pV->y ) + ( pV->z * pV->z ) );
}



 - openGL 이동. DirectX랑 차이점이라면, Callback으로 환경을 설정하고, Push()로 값을 넣고 Pop()으로 닫아 
   종료하는 형태가 인상적이다.
- DirectX와 달리 VECTOR 가 바뀐 값은 보관하고 있지 않는다. 직접 데이터 담을 구조체를 만들어 데이터를 보관하고
  있어야 한다. 다시 돌아오면 openGL의 값은 0으로 초기화.
- openGL은 말 그대로 3D를 지원하는 util 일뿐. DirectX 처럼 vertex 지원은 아주 미미.
- 하지만 DirectX보다 Render 쪽은 더 깔끔한 편.
Posted by Mister_Q