커플 티셔츠 사서 혼자 다~ 입을려 그랬는데 여성용은 너무 작아서 안맞는다-_-a;

나중에나중에나~중에 하려고 했던 SkyBox를 어쩌다가 하게되서
Cubemap을 이용해서 찍어보게 되었는데
일단 SetTexture한방에 렌더링 한방.. 이라는 매력적인 내용외에도 또 다른 숨겨진 내용이 있는걸 알게 되었다.

굳이 6면을 월드시점으로 구성해서 그릴 필요가 없다..라는 것인데.
스카이박스는 어차피 화면에 보이는 부분만이 전부이고 6면이라지만 어차피 텍스쳐는 한장인 관계로 화면 좌표를 가지고 슥슥슥 해서 3D텍스쳐 좌표를 구해버리면 화면을 가득 채우는 플랜 한장으로 렌더링이 가능하다! 라는 내용이다.

오호..이런게 가능할줄은..
dx예제의 스카이박스들이 다 이렇게 그리고 있었는데 왜 모르고 있었을까나.. ( 스카이박스를 고민해 본 적이 없었으니 모르지-_-; )
어쨋건 스카이박스가 속도를 많이 잡아먹는 부분은 아니었지만
그래도 퍼포먼스 향상이 기대됨. 잇힝-

'게임개발 > ' 카테고리의 다른 글

VS에서 lua의 syntax coloring을 해보쟈  (0) 2005.10.14
파일포맷 png  (0) 2005.09.07
Increase, Decrease Macro  (0) 2005.07.08
Two-Sided Polygons  (0) 2005.05.20
nVidia 2005년 4월 뉴스레터 팁  (0) 2005.05.19


2005.06.06 : 생성
2005.06.07 : lib에서 사용할 때의 버그 수정
2005.07.07 : 직접 스트링을 지정할 수 있도록 추가
2005.07.08 : type명 제외하고 사용하도록 수정
2005.07.08 : 버그 수정및 검증 루틴 추가

enum을 스트링으로 바꾸거나 스트링을 enum으로 바꾸는 문제에 대해서 계속 고민해왔는데.
결론은 내부에 map이 필요하다..였다.

map에 enum과 스트링을 연결시켜주는건 직접 해주는 방식으로 사용했었는데..
흐음..어쨋건 정리된 소스를 받아보시라

사용방법은 두가지 인데.

1번째 방법은 매크로 함수의 특성상 127개의 인자밖에 못받는다.
100개까지 받도록 정의해 놓았다.
2번째 방법의 개수의 제한이 없지만 1번째 방법이 기존의 enum에서 약간만 바꾸면 되는 반면
2번째 방법은 좀 더-_- 바꿔야 한다.

아래와 같이 사용할 수 있다.

// solution 1 limit size 100
SENUM_3( MODE, 1, 2, 3 );
// solution 2 no limit
#define ENUM_BODY_MODE( value ) ENUM_BODY( MODE, value )
#define SENUM_ADD_MODE( value ) SENUM_ADD( MODE, value )

#define MODE_ENUM_LIST( _ ) \
_( 1 )  \
_( 2 )  \
_( 3 )
DEFINE_ENUM( MODE, MODE_ENUM_LIST );

// use
auto define MODE_MAX : 3 not match string
const tstring& str1 = MODE_CONVERTER( MODE_1 );  // return "1"
MODE m = MODE_CONVERTER( _T( "1" ) );   // return MODE_1 : 0

// solition 3 is same soulution 2 but can use special string

#define ENUM_BODY_MODE( value, str ) ENUM_BODY_PAIR( MODE, value, str )
#define SENUM_ADD_MODE( value, str ) SENUM_ADD_PAIR( MODE, value, str )

#define MODE_ENUM_LIST( _ ) \
_( A, a )  \
_( B, b )  \
_( C, c )
DEFINE_ENUM( MODE, MODE_ENUM_LIST );

// use
auto define MODE_MAX : 3 not match string
const tstring& str1 = MODE_CONVERTER( MODE_A );  // return "a"
MODE m = MODE_CONVERTER( _T( "a" ) );   // return MODE_A : 0

ps. 자료를 함께 찾아주신 박대중 과장님께 감사의 말씀을 :)

'자료 > 내자료' 카테고리의 다른 글

is_template  (0) 2006.05.10
분절 모델의 접합부위 Normal값 수정  (0) 2006.02.23
텍스쳐 포맷 변경해서 저장하기  (0) 2005.05.16
Alkanoid프로젝트 완료  (0) 2004.12.23
DX에서 쓰는 텍스쳐 썸네일 만들기  (0) 2004.10.02

   Sub IncreaseNumber()
       Dim objTextSelection As TextSelection
       objTextSelection = CType(DTE.ActiveDocument.Selection(), EnvDTE.TextSelection)
       objTextSelection.Text = objTextSelection.Text + 1
   End Sub

   Sub DecreaseNumber()
       Dim objTextSelection As TextSelection
       objTextSelection = CType(DTE.ActiveDocument.Selection(), EnvDTE.TextSelection)
       objTextSelection.Text = objTextSelection.Text - 1
   End Sub


