네이버 카페 CEGUI 과 함께올린 글
링크 : http://cafe.naver.com/cegui/139 
--------------------------------------------------------------------------------------------
http://cafe.naver.com/cegui/2 에서 혜윰님이 말씀하신 System::Destroy 라는 함수가 없더라구요...
그대신 CEGUI::System::GetInstance().detstroysingleton인가하는 메소드가 있긴한데
보호영역이라서 사용이않되고 영역을 변경해서 컴파일해봤지만 무수한 메모리릭은 그대로 나더라구요
그래서 cegui포럼을 검색해서 답을 찾았습니당...
 delete CEGUI::System::getSingletonPtr();
로  System의 싱글톤 클래스를 받아와서 해야되는거엿더구요 -ㅇ-;;;;킁
이걸해도 나는 메모리릭!!!!!!!!!!!!!!!!!!!!!!!!!!
누수추적해봣더니 Renderer에서 나오는 릭이엇습니다
고로  delete m_myRenderer; 를 해줬습니다    
m_myRenderer는 CEGUI::DirectX9Renderer* 이고요 ㅎ
이랫더니 메모리 누수 빠이 빠이 ><
순서를 바꿔서 렌더러 부터 해제를 시켜봤더니 메모리 오류가 뜨더라구요.
System를 먼져 해제하면서 렌더러속에있는 텍스쳐를 먼져 삭제해주고 렌더링 객체를 삭제해야하는데
렌더링 객체부터 삭제하면 System이 렌더링객체속 텍스쳐를 삭제 못해줘서 뜨는듯 하더라구요
그러므로 System을 먼져 릴리즈후 렌더러를 릴리즈시켜주면 될꺼같네요

고로 정리하자면

 delete CEGUI::System::getSingletonPtr();      //System싱글톤 포인터를 받아와서 해제시킨다
 delete m_myRenderer;                                //DirectX9Renderer를 해제시킨다.
                                                                 // delete는 System-> Renderer순으로


