괜히 게임이나 문서작성 유틸 같은 것에 실행 전 로딩이 있는 것이 아니다..Image건 Sound건 모두 미리 Texture() 객체를 디스크로부터 메모리에 올려놓는 과정이 필요하다.물론 절대 메모리 해제 되지 않게 잘 로딩해야될테고...만약 로드해야되는 리소스 양이 너무 방대하면 중간 중간에 다시 로딩과정을 해주고(예를 들면 스테이지 이동 등)근데 이럴 때 기존에 로딩돼있던 리소스풀을 해제해주는 것도 매우 힘든 과정!!따라서 여러가지 리소스 풀을 이용할 땐 로드와 언로드가 정말 완벽하게 잘 이루어 졌는지 컨트롤알트델리트 눌러서 잘 확인하자..ㅜㅜ 사용할 때 마다 리소스를 디스크에서 읽어서 출력하는 방법은.. 매우 매우 위험하다...으헝헝..괜히 로딩과정이 있는게 아니여~~~~ 컴퓨터야 디스크 읽는 속도..
초급과정을 뗀 프로그래머, 초보티를 벗어나면서.. C++ 초급 책으로 공부를 다 하면, 보통 포인터까지 배운다. 그러면 포인터를 배운 이후에는 뭘 해야하는가? 도대체 뭘 해야하는지 알 수가 없었다. 왜 '중급' 프로그래머 책은 없는게야!(지금은 있는지도 모르겠다. 여튼 나 공부할 시절에는 없었다. 있긴 있었나? 여튼..) 이제 중급으로 가려면 무엇을 해야하나 싶어서 무작정 시작한 것이 Windows API였다. 이제 이것도 다 뗐는데.. 그럼 난 중급자라고 불러도 되는 것인가? 그럼 난 실무에 바로 투입되도 되는것인가? 이렇게 프로그래밍 새내기가 무작정 실무에 투입되면.. 엄청나다.. 그들에게는 프로그램이 돌아가는 것이 중요하지 가독성이지 유지보수 따위니 하는 것은 당연히 신경쓰지 않는다. 심지어 변수명..
우와.. 이번에 멀티바이트랑 유니코드랑 수 없이 교환시키는 작업을 하면서 인코딩에 대한 이해가 많이 는 것 같다.. 유니코드는 2바이트로 이 세상의 모든 언어를 표시 할 수 있는 그런 놈이다. 이건 알고 아래 글을 읽도록 하자 후후. 일단 UTF-8이 널리 쓰이는 이유에 대해 설명을 간략이 들여보자. UTF-8은 멀티바이트이다. 65536개의 문자를 사용하는 캐릭터셋은 유니코드의 캐릭터셋을 사용하지만 유니코드는 무조건 1글자에 2byte씩이다. 그걸 1~4byte의 가변길이로 인코딩하는 방식이 UTF-8이다.(그래서 CP_UTF8을 멀티바이트 변환 상수에서 찾을 수 있음.) (캐릭터셋이라 하면 유니코드가 나타낼 수 있는 모든 문자를 말함) UTF-16이랑 32같은 놈들도 있지만 자주 쓰이는건 UTF-8이..
우선.. C++에서 CTest라는 클래스가 있을 경우 해당 객체에 대한 선언은 다음과 같이 할 수 있다. CTest test1, test2; 이 경우에 const를 붙여 쓰는 사람은 아마 거의 없을 것이다 -.-;; 그럴거면 왜 만들었어.. 만약 저 앞에 const CTest test1, test2; 이런식으로 const를 붙였다면 더이상 해당 객체는 변경을 할 수 없게 된다. 자 그럼 const가 사용되는 다양한 예를 쭉 적어보자 const CTest* pTest = new CTest; //이건 CTest const *pTest = new CTest; 와 같다 CTest* const pTest = new CTest; const CTest* const pTest = new CTest; int CTest:..
View&Doc 구조에서 MDI 형식의 프로젝트를 만지면서 수 없이 많은 삽질 과정을 거쳤지만, 그 중에 가장 뼈저리게 기억에 남는 교훈은 같은 정보를 담는 인스턴스를 여러개 만들지 말자 라는 것이다. 즉, 하나만 생성해서 나머지는 포인터로 참조하도록 하자.(그렇다면 어디서 인스턴스를 생성하느냐도 존나 갈등때리고 고민때리는 문제가 된다.) 일단.. 현재 맡고 있는 프로젝트의 프로그램을 보면 Doc에서 관리하는 변수와 View에서 관리하는 변수가 있으며, 특이하게도 실제 화면이 그려지는 영역은 Actuator라는 녀석이다. 즉 View와 Actuator사이에서 옵져버 패턴으로 관리되고 있는 모양새다. 이제 Doc과 View사이의 변수가 커뮤니케이션 함에 있어, 허접 프로그래머인 나는 계속해서 같은 인스턴스..
특정 컨트롤이나 변수에 의존적으로 값을 갖는 변수가 있을 수 있다. 예를 들어 MFC의 slider 컨트롤에서 물체의 투명도를 제어 한다고 해보자. 그럼 투명도를 관리하는 컨트롤러 이름은 m_nSliderOpacity; 그리고 실제로 Object의 투명도가 제어 되는 부분은 pObject->SetOpacity(fValue); 라고 하면 m_nSliderOpacity의 POSITION과 pObject->setOpacity의 fValue는 매우 디펜던트하게 움직인다. 즉 하나만 바뀔 수는 없다는 것이다. 슬라이더는 내가 움직여 주는거잖아? 라고 생각 할 수도 있겠지만. 예를 들어 '탭 구성'으로 화면을 적용 하였을 때 다른 탭으로 갔다가 돌아오는 경우, 슬라이더를 기존에 사용한 값으로 변경해 주어야 하는 경..
파라미터 없는 void function의 경우 그냥 소스가 길어지는게 싫어서 다른 곳으로 구분해 놓을려고 쓰게 된다. 뭐 그런 경우는 괜찮다 쳐도, 어느 기능을 담당하고 있는 녀석이 그런 식으로 분류 돼있다면 참으로 슬프다. 지금 딱 그것을 느끼게 되는 상황과 맞닿게 되었는데 그 내용은 다음과 같다. 로딩한 트랙킹 데이터(시간 순서로 순차적으로 놓여져 있음)를 재생함에 있어 타임라인이 필요하여 타임라인을 구현 하였다. 그리고 타임라인의 특정 영역을 찍으면 해당 지점으로 재생 장소가 이동되게 하였다. 근데 후에 다른 조건이 들어 왔는데 '트랙킹 데이터를 맨처음 open할 때, 재생할 구간을 선택 할 수 있게 해주세요' 였다. 현재 makeTimeline() {} 으로 해놓고 타임라인의 첫 부분은 0으로, ..
vector의 iterator를 사용 중 for(std::vector::iterator it = vecData.begin() ; it != vecData.end(); it++) (*it)->GetName(); 이런게 있었다. 아무 생각 없이 쓰고보니.. it는 우선은.. 내가 선언한 std::vector::iterator 클래스의 인스턴스인데.. 여기에 왜 역참조인 *가 붙었지? == *it인데.. 아하 그럼 it는 의 포인터겠구나~ 하고 생각했지만.. 포인터가 아니였다..(kering 왈) 마치 포인터 처럼 오버로딩 돼 있었다. 우선 *가 오버로딩 돼있다. const_reference operator*() const 그외에 _Vb_const_iterator& operator++() 등등 vector 헤..
- Total
- Today
- Yesterday
- 리눅스
- Quiz
- jni
- AWS
- C
- Cloud
- gcc
- db
- 안드로이드
- API
- driver
- it
- 드라이버
- 프로그래밍
- C++
- Python
- Visual C++
- java
- NDK
- MFC
- kering
- database
- Troubleshooting
- algorithm
- source
- 음악
- linux
- winapi
- android
- jni강좌
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 |