메뉴 건너뛰기

창작에 관련된 질문이나 간단한 팁, 예제를 올리는 곳

보니까 backbuffer에 그림을 붙이던데
backbuffer가 배경 버퍼니까 바로 화면에 출력되는건가요?
그런데 그걸 직접 쓰면 MFC의 DC처럼 깜박임과 속도저하가 오는건 아니죠?ㅡ,.ㅡ;
추가로 LoadPicture로 불러온 그림을 다시 안불러온것처럼 되돌리는건 없나요?
조회 수 :
4223
등록일 :
2008.06.28
20:19:13 (*.50.69.16)
엮인글 :
게시글 주소 :
https://hondoom.com/zbxe/index.php?mid=study&document_srl=214461

똥똥배

2008.06.28
22:27:47
(*.239.144.2)
문D라이브에서는 더블버퍼링이 아닌 플립 방식을 씁니다.
플립 방식에 대해 혹시 모르실까 설명 드리자면
A와 B의 화면이 있다면
A를 보여주고 있을 때는 B에다 그리고, 다 그렸으면 보여주는 화면을 B로 교체하는 방식입니다.
즉, 2화면을 서로 교대로 보여주면서 안 보여주는 쪽에 그림을 그리는 방식이죠.
대부분 다이렉트X를 쓰면 이런 식으로 그래픽을 출력합니다. 더블버퍼링보다 훨씬 빠르기 때문이죠.
더블 버퍼링에서는 다 그린 후 그것을 화면에 올리기 위해 한 번 더 그려주는 데,
이 한 번 더 그리는 일이 줄어들게 되죠.

그리고 플립이 이루어지는 순간은 jdd-Render()가 실행되는 순간입니다.
Render 전에는 어떤 그리기 명령을 실행해도 Render를 시키기 전까지는 아무것도 표시되지 않습니다.
왜냐면 보이지 않는 다른 면에 그리고 있기 때문이죠.

그리고 LoadPicture로 불러온 그림을 없애는 것은 DeletePicture입니다.
좀 더 훌륭한 프로그램을 하시려면 메모리 관리자를 띄어놓고
메모리 사용량을 확인하는 게 좋을 겁니다.

문D라이브 문제로 CCommand 쪽은 메모리 해체가 약간 문제 있는 듯 한데
그것은 차후 수정할 수준입니다.
(일단 컴퓨터 다운 시킬 수준의 누수도 아니고, 어느 정도 선에 가면 자동으로 릴리즈 되는 듯)

A.미스릴

2008.06.29
05:36:06
(*.50.69.16)
누수라면 new를 쓴 후 delete를 안쓰고 제거되거나 delete를 안쓰고 new를 넣을때 메모리에 남는 데이터인가요?

똥똥배

2008.06.29
07:06:23
(*.193.78.136)
네, 그거죠. 프로그램 규모가 커지면 이것이 문제라서 초기부터 잘 잡아 둬야 합니다.
(솔직히 구문 에러는 문제도 아니죠. 프로그램 수준이 되면 모두 메모리 싸움입니다.)
일단 memory leak이라고 해서 프로그램이 종료된 뒤까지 delete가 안 된 메모리는 컴파일러가 알려줍니다.
이건 특수한 방법으로 찾으면 일단 해결은 가능하죠.
지금 제가 겪고 있는 문제는 그거랑 조금 별개라고 해야할까?
라이브러리 특성인지 메모리를 어느 정도 선을 넘어야 릴리즈 시키는데
제가 프로그램에는 결벽증 수준으로 꼼꼼한 성격이라서 제가 계산하지 않은 메모리를 어디서 쓰는 게 있으면
참지 못하고 다 찾아내서 최적화를 시켜야 됩니다. 지금 그게 문제라는 거지, 사실 memory leak은 없습니다.
(특히 요즘 NDS 프로그램 하다보니 메모리에는 신경질적으로 신경 쓰게 되는군요.)

Warning이 많은 것은 이게 VC++ 2003인가 이전 버전으로 만들어 진 탓도 있고
제작한 것은 문진섭님이라서 제가 손대서 오히려 나빠지는 것 보다 낫다고 생각해서 놔둔겁니다.
사실 워닝도 전부 없애버리고 싶어요. 그래서 저번에 건드렸다가 이상하게 되서 안정성있는 지금 이대로 그냥 놔두고 있습니다.

어쨌든 결론은 문라이브는 제가 몇년간 써서 안정성은 보장되어 있습니다.
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
185 자동화된 Lua 스크립트의 문서화 - LDoc 노루발 2021-01-11 43224
184 VC++ 2008 Express Edition에서 문D라이브 링크 [2] A.미스릴 2008-04-17 13090
183 cocos2d-x 터치와 업데이트 활성화 시키기 똥똥배 2011-10-27 10656
182 문D 질문 #2 [1] A.미스릴 2008-06-01 8797
181 MFC 더블 버퍼링 질문 [2] A.미스릴 2008-06-13 6602
180 문D라이브로 만드는 더블드래곤.. 질문입니다 [4] 하와이안 2009-01-15 5550
179 임의의 점이 다각형 내부에 있는지 검사하는 함수 똥똥배 2008-04-14 5358
178 문D라이브로 더블드래곤을 만들자(11) file 똥똥배 2008-05-17 4647
177 문D라이브로 더블드래곤을 만들자(1) [2] file 똥똥배 2008-04-16 4479
176 씨언어 질문 (내일 시험 ㄷㄷ) [1] 쿠로쇼우 2008-06-17 4331
» 문D라이브도 더블버퍼링이 필요한가요? [3] A.미스릴 2008-06-28 4223
174 문D라이브로 더블드래곤을 만들자(10) file 똥똥배 2008-05-17 4065
173 #define에 대해 [1] A.미스릴 2008-05-19 4061
172 클레스들을 담은 헤더들의 혼란 [4] A.미스릴 2008-06-21 3892
171 srand에 관해서 [4] A.미스릴 2008-07-15 3867
170 문D 질문 [5] A.미스릴 2008-05-26 3847
169 흥크립트에 궁금한점 [4] 상상악수 2008-08-21 3835
168 C++ 질문 [1] A.미스릴 2008-12-21 3818
167 TinyXML의 한계 [2] 똥똥배 2011-12-11 3751
166 문D라이브 2008년 5월 19일 버전 [2] 혼돈 2008-06-02 3747