이것은 정확히 프로그래밍 질문이 아니지만 궁금한 것이 있습니다.PC에서 그래픽과 사운드 프로그래밍 - 초보자를위한 많은 질문과 그 중 다수!
PC에서 코드와 출력물로 그래픽 및 사운드를 처리하는 방법은 무엇입니까? 그래픽
내 생각 엔 :
모니터의 그래픽 출력의 프레임에 정확히 충분한 공간을 보유하고 어딘가에 일부 예약 된 메모리 공간이 있습니다. IE : 800 x 600, 24 비트 컬러 모드 == 800x600x3 = ~ 1.4MB 메모리 공간
프로그램을 새로 고칠 때마다이 공간에 비디오 데이터가 기록됩니다. 이 작업은 모니터를 새로 고치기 전에 완료됩니다. 간단한 2D 게임을 가정 해보십시오. 그래픽 데이터는 색상 값을 나타내는 많은 바이트로 기계어 코드에 저장됩니다. 실행중인 프로그램이 PC에 지시하는 내용에 따라 프로세서는 적절한 데이터를 읽고이를 메모리 공간에 씁니다.
모니터가 새로 고침 될 때마다 각 메모리 공간에서 바이트 단위로 읽고 각 픽셀의 각 색상 요소에 대한 값에 따라 하드웨어를 활성화합니다.
이 모든 과정은 매우 빠르고 반복적으로 x 번 반복됩니다. x는 모니터의 재생 빈도입니다. 나는 이중 버퍼링의 대화를 피함으로써 내 자신의 가능성 - 잘못된 설명을 단순화했습니다 등
다음제 질문은 다음과 같습니다
A) 위의 추측 (세 단계가) 얼마나 가까이입니까?
b) 그래픽을 순수한 C++ 코드로 어떻게 통합 할 수 있습니까? 실용적인 것은 모든 사람들이 그래픽 라이브러리 (SDL, OpenGL 등)를 사용한다고 가정하지만, 예를 들어이 라이브러리가 어떻게 수행합니까? 순수 C++ 코드에 그래픽을 수동으로 포함시키는 것 (예 : 2D 부정확)은 비트 값의 2 차원 배열 (픽셀 당 여러 RGB 값을 포함하도록 3 차원)을 만드는 것과 관련이 있습니까? 이것이 어떻게 하루에 다시 waaay 일 것입니까?
c) 비트 맵을 사용하는 SDL 등의 라이브러리는 실제로 비트 맵/etc 파일을 실행 파일의 컴퓨터 코드로 작성하고 문제의 언급 된 것과 동일한 문제로 빌드 한 것처럼 사용할 수 있습니다 b 위?
d) 위의 제 3 단계에서 관련된 레지스터가 있습니까? 마찬가지로, 화면에 1 바이트의 단일 색상을 출력하기 위해 일부 레지스터에 일부 바이트 값을 쓸 수 있습니까? 아니면 순수하게 전용 메모리 공간 (= RAM) + 하드웨어 상호 작용입니까?
e) 마지막으로,이 모든 작업은 어떻게 완료 되었습니까? (나는 모른다 :)