리듬 액션 게임 자동 노트를 생성하면서.. bass24 라이브러리를 사용하였고, 그 중에서도 특히 bass_fx를 사용하였다. bass_fx는 bpm이나 beat등을 얻어오는데 사용하기 좋다. BASS_FX_BPM_BeatDecodeGet를 주력으로 사용했으며, http://www.bass.radio42.com/help/html/7799e7ea-d193-3521-02af-6a3f9a3d3833.htm 페이지에 자세히 나와있다. wav파일의 파형을 그리는 부분은 bass라이브러리의 custloop 샘플을 참조하면 좋고 곡의 길이를 얻어오는 부분은 plugins를 참조하면 좋다. 공부한 부분을 상세히 적고 싶은데 너무 졸리다.. 언젠가 쓰겠지 -_-aa
여기 참조.. http://openxb.com/28 으어어.. 약 3~400개 이상의 자료를 관리해야되는데, 아무 생각 없이 평소에 자주쓰는 List로 그냥 자료구조를 짰다. 근데 특정 이벤트를 실행 시킬 때 마다 해당 자료가 정렬이 되어 있어야 한다는 조건이 나중에 붙어서.. List로 짠 지금은 이벤트 실행때마다 소트를 다시 해준다 -_- 그리고 삽입, 삭제가 빈번하게 일어나는데 List로 짠 덕분에 미치고 팔짝 뛰겠다. 차라리 처음부터 우선순위 큐(Priority_Queue)를 이용해서 짤걸... 다 경험이다~~~ 나중엔 잘 하자!!
몇일째 고민했던가... 더블 버퍼링으로 화면 출력을 시켰는데도 계속 깜빡이는 것이었다. 나는 이것의 문제를 내부에 사용한 MoveWindow나 BitBlt로 옮기는 대상과 타겟의 가로 영역 너비가 너무 길어서 라고 생각했다. 문제는 그것이 아니였다.. '음악 재생'시 사용하는 '바'가 움직일 때 화면을 계속 리프레쉬하면서 보여주기 위해 타이머를 사용하였는데, 이때 타이머에서 Invalidate(FALSE); 를 해주는 것이 문제였다. 어짜피 계속해서 Invalidate가 들어오고 있기 때문에 다른 곳에서는 이걸 해줄 필요가 없는데, 나는 MouseMove등에서도 계속해서 Invalidate를 호출해 주고 있었다. 그러니 마우스를 움직일때마다 엄청나게 호출되는 Invalidate덕분에 깜빡거렸던 것이다....
MFC에서 더블버퍼링 사용하기. 이걸 왜 지금까지 안올려놨었지 -.-?;; 일단 제일 중요한건 헤더 파일에 CBitmap m_Bitmap; 를 선언 하는 것. 이 비트맵에 객체를 생성하고 이것저것 해줄 것임. 우선 아래와 같이 Bitmap에 그림을 그려줌. void CDlgXXX::MakeMemBitmap(void) { CClientDC dc(this); //실제 dc CBitmap* pOldBmp; //oldbmp CDC MemDC; //메모리DC m_Bitmap.DeleteObject(); //기존꺼 지워줌 m_Bitmap.CreateCompatibleBitmap(&dc, 500, 200); //새로 만들어줌 MemDC.CreateCompatibleDC(&dc); //memDC도 새로 만들어줌 pOl..
오오 멋지당
- Total
- Today
- Yesterday
- 음악
- C
- db
- 드라이버
- Quiz
- android
- driver
- jni
- Visual C++
- source
- Cloud
- winapi
- MFC
- 프로그래밍
- jni강좌
- java
- 안드로이드
- kering
- Python
- algorithm
- AWS
- it
- 리눅스
- C++
- gcc
- Troubleshooting
- database
- NDK
- linux
- API
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 |