위 모습은 마을씬(던전이나 상점 퀘스트 받을 곳) 만들려고, 하나씩 오브젝트 렌더링한게 아니라 그냥 툴로 한 번에 png로 만들어서 띄운건데
FPS 보면 이동만 해도 거슬릴 정도의 수준이더라구요
WIN32 api 자체가 저열한건지 아니면 제가 무언가를 잘못한건지 모르겠네요
win32 api를 쓴 이유는 그냥 인강듣고 추가하다 보니 그렇게 되었습니다
창 크기는 1366 x 768 이고, 제 컴퓨터 사양은 1050ti, 8gb 메모리 사용 중입니다
[🐣질문] Win32 api 고수분들 도움!
익명(online8224)
2025-05-15 13:33:00
추천 1
댓글 16
다른 게시글
-
유료강의 홍보가 아니라 질문도 안되는거 맞나요?
[5][🐣질문] Indie(118.235) | 25.05.15추천 0 -
2D 파티클시스템 적용시 소팅 문제
[💬] 익명(skirt0396) | 25.05.15추천 0 -
해결))) 유니티 파티클 2D z축으로 이상하게 보여짐
[8][🐣질문] Indie(121.170) | 25.05.15추천 0 -
스팀 리뷰랑 실구매 비율이 어떻게 되지
[10][💬] DoDoSae(dodo1598) | 25.05.15추천 0 -
모딩지원 Lua vs dll
[5][💬] 익명(58.141) | 25.05.15추천 0 -
탐색 하위 행동의 행동 가능 타일 표시 기능 넣었음
[3][💬] Ray.(choxu0826) | 25.05.15추천 1 -
일정표 짜니까 무서워지는데 정상인가요
[12][💬] 익명(da1mek9kygs1) | 25.05.15추천 1 -
33원정대 개발 1년차 모습
[7][💬] dryrain(dryrain1025) | 25.05.15추천 3 -
작업한 코드 몇줄이나 되나 궁금했는데
[5][💬] Indie(211.44) | 25.05.15추천 1 -
오브젝트 풀링
[3][💬] Indie(210.178) | 25.05.15추천 2
툴로 png 만들었다는게 무슨소리임? 설마 winapi로 이미지 띄우는거 하나 만든담에 1프레임에 1번씩 png를 만들어서 그 png를 띄우도록 했다는거임?
https://www.spritefusion.com/editor
<--- 이 사이트에서 적절하게 오브젝트를 배치해서 하나의 png로 만들어 결과물을 만들고, 그 결과물만 띄우게 했습니다
그냥 그림한장이면 이동같은걸 어케만든건데..?
그 부분은 타일이라는 정보로 분리했죠
아 그러니까 배경이 통짜그림 하나고 캐릭터가 또 그림 한장이고 이동은 캐릭터 그림 이동했다는 말?
네 맞습니다
winapi로 했다는건 그냥 GDI로 이미지 그렸다는 뜻이겠지? 그게 d2d같은거에 비하면 매우 비효율적이긴 하지만 달랑 그림 두장 그리는데 눈에띄게 느리진 않을텐데 뭔가 불필요한 비효율적인 뭔가를 했을듯
winapi 썼다고 스프라이트 두장에 프레임 30언더 꼬라박을거면 그걸로 프로그램 만드는 사람 아무도 없음... 사진한장이랑 그런 빈약한 설명가지고 해줄 답변도 마땅찮음... 최소한의 트러블슈팅 시도라도 하고 디버깅 돌려서 뭐 어느 부분이 튀는거같다 알려줘야지 케이스 설명이라도 하지 이걸로 오버헤드 추측하는건 빌게이츠도 불가능함
그나마 윗댓글가지고 추측가능한건 타일을 만들었다고 하는데 이걸 설마 업데이트 틱마다 매번 새로 만들고있는지 한번 캐싱하고 그대로 쓰는지 이정도? 근데 저 해상도에 꽉차게 노드분할했다고 와이어 프레임을 그리지도 않는데 그렇게 프레임이 낮아지는것도 뭔가 이상하고 그냥 정보가 부족함...
솔직히 저도 자세히 말씀드리고 싶은데 도저히 감이 안잡히네요
이런짓을 한다는거 자체가 님이 고수가 되기 위한짓이라서 좀 더 각오를 해야할듯 ㅋㅋ
더블버퍼링 한번 찾아보고
“프로파일링” 하는법 잘 찾아보고 어디가 병목인지 파악해보셈...
GDI로 했어도 프레임 안나오고 그럴일은 없을텐데..
흠 절대 툴문제때문에 생긴 성능이슈는 아닐텐데 ㅋㅋ;
다들 조언 감사합니다 해결했습니다 애니메이션을 사용하는 오브젝트들은 TransparentBlt를 통해서 그리고 있었는데, 정적인 스프라이트를 사용하는 오브젝트들은 BitBlt를 통해서 그리고 있었습니다. 근데 후자의 코드를 담당하는 부모 클래스의 코드 한 구석에서 BitBlt를 주석 처리하고 TransparentBlt로 대체한 것이 원인으로 확인되었습니다