의외로 종종 필요한 경우가 있다

Control +, - 에 세팅해 놓고 쓰면 좋다


'게임개발 > ' 카테고리의 다른 글

파일포맷 png  (0) 2005.09.07
Cubemap을 이용한 SkyBox  (4) 2005.07.11
Two-Sided Polygons  (0) 2005.05.20
nVidia 2005년 4월 뉴스레터 팁  (0) 2005.05.19
루프내에서 여러번 호출되는 함수의 First Time구분하기.  (0) 2005.04.11

근 1년간을 기다린 제품이다

펀샵에서 계속 판매 예정만 있고 들어오지를 않길래 일본쪽 구매대행 사이트를 알아보고 있는중이었는데

펀샵에서 드디어 발매~


잇힝~

_M#]

'지르기 > 게임' 카테고리의 다른 글

데굴데굴~ 쫀득쫀득~ 괴혼  (0) 2005.08.19
God of War  (0) 2005.08.19
토니 호크 언더그라운드 2 리믹스  (0) 2005.05.19
모두의 골프 포터블  (0) 2005.05.19
시작의 일보 ALL★STARS + 세파콘 패키지  (0) 2005.05.19

performer는 히승군에게 배운건데

클래스내의 컨테이너에 먼가를 조작하기 위해서 사용한다.
컨테이너 자체를 노출하는건 보통 stl컨테이너를 사용하기 때문에 dll프로젝트인 경우는 stl컨테이너의 익스포트가 지랄맞기-_-때문에 낭피

그래서
struct ISEE_SkillInfoPerformer
{
virtual void operator() ( IN const tstring& rName, IN const SEE_ActionInfoBasePtr pActionInfo ) = 0;
};

이런식의 인터페이스 클래스를 만들고

void
SEE_SkillInfo::Perform( IN ISEE_SkillInfoPerformer& rPerform )
{
ACTIONINFO_CONTAINER::iterator itr = m_ActionInfos.begin();
ACTIONINFO_CONTAINER::iterator endItr = m_ActionInfos.end();

for( ; itr != endItr; itr++ )        // 사실 이부분도 boost와 foreach의 조합으로 어케 사부닥-_-될것 같은데
  rPerform( itr->first, itr->second );
}

이런식의 호출을 해준다.
그래서 실제 사용할 때는 인터페이스를 상속받아서 객체를 넘겨준다 라는건데

문득 함수 템플릿을 사용하면 어떨까...라는 생각이 들었는데
그럼 컨테이너를 결국 dll외부로 노출해야 하므로 어차피 낭피-_-

흐으음-_-;

'게임개발 > 생각' 카테고리의 다른 글

나쁜 아이디어를 위한 좋은 방법  (0) 2005.12.08
툴과 매뉴얼  (0) 2005.11.22
내가 컨텐츠를 만들기를 좋아하는 이유...  (0) 2005.11.22
카툰렌더링을 하다보니...  (0) 2005.11.14
기술과 컨텐츠  (0) 2005.04.07

원본글 : http://www.gosu.net/GosuWeb/Article-detail.aspx?ArticleCode=345

int main(int argc, char* argv[])

{

 std::locale::global( std::locale( "kor" ) );

 std::wstring wideString=L"테스트 문자열 - 유니코드";

 std::wcout<<wideString<<std::endl;

 return 0;

}

위와 같이 처리하면 화면에 "테스트 문자열 - 유니코드" 라고 찍히는 것을 볼 수 있습니다.핵심은 볼드체 처리한 부분의 코드입니다.

std::wcin.imbue( std::locale( "korean" ) );

std::wcout.imbue( std::locale( "korean" ) );

다음과 같이 지정하면 현재 쓰고 있는 wcin과 wcout 에만 영향을 미치게 됩니다. 따라서 위와 같이 골치 아픈 문제는 일단 피할 수 있겠죠?

그리고 이에 대한 자료가 더 필요하시면 http://www.cantrip.org/locale.html 여기 가서 더 읽어보시거나 Standard C++ IOStreams and Locales: Advanced Programmer's Guide and Reference 또는 C++ Standard Library 라는 책을 참고하시길 바랍니다.

--------------------------------------------

오늘의 교훈

책을 사면 좀 읽쟈

꺄악~ 류광씨 멋져~

+ Recent posts