DirectX SDK Summer 2003 에 있는 예제를 실행 시키면

ID3DXFont 로 생성한 폰트를 쓰는데,

윈도우 사이즈를 변경했어도 그 상태가 유지 되던데,

어떻게 구현한 것인지 궁금합니다..

제가 렌더링시 뿌려주는 폰트는 윈도우 사이즈에 따라서 크기가 변경이 되거든요.

때문에 화면은 크게 했을 때는 글자가 이상하게 보이네요.. ㅠㅠ

윈도우 사이즈를 조절해도 폰트에 영향을 주지 않게 하려면 어떻게 해야하는지 알려주세요.
[조언] ..
답변자 : 비공개 | 작성일 : 2004-11-08 11:02
디바이스 생성할때 백버퍼 크기가 생성 되는데... (예를 들어 백버퍼는 1024*768 )

윈도우 크기가 변경되어서 확대 되거나 축소 되는겁니다. (윈도우 사이즈가 변한다면? D3D 는 백버퍼의 크기비율(?)로 확대되거나 축소 되겠죠 )

백버퍼의 크기를 윈도우 사이즈로 다시 리셋 해주시거나..

D3DPRESENT_PARAMETERS m_d3dpp;

m_d3dpp.BackBufferWidth = rt.Width();
m_d3dpp.BackBufferHeight = rt.Height();
m_pD3DDevice->Reset(&m_d3dpp);

화면 전체를 백버퍼로 하고.. Present 로 적절히.. 플리핑? 해줘도 되겠죠...

리셋 하기전에 .. ID3DXSprite 같은것들은 OnLostDevice 해줘야할겁니다..

[조언] Reset ()을 해주는 위치가...
답변자 : 비공개 | 작성일 : 2004-11-10 06:20
그런데 Reset()을 하면 디바이스 생성이 실패를 하거든요..?

물론 이 문제에 대해서는 메모리 누수라는 것에 있는 것으로 알구요...

헌데, Reset()을 호출할 때 View와 MainFrame에서 같이 해줘야 하나요...?

아니면, View나 MainFrame의 어느쪽이든 상관없이 한 곳만 해주면 되나요..?

실제로 눈에 보이는 부분은 View부분에서 처리를 해주기 때문에

View에서 Reset()을 호출하면 될 것 같은데요...

이 부분에 대해서도 좀 알려주세요...
[조언] ^^
답변자 : 비공개 | 작성일 : 2004-11-11 10:10
컥... devpia 에는 잘안들어오는데.. 답글을 다니깐 메일이 오는군요..^^;

그런데 Reset()을 하면 디바이스 생성이 실패를 하거든요..? -> 리셋을 하기전 디바이스를 사용하는 오브젝트들은 삭제 시켜줘야합니다.

물론 이 문제에 대해서는 메모리 누수라는 것에 있는 것으로 알구요... -> 사실 저도 자세히는 모르지만. 위에 오브젝트들을 삭제하지 않아서 인것

같습니다. 디바이스를 사용하는것들은 리셋하기전에 처리(?)를 해줘야합니다..

말그대로... 디바이스에 의존적인 것들인데.. 디바이스를 리셋 하니.. 다른것들도 리셋 해주는거라고 할까요?

참고로.. 디바이스 오브젝트들중.. D3DPOOL_DEFAULT 인가..? 디폴트로..(그래픽카드 메모리에) 생성한것들은.. 지웠다가 다시생성해야하는걸로

알고있습니다.

D3DPOOL_MANAGED 로 하면.. 복사본이 시스템 메모리에 존재해서 자동으로.. DX 수준에서 관리해주는걸로 알고있습니다.


헌데, Reset()을 호출할 View와 MainFrame에서 같이 해줘야 하나요...? -> Dx 초기화 할때 넘겨준 핸들의 윈도우만.. 하면 됩니다.

즉..

만약 뷰에서..

D3Dapp->Initialize(this->GetSafeHwnd(),해상도...어쩌고..저쩌고..) 이런식으로 DX 를 초기화 해줬다면...

뷰 의.. OnSize 에서.. 리셋 해주시면 되겠죠..

참고로.. 급한일이 아니시라면.. 찬찬히.. DX_SDK 를 먼저 보시는게 좋을것 같습니다.^^; DX 프레임워크를 한번 쭈욱 보면..

왠만한것들은.. 다 처리되어있습니다.^^; DX 도큐먼트 + SDK 샘플 + 개발관련 사이트들 + 구글검색 조합으로 공부하시면.. 막히는것들은 거의 해결

되실거에요..

 

           

 


  기존 C 라이브러리의 strcat 나 lstrcat_s 함수들은 치명적인 오류를 가지고 있다. 이 함수들은 널(\0) 문자가 나올때 까지 스트링을 합쳐주거나 카피를 해주는 함수이다. 만일 어떠한 잘못된 루틴으로 인해 혹은 최종 사용자가 악용의 목적으로 널 문자를 없애 버리게 된다면 이는 버퍼 오버런을 유발 시키고, 프로그램의 치명적인 손상이나 보안의 위협에 노출 될 수 있게 될 있다. MS 에서는 아래의 함수를 사용하도록 권장하고 있다.