[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

[출처] Doxygen 을 써보자.|작성자 오바쟁이


[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

사용자 삽입 이미지
Direct객체를 잘 생성하다가 풀스크린모드로 한번 켜보고 싶어서 풀스크린 모드로 켜보니 바로 밑에와 같은결과가 발생하며 프로그램이 종료되었다.
사용자 삽입 이미지
그리고 알아보니 D3DPRESENT_PARAMETERS 의 멤버변수중 BackBufferFormat 이라는분이
D3DFMT_UNKNOWN으로 설정되있으면 풀스크린시에 에러가 발생할수있다는 것이다.
사용자 삽입 이미지
이렇게 수정해주면 풀스크린으로 아주 잘뜬다.....쿄쿄
[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

스프라이트툴을 제작하고 저만의 스프라이트 커스텀 포맷형식을 만들었었습니다.
그런고로 스프라이트를 사용할 프로그램에서 이 형식을 불러오는게 중요한데
API상에선 불러오는것에 대해서 성공하였습니다만 Direct상에선 조금 난관을 겪었었는데요.
정보 빈약국 한국의 멋진 모습입니다. -ㅇ-;;;;; 네이버검색 구글검색 않뜹니다 떠도 이상하게 떠요
잘않된다는거죠

함수원형
HRESULT WINAPI
    D3DXCreateTextureFromFileInMemory(
        LPDIRECT3DDEVICE9             pDevice,
        LPCVOID                              pSrcData,
        UINT                                    SrcDataSize,
        LPDIRECT3DTEXTURE9 *       ppTexture);

이것이 이 함수의 원형입니다.

pDevice : DIRECT3DDEVICE9의 포인터를 넘기면 됩니다.
pSrcData : 읽기를 할 버퍼의 포인터형을 넘기면 됩니다.
ScrDataSize : 읽어올 데이터의 크기를 넘기면됩니다.
ppTexture : 텍스쳐를 불러와 저장할 텍스쳐의 포인터를 넘기면됩니다.


사용예

이렇게 사용하는것이이렇게 사용하는것과 같은효과를 나타냅니다.

고로 스프라이트 파일제작한후 불러와서 잘 실행됩니다!!!
[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/9
  2. 숭악 2009/11/01 23:33  Modify/Delete  Reply  Address

    잘보고 갑니다. 수정할 부분이 한군데 있어서 적고갈게요..
    D3DXCreateTextureFromFileInMemory를 쓰기 전에
    fseek( fp, 0, SEEK_SET );
    을 사용하여 파일포인터의 위치를 초기위치로 돌려놔야 되더군요..

사용자 삽입 이미지
저번에 API를 이용하여 만든 스프라이트툴이 정확도가 떨어지는 면이있어서 -ㅇㅠ; 다시제작했습니다.
물론 임시방편으로 쓸꺼구요;; MFC로 제작했답니다.
MFC가 역시 편하긴 편하더라구요 -ㅠ-; 제작하는데 단지1시간 반 ; 그것도 파서 만들다가 보낸시간이 90%랍니다.ㄷ_ㄷ;; 뭐 심플하니깐 만들께없긴햇지만 말입니다....
하여튼 이걸로 실행하니깐 잘되자나!!!
[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

사용자 삽입 이미지

볼사람은 클릭해서 보세요 ㅋㅋ

[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/7
  2. 호수 2009/03/06 00:49  Modify/Delete  Reply  Address

    API 이용해서 만드신거죠? 근데 제가 정말 경험이 없어서 그런데 .Net에서 프로젝트 생성 후 이 툴을 만들려면 저 칸이나 그림 넣고, 이름, 열기, 수정 이런거 버튼도 모두 소스로 쳐야 되는건가요? 기초적인 부분이 없어서 궁금합니다. ㅠㅠ

    • 랜스 2009/03/06 03:55  Modify/Delete  Address

      네.. 저같은경우 자체GUI라고하기도 뭐하게 만들어서

      m_pGuiSystem->AddButton("열기",위치x,위치y,사각형의위치등...)

      이런식으로 일일이 다쳐줬네요 ...ㅠ 기본 윈도우 버튼을 이용해도 아마 마찬가지일꺼예요~ 툴이 있지않는이상 gui엔진들도 저런식으로 처주어야하니..

  3. 호수 2009/03/06 22:34  Modify/Delete  Reply  Address

    네~ 감사합니다. 저도 한번 따라해봐야 겠어요;ㅎㅎ

  4. 호수 2009/03/06 22:35  Modify/Delete  Reply  Address

    아...그런데 가능하시면 만든 소스 좀 부탁드려도 될까요? 어디서 부터 시작해야할지 감을 못 잡겠어서...

    • 랜스 2009/03/07 08:54  Modify/Delete  Address

      소스 전체공개는 좀그렇구요 ㅠ_ㅠ 메신져등록하시던가 방명록에 메신져 주소 남겨주시면 그쪽으로 제가 연락드릴께요~~

사용자 삽입 이미지
이번엔 만들어준 윈도우들의 기능을 하나하나 만들어 주려합니다.
일단 젤 왼쪽에 붙어있는 전체적으로 관리의 기능을 하는 관리자윈도우에 필요한기능은
파일을 불러왔을때 파일의 정보를 알려주거나 애니메이션추가,이름변경,프레임추가,컬러키설정
과 같은일을 담당하면될것같습니다.
그러면 한번 이제 윈도우에 컨트롤들을 만들어 배치해보겠습니다.
[##_kaAmo_##]

Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/6
  2. Kell 2009/02/03 14:10  Modify/Delete  Reply  Address

    아참, 그리고 스프라이트툴을 만드신다니 생각나는게 있는데요.

    각 프레임 별로 애니메이션 갱신속도를 따로 설정할 수 있는 인터페이스를 마련하시는게 좋습니다.

    그래야 스프라이트를 효율적으로 아끼면서 리얼한 스프라이트를 만드는데 조금은 더 도움이 됩니다. 부드럽게 움직이다가 살짝 끊긴 느낌의 스프라이트도 출력을 해주고 ( 격투 게임의 경우 Hit 했을 때의 경직 느낌 정도.. )

자 저번에 파일의 구조를 모델링해봤습니다...(누구랑말하니....)
이번엔 기본적인 윈도우의 화면을 구성해보려합니다.
그렇다면 다시 다른분의 스프라이트툴을 분석해봅시다...

사용자 삽입 이미지
1번윈도우는 마우스의 현재위치와 파일의 정보 그리고 스프라이트 애니메이션의 생성과 삭제
그리고 이름변경 또 컬러키적용과 애니메이션의 속도에 관한 설정을 할수있도록 만들어진창이네요
2번윈도우는 그림파일을 불러와서 화면에 띄어주는 윈도우네요. 가로 세로로 스크롤바가 있네요.
3번윈도우는 프레임들에대한 위치수정을 할수있는 윈도우로 보여지고 2번처럼 가로세로로 스크롤바가 있습니다.
4번 윈도우는 애니메이션을 보여주는 윈도우같구요
5번 윈도우는 중점좌표를 설정해주는 윈도우 같습니다.

자 그러면 이제 대충 우리가 만들어줘야하는 윈도우의 모습이 보이는데요
이젠 어떤식으로 코드를 작성할지 고민해봐야겠는데요
하나의 윈도우클래스를 제작하고 그것으로 여러개의 윈도우를 다른속성으로 만들지
아니면 윈도우마다 제각기 다른윈도우를 만들어 줄지말이죠.

나중에 만약 추가윈도우를 구성할때를 생각해보면 위의 두방법 말고
한개의 컴포넌트윈도우를 만들고 윈도우마다 그것을 상속받아 각자의 특성에 맞게
작동하게 구성하면 될것같다.

사용자 삽입 이미지
이제 추상윈도우 클래스를 구성했다.
그럼 이제 5~6가지 이 클래스를 상속받는 클래스들을 만든후 화면에 배치해보겠다.

사용자 삽입 이미지
대충 5개의 윈도우들을 구성하고 화면에 배치해보았다. 크기조절에 관한문제도 해결하였다
지금은 그냥 각각의 윈도우에서 각자의 역활을 텍스트로 띄어주었다.
킁 다음번엔 저 5개의 빈윈도우들을 하나하나 내용을 채워보도록하겠다

[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

스프라이트툴이라 함은 곧 게임툴!! 게임에서 쓰이게 될 리소스들을 수정하고 편집하는데 쓰이게될껍니다.!!
리소스들을 수정하고 저장하게 되면 무엇이 생성되죠? 예 그렇습니다. 파일이죠~_~ (혼자묻고 혼자답하기)
예전에 스프라이트툴을 만들기전에 2D그래픽 기초를 하고있었을때는 그림파일따로 프레임값을 저장해둔 텍
스트파일 따로 따로 저장하거나 아예 프로그램상에 넣어놨었는데 이게 게임개발하다보면 귀찮은일이란걸
깨닫게 되어서 이젠 우리가 만들 파일의 구조를 모델링 해보도록해요.~_~

사용자 삽입 이미지
 일단 스프라이트 파일을 전체적으로 생각해봅시다~_~
스프라이트 파일은 크게 애니메이션의 정보와 그외것들(컬러키,그림파일)을 담는것 두가지로 나눌수있
겠구요.
사용자 삽입 이미지
애니메이션객체속에는 애니메이션이 담고있는 프레임의 리스트가있어야겠죠?
프레임은 스프라이트의 아주 기본이되는 데이터객체입니다.
영역정보와 중점정보를 데이터로 저장하고있어야합니다. 에휴 말이랑 그림으로 떼울려니 좀 어렵네요.

그럼 방금까지 생각했던것을 정리해서 모델링해봅시다 ~_~
사용자 삽입 이미지

자 이번에는 제가 만들게될 스프라이트툴의 파일구조를 모델링해보았습니다... 다음시간엔 이것을 그대로 코드에 옮기고 파서를 만들어 볼까 합니다~_~ 잘했어 랜스군!
[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/4
  2. Kell 2009/02/03 14:03  Modify/Delete  Reply  Address

    예전에 이와 비슷한 방식으로 스프라이트 데이타를 구성한적이 있었는데요. 뭐 나쁘진 않았으나 비트맵을 사용하다보니 아무래도 리소스 크기가 커지고,

    비트맵 데이타가 직접 데이타 포맷에 포함되다 보니 리소스 변경만으로 노려볼 수 있는 효과(같은 크기의 비트맵의 다른 캐릭터), 리소스는 냅두고 여러가지 프레임을 생성하는 효과 등등을 효율적으로 관리하지 못했던게 생각이 납니다..;

    또 중간에 데이타를 교체해야 하는 경우도 관리하기가 힘들었던 생각이 나네요. (툴에 그 기능을 추가하긴 했지만..;)

Kell's SpriteTool

Kell's SpriteTool

 위쪽의 사진을 보며 스프라이트 툴에서 필요한 기능들을 생각해보자.

첫째로 기본적인 파일을 불러오고 기능이있어야할것이다.
또 불러온 파일을 수정후 저장하는 기능도 있어야겠지?
불러온 파일의 정보를 읽어서 보려주는 기능도 있으면 괜찮겠다.

자 그럼 둘째로 기능적인 면을 생각해보면 스프라이트 그림을 클릭한후 드래그 하면 그 영역(RECT)를
저장하는 리스트가 필요할껏같다. 그러면 그 리스트의 갯수와 한도를 정하는 부분도 필요할꺼고
그 영역을 통채로 관리하려면 하나의 개념체로 관리를 해야할것이다. 그리고 그 개념체를 생성시키고
이름을 정하게할수있는 기능도 필요할것이다.

그리고 이제 마지막으로 이미지의 컬러키정보를 담는 기능과 다 만들어진 스프라이트 애니메이션을
보여주는 윈도우를 남겨두는것도 괜찮을것이다.
[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

: 1 : ... 14 : 15 : 16 : 17 : 18 : 19 :