문제

나는 응용 프로그램을 프로그래밍하고 있습니다 메모리가 제한된 32 비트 프로세서 (512k 플래시, 32k RAM).

그만큼 표시하다 이 장치에는 16 비트 색상의 128x160이 있으며, 이는 프로세서에 버퍼링되면 일반적으로 40k RAM을 소비합니다. RAM이 많지 않아 기술, 팁, 요령, 화면 데이터 생성을위한 아이디어를 찾고 있습니다.

도움이 될 수있는 것들 :

  • 아마도 당신은 이런 종류의 제한에 대한 자원을 알고있을 것입니다.
  • 어쩌면 당신은 매력적인 그래픽을 즉시 생성했을 것입니다
  • 디스플레이를 스캔하는 동안 프로그램 메모리 (알파 블렌딩 포함)의 요소를 결합하는 데 사용할 수있는 일반적인 알고리즘이 있습니까?
  • 간단한 벡터 렌더링 기술 (또는 무료 (BSD/MIT/Apache) 소스)
  • ???

승수가 있지만 부동 소수점 프로세서는 없습니다. 디스플레이 자체에는 디스플레이에 대한 매우 간단한 컨트롤러와 메모리가 있지만 읽기와 쓰기는 비싸므로 피할 수 있다면 작업 공간으로 사용하고 싶지 않습니다.

-아담

도움이 되었습니까?

해결책

어떤면에서, 당신은 Tandys, Spectrums 및 Early PC의 시점에 거의 같은 상황 게임 개발자에 있습니다. 그래서 여기 내 추천이 있습니다.

컴퓨터 그래픽에서 Michael Abrash 저술을 읽어야합니다. 플로팅 포인트 공동 프로세서가 선택적인 하드웨어 조각이었던 시대에 작성되었으며, 오래된 (Bresenham Line 등)를 기존 (나쁜 '소프트웨어 렌더링 된 날에 사용하는 많은 기본 기술을 설명합니다. .

그의 "블랙 북"의 대부분을 읽을 수 있습니다. 여기.

추가로, 아마도 대부분의 사람들이 하루에 다시 사용했던 오래된 BBS 파일을 찾을 수 있습니다. 그래픽 프로그래밍을 배우기 위해 여기. 그래픽, 라인 및 그렇지 않은 것을 검색하십시오.

도움이되기를 바랍니다!

업데이트: 나는 또한 사용을 기억합니다 이것 화면에 물건을 그리는 첫 번째 시도에서. 내가 그 뒤에있는 수학을 이해하는 데 얼마나 많은 시간을 보냈는지 알 수 없습니다 (공평하게 당시 나는 15 살이었다). 3D에 대한 아주 좋은 (그리고 간단한) 소개, 변형, 다각형 필러 및 보간에 대한 아주 좋은 프리미어.

다른 팁

화면에 어떤 종류의 데이터를 표시 하시겠습니까?

사진 이미지가 아닌 경우 팔레트 사용을 고려할 수 있습니다. 예를 들어 : 픽셀 당 8 비트를 사용하는 256 개의 컬러 팔레트는 최소한 40KB보다 우수한 20KB (조회 테이블의 경우 256 x 2BSES)가 필요합니다.

이런 종류의 상황을 다루는 기본 기술은 화면을 좁은 수평 줄무늬로 나누고 RAM의 두 개의 줄무늬 만 완충하는 것입니다. 다음 스트라이프가 표시되는 동안 다음 스트라이프가 표시됩니다. 스캐닝 '빔'이 다음 줄무늬를 때리면 (그리고 당신이 잡을 수 있도록 인터럽트를 발사 할 때) 둘을 교환하고 다음 스트라이프를 그리기 시작합니다.

이것의 불쾌한 부작용은 당신이 가지고 있다는 것입니다. 딱딱한 타이밍은 각 스트라이프를 렌더링하는 데 걸리는 시간에 대한 제한입니다. 그래서 나는 지루하고 스프라이트와 같이 예측 가능한 성능을 가진 것을 고수하려는 유혹이 될 것이라고 생각합니다.

약간의 비공식이지만 이것이 Nintendo DS 3D 하드웨어가 작동하는 방식입니다. 동일한 y 좌표 주위에 너무 많은 다각형을 렌더링하려고 시도하면 폴리가 무작위로 깜박이고 화면 리프레 쉬가 렌더링 하드웨어를 추월함에 따라 중단됩니다.

또한 두 번째로 다른 포스터의 제안은 당신이 팔레트 렌더링을 사용한다는 제안입니다. 16 비트 픽셀에서 빠른 수학을하는 것은 매우 어렵지만 팔레트를 배치하는 방법에 대해 영리하면 8 비트가 더 빠릅니다.

멋진 그래픽과 낮은 메모리를 결합한 몇 가지 아이디어 :

  • 배경과 스프라이트를 플래시로 저장하십시오.
  • 팔레트를 바이트의 절반으로 사용하여 RAM에 동적으로 생성 된 그래픽을 저장하십시오.
  • LCD 드라이버의 창 기능을 사용하여 필요한 화면의 일부만 업데이트하십시오.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top