StringCchCopy나 StringCchCat 와 같은 StringCch~ 시리즈의 함수이다.


 

HRESULT StringCchCopy(      
    LPTSTR pszDest,     size_t cchDest,     LPCTSTR pszSrc );
  이 함수를 자세히 살펴 보면 가운데에 사이즈를 넣을 수 있도록 했다. 대신 strsafe.h 파일과 strsafe.lib 라이브러리 파일을 추가 해주어야 한다. 자세한 설명은 아래의 웹사이트를 참고하자.

http://msdn.microsoft.com/en-us/library/ms647527(VS.85).aspx

doxygen 주석 넣기

소프트웨어공학 | 2009/08/07 22:09 | Noonipoony

 

           

 


   Doxygen 형식

2.1          소스 파일의 최상단에 파일명, 날짜, 제작자, 설명등을 명기한다.
(
주석의 방식이/**, */인것에 주의한다. h, inl, cpp등 모든 소스파일에 표기한다.)
)
/**    
          @file      RHttp.h
          @date    2004/11/2
          @author
채경석(kyuseo99@chol.com) RapidEngine

          @brief
*/

2.2          클래스 및 구조체 인터페이스 윗부분에 클래스명, 날짜 , 제작자, 설명등을 첨부한다.
(
주석의 방식이/**, */인것에 주의한다.)
)
/**
          @class  CRHttp
          @date    2004/11/2
          @author
채경석
(kyuseo99@chol.com)
          @brief     Http
클라이언트
          @warning
몇몇 서버상의 오류로 가능한 업로드는 소문자로 한다. (특히 하나포스 마이홈)
*/
class CRHttp
{
                      
};

2.3          클래스 / 구조체 멤버 변수 주석은 공백 1 칸을 띄우고 “///<” 를 사용한다.
)
long m_lFrameTic; ///< 1000/fps
로 이시간후 (ms) 프레임을 이동한다
.
long m_lNewTime; ///<
최종 프레임 진행 시간


2.4          클레스 멤버 함수는 헤더에 “///<”을 사용하고 추가 설명 , 리턴값 및 인자에 대한 필요하다면 구현부분에 추가 설명을 입력한다 .
선언부 예)
DWORD* Decode( DWORD* pBuffer, DWORD* pSize ); ///<
암호화 버퍼와 변경된 size리턴 (4바이트 증가
)

구현부 예
)
/**
          @return
찾은 그룹  (없으면
NULL)
          @warning
외부에서 관련된 동기화 객체를 Lock 걸어 사용한다
.
*/
CRGroup* CRServer::FindGroup( RGID gid ///<
그룹 아이디

                                                 )
{
}

2.5          일반 함수는 헤더에 “///” 사용하고 추가 설명, 리턴값 및 인자에 대한 필요하다면 구현부분에 추가 설명을 입력한다.
선언부 예)
/// 하위폴더 포함하여 디렉토리를 생성한다.
extern BOOL CreateXDirectory( LPCTSTR szPath );

구현부
)
/**
          @return
디렉토리 생성 성공유무
          @warning King\kong\file.dat
와 같은
파일명은 포함 안된다.
 */
BOOL CreateXDirectory( LPCTSTR szPath ///< 생성할 디렉토리명 (:C:\\King\\kong, King\\kong\\)
                                    )
{
}

3           일반 형식

3.1          주석은 설명하는 구문의 앞 라인에 작성한다.
올바른 예)
// 파일의 크기가 설정되지 않았다면
if( nSize == 0 )
{
          return  FALSE;
}

잘못된 예
)
if( nSize == 0 ) //
파일의 크기가 설정되지 않았다면

{
          return  FALSE;
}

if( nSize == 0 )
{        //
파일의 크기가 설정되지 않았다면

          return  FALSE;
}

 

           

 



  컴퓨터 하는데 수학이 왜 필요해? 라고 하는 사람이 있다. 하지만 수학 정~말 중요하다.
요즘 엘지 연구소에서 일을 하고 있는데 수학의 중요성을 깨닫고 있다. 그리고 고등학교 때에 수학을 가르쳐 주신 선생님께도 감사하는 마음이다.

  회사의 기밀 유지 서약을 한 관계로 여기에 자세한 설명이나 사진을 첨부 할 수는 없지만 MFC 에서나 아니면 다른 플랫폼에서 그래픽을 처리 하려면 항상 수학이 필요하다. 예를 들어 화면상에서 어떠한 물체를 움직이고자 하려고 해도, 마우스 좌표와 그 물체사이의 거리를 측정해서 사용자가 마우스로 그 물체를 클릭했는지 여부를 알아야 한다. 그리고 그 물체가 단순한 사각형이면 간단히 해결 되는데.. 선이나, 원, 기타 다른 모양일때는 어떻게 해야 할까? 마우스와의 물체의 충돌 영역 계산...

  모튼 하면서는 어려웠는데.. 하고 난 후에 주변사람들에게 칭찬을 들으니 기분 좋~타!

 

           

 





http://support.microsoft.com/kb/947821

사이트에 들어가서 설치하기
이전 1 2 3 4 5 6 7 8 9 ... 33 다음