메뉴 건너뛰기

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

흥크립트의 반전버그의 원인을 알았지만,
그게 간단한 문제가 아니라 거의 시스템을 다 엎어야 할 버그란 걸
깨달았습니다.


일단 흥크립트는 원본 그림은 그대로 둔 채
DuplicateSurface란 명령으로 그림을 복사해서 씁니다.
그런데 사실 복사라고 해서 그림을 하나 더 만들지만
사실상 메모리는 공유하기 때문에 메모리 소비가 거의 없습니다.
이런 효율적인 기능때문에 썼던 것인데...

이 DuplicateSurface로 생성한 그림에는 반전이 잘못 먹힐 때가 있다는 것!
...이 정답이었습니다.
그리고 이 명령이 각 집의 비디오 카드에 따라 되지 않는 곳도 있다는 것.
어쩌면 Vista 환경에서의 에러의 원인일지도 모른다고 생각하지만
확실하진 않고... 결론은 안정성이 떨어진다는 겁니다.

그렇다면 4가지 해결책이 있습니다.

1) 좌우반전을 막아 버린다.
가장 간단한 방법이면서 지금까지의 체계를 유지할 수 있으나
이런 퇴화적인 해결책은 절대 쓰고 싶진 않습니다.

2) 전부 CreateSurface로 생성한다.
이것은 그야 말로 메모리 낭비가 2배가 되는 방법.
이것 역시 쓰면 안 됩니다.

3) 한 장의 그림으로 하나의 Surface만 쓴다.
이것이 가장 기본적인 구조입니다.
지금까지의 게임도 이런 식으로 만들어서 문제가 없었습니다.
하지만 여기서 생기는 문제는 하나의 그림으로 2장의 그림을 나타낼 때입니다.
2장 모두 같은 속성이면 괜찮은데,
하나는 반투명이고, 하나는 불투명으로 출력.
...이게 안 되는 겁니다.

4) 한 장의 그림을 출력 방법을 바꿔가며 출력한다.
내부적으로 코드를 엄청나게 바꿔야 하지만,
가능한 손실없이 처리할 수 있는 방법입니다.
문제는 일단 수정 시간이 꽤 걸릴 듯 하다는 것과,
출력 정보를 가지고 있는 JPictureInfo라는 정보를
그림에 적용시키는 시간이 얼마나 드느냐입니다.
사실상 얼마 안 들겠지만, 출력할 때마다 이것을 적용시키면
그것 역시 속도 낭비라고 할 수 있습니다.
어쨌든 이 부분은 내부 문라이브를 많이 조사해 봐야 될 듯 싶습니다.



개인 적으로 찝찝하던 버그의 원인을 명쾌히 알았고,
오랫동안의 권태를 풀 재밌는 작업이 생겨서 좋습니다.
* 똥똥배님에 의해서 게시물 이동되었습니다 (2008-03-11 14:03)
조회 수 :
1691
등록일 :
2008.01.15
21:40:14 (*.239.)
엮인글 :
게시글 주소 :
https://hondoom.com/zbxe/index.php?mid=study&document_srl=2501

장펭돌

2008.03.17
04:37:04
(*.49.200.231)
호오, 뭔지 잘 모르겠지만 잘 고쳐져서 수정이 되길

보가드

2008.03.17
04:37:04
(*.142.208.241)
으음..꽤 고민하실듯

쿠오오4세

2008.03.17
04:37:04
(*.91.50.55)
열십히하세요(머리터지떼까지)

A.미스릴

2008.03.17
04:37:04
(*.117.5.154)
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
45 Lua 소코반: 상자를 만들고 옮기고 상자와 상자가 겹치거나 상자와 벽이 겹치지 않게 해 보자! 노루발 2013-09-17 677
44 cocos2d-x Clipping Layer 수정 똥똥배 2013-09-10 670
43 cocos2d-x 2.2.2 윈도우 환경 기본 메모리 누수 똥똥배 2014-03-10 640
42 QT 프로젝트 배포에 필요한 거 똥똥배 2013-07-11 602
41 cocos2d-x 2.2.2 문자열 출력 버그 [2] 똥똥배 2014-06-10 601
40 소코반: 맵을 초기화하자. 노루발 2013-09-17 588
39 Love2D를 사용하기 위한 Lua 강좌: 코딩 스타일, 변수 노루발 2013-09-17 585
38 구글 인앱 구매 Soomla로 구현해본 후 팁 똥똥배 2014-09-20 577
37 Love2d 안드로이드 빌드하기 노루발 2014-12-15 572
36 Love2d 안드로이드 게임 패키징하기 [3] 노루발 2014-12-15 546
35 cocos2d-x 게임을 iOS에 이식할 때 생기는 문제들 똥똥배 2013-08-26 543
34 Love2D: 콜백 함수들 노루발 2013-09-17 538
33 cocos2d-x에서 schedule_selector 정의 변화 [1] 똥똥배 2013-08-19 521
32 Love2d 여러 플랫폼으로 빌드 자동화 노루발 2014-11-12 470
31 Love2D? 개요, 설치, 실행. 노루발 2013-09-17 465
30 [Love2D] 일단 뭔가 해보자 노루발 2013-09-17 457
29 PHP로 웹게임 만드는 영상 [1] 노루발 2021-06-25 447
28 Love2D를 사용하기 위한 Lua 강좌: 변수형 노루발 2013-09-17 446
27 cocos2d-x CCMenuItem 자신을 지웠을 때 생기는 에러 똥똥배 2013-09-13 442
26 턴 기반 시스템 구현에 대한 글 [4] 노루발 2020-11-14 440