모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 오유인페이지
    개인차단 상태
    중용자님의
    개인페이지입니다
    가입 : 12-10-09
    방문 : 1057회
    닉네임변경 이력
    회원차단
    회원차단해제
     

    중용자님의 댓글입니다.
    번호 제목 댓글날짜 추천/비공감 삭제
    664 Windows API 그래픽 프로그래밍 [새창] 2015-07-22 17:17:18 0 삭제
    1/ 제 글들을 다시 한번 읽어주시면 좋겠습니다.
    버퍼를 비트맵대신 메모리를 사용하여 메모리에 출력하고 DC를 이용하여 화면에 출력한다고 썼습니다.
    메모리에 직접 접근하는 얘기는 과거 PC들 얘기입니다.

    요즘 어셈블리 프로그래밍 하고 있습니다.
    Windows 내에서 할 수 있는 범위에 대해서는 상당히 자세히 알고 있다고 생각합니다.
    663 Windows API 그래픽 프로그래밍 [새창] 2015-07-22 17:08:32 0 삭제
    DC의 개념에 대해서는 정확히 이해하고 있습니다.
    Windows에서 다루는 DDB DIB에 대해서도 정확히 알고 있습니다.
    당연히 메모리 내용을 DC로 복사하는 건 내부적으로 메모리 내용을 DDB에 맞게 렌더링하는게 포함되죠.
    GDI 함수로 출력시 이 작업이 모든 그래픽을 출력하는데 사용되는데 메모리를 이용하면 메모리에 배열에 쓰듯이 쓴 후 단 한번만 메모리의 내용을 DC를 이용하여 DDB로 변환한후 GDI Stack에 집어넣은 후 출력하죠.
    그런 내용들 생략한 겁니다.

    메모리에 찍는다는 것은 디바이스 드라이버나 OS를 거치지 않는다는 의미로 한 얘기입니다.
    NES만 하더라도 일정 크기이상의 롬인 경우 레지스터, 뱅크방식으로 메모리에 접근 합니다.
    그런 식으로 접근해도 어찌됐던 직접 적으로 메모리에 찍는 방식을 사용하기에 메모리에 직접 찍는다는 얘기를 한겁니다.
    OS, 디바이스 드라이버 거쳐서 출력하는 것과 레지스터, 인터럽트 등 이용해서 출력하는 것은 속도가 비교가 안되거든요.
    662 Windows API 그래픽 프로그래밍 [새창] 2015-07-22 15:42:20 0 삭제
    제가 말한 방식은 어디까지나 GDI로 출력할 만한 단순한 그래픽의 속도 문제를 해결해 주기 위한 것입니다.
    GDI 함수들이 제공하는 출력방식은 특별히 알고리즘이라 불릴 만한게 없기에 메모리 출력 방식으로 대부분 대체 가능하고 3D, 복잡한 필터가 필요한 그래픽 프로그래밍이야 당연히 DirectX 등을 사용해야 겠죠.
    661 Windows API 그래픽 프로그래밍 [새창] 2015-07-22 15:39:08 0 삭제
    메모리에 출력한 후 WM_PAINT발생 후 메모리를 DC에 복사하는 방식으로 출력하는 것은 1초에 최소한 500번 이상 가능합니다.
    제 에뮬레이터로 테스트 해본 결과입니다.
    어느 시점에 에뮬레이터를 중지해도 마지막에 출력해야 할 내용이 출력되어 있습니다.
    일단 WM_PAINT 메세지가 발생하면 DC에 출력하는 내용은 그대로 화면에 반영된다는 얘기죠.
    사실 60 프레임 이상은 필요하지 않기 때문에 1초에 60번 이상만 WM_PAINT가 발생할 수 있으면 화면 업데이트는 전혀 문제될게 없습니다.
    메모리를 DC에 복사하는 시간도 1밀리세컨드 이하 이기 때문에 GDI에서 출력자체가 문제가 되지는 않습니다.
    GDI에 출력할 이미지 프로세싱에 걸리는 시간의 문제인데 좌표계도, 복잡한 필터도 필요하지 않은 경우 그냥 메모리에 찍으면 되게 때문에 구지 DirectX를 사용할 필요가 없다는 것이죠.
    660 Windows API 그래픽 프로그래밍 [새창] 2015-07-22 15:16:36 0 삭제
    제가 알고 있기로 WM_PAINT 메세지 이후 출력한 내용은 전부 화면에 업데이트 되는 걸로 알고 있습니다.
    WM_PAINT 메세지 발생한 것 자체가 윈도우가 그릴 수 있는 준비가 되어 있다는 것을 뜻하는 걸로 알고 있기 때문이죠.
    제가 메모리 이용한 출력을 할때도 메모리에 출력한 후 WM_PAINT메세지를 발생시키고 WM_PAINT 메세지에서 DC를 이용해 화면에 출력을 합니다.
    이 메모리 출력부터 WM_PAINT 발생 후 메모리를 DC로 복사하고 완료가 끝나면 1프레임이 완료됩니다.
    659 Windows API 그래픽 프로그래밍 [새창] 2015-07-22 14:21:50 0 삭제
    다시 한번 정리하자면 일반적인 GDI 그래픽 프로그래밍은 비트맵 버퍼를 생성한 후 GDI 명령들을 이용해 비트맵 버퍼를 채우고 WM_PAINT 발생시 이 비트맵 버퍼를 화면에 복사합니다.

    제가 말한 방식은 malloc 등을 이용해 배열을 생성한 후 GDI 명령이 아닌 배열에 데이터를 집어 넣는 방식으로 배열을 채우고 WM_PAINT발생시 이 배열을 화면에 복사합니다.

    제 에뮬레이터로 이미 테스트를 했고 GDI 함수 출력 방식의 경우 1초에 20프레임이 조금 넘는 수준이고 메모리 출력 방식의 경우 500 프레임 이상의 속도가 나옵니다.
    메모리 배열을 화면에 출력하는데 걸리는 시간은 1밀리세컨드가 되지 않고 보통 그래픽 사용하는 앱들은 60프레임을 적용하기에 속도에는 아무런 문제가 되지 않습니다.

    하드웨어 가속이 필요하지 않은 그래픽 프로그래밍에 있어서는 Windows API로도 속도나 깜빡임이 문제가 되지는 않는다는 것이죠.
    필터링 등을 사용하지 않는 동영상 플레이어 같은 것은 Windows API로 만들어도 속도 문제가 전혀 없습니다.
    658 Windows API 그래픽 프로그래밍 [새창] 2015-07-22 13:56:35 0 삭제
    일반적인 GDI 방식은 버퍼에 출력할 때도 DC를 이용하잖아요?
    오해가 있으신 것 같은데 제가 말한 방식은 DC를 이용한 출력은 버퍼에 있는 내용을 화면에 복사하는 것 단 한번만 합니다.
    메모리 버퍼는 그냥 배열입니다.
    화면크기 1000*1000이면 배열로 1000*1000*4짜리 배열 생성한 후 모든 그래픽 작업을 그 배열에 직접 데이터를 넣습니다.
    화면 갱신시 이 배열을 화면으로 복사해주는 방식을 사용하는 겁니다.
    657 에뮬레이터 실행화면 [새창] 2015-07-21 22:01:41 0 삭제
    이미 클럭에 맞춰 실행되고 있습니다. ^^
    656 에뮬레이터 개발 상황 [새창] 2015-07-21 00:38:07 0 삭제
    감사합니다. ^^
    655 에뮬레이터 개발 상황 [새창] 2015-07-21 00:33:23 0 삭제
    타 에뮬레이터 소스는 몇 개 훑어보기는 했는데 제가 개발한 방식과 구조적으로 완전 다른데다 코드에다 숫자를 때려박은 하드코딩 방식이라 그거 분석할 시간에 그냥 만드는게 빠르겠어서 그냥 넘겼습니다.

    테스트용 롬은 아주 단순한 롬부터 다양하게 구비되어 있습니다.
    슈퍼마리오는 그냥 스샷 뜰 때 습관처럼 실행하네요. ㅎㅎ

    http://wiki.nesdev.com/ 가봤던 사이트이고 북마크까지 해놨는데 이미 자료들을 다 확인한 걸로 착각하고 있었네요.
    링크해주신 PPU 자료 정도면 자료 부족 충분히 해결될 것 같습니다.
    감사합니다.
    654 에뮬레이터 개발 상황 [새창] 2015-07-20 22:11:01 0 삭제
    신경써주셔서 감사합니다.
    해당 사이트의 자료는 대부분 봤는데 거기에 나온 하드웨어 설명서에 PPU에 대한 설명은 부족하게 나와 있더라구요.

    제가 하는 작업은 NES 하드웨어를 에뮬레이팅 하는 것입니다.
    한마디로 NES 하드웨어에서 실행되는 소프트웨어를 윈도우에서 실행할 수 있게 만드는 것이죠.
    게임기들의 경우 PC와는 다르게 대부분 고유의 그래픽, 사운드 출력방식을 사용합니다.
    NES의 경우 PPU를 사용하는데 이 PPU가 정확히 어떤 식으로 작동하는지 자료가 부족해서 구현하기가 쉽지가 않습니다.
    하드웨어에 대한 설명이 예외까지 정확하게 기술되어 있는 매뉴얼이 있어야 정확하게 에뮬레이터가 작동하는데 자세한 매뉴얼이 존재하지를 않네요.
    6502 CPU는 상세한 매뉴얼이 있어 쉽게 구현했거든요.

    이미 여러 에뮬레이터들이 제작된걸로 봐서 자세한 PPU 하드웨어 매뉴얼이 어딘가에는 있을거라 생각해서 다시 찾아보려는 중입니다.
    653 프로그래밍 언어란? - 6 [새창] 2015-07-20 13:15:28 0 삭제
    괜히 친목 오해살까봐 답글 지웠습니다.
    미스테리는 컴파일러 옵션이나 코드를 자세히 살펴보시면 충분히 직접 알아내실 수 있을 것 같습니다.
    650 에뮬레이터 알파버전 테스트 중입니다. [새창] 2015-07-18 17:05:57 0 삭제
    TXS에 대해 제가 잘못봤네요. 6502 매뉴얼 다시보니 표가 맞네요.
    프로그래밍 수정하다 코드에서 누락 됐었나 봅니다.



    [◀이전10개] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [다음10개▶]

     
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