2012-08-06 8 views
3

비디오 카드를 사용하여 화면에 물건을 렌더링 할 때 세 가지 옵션 만 사용할 수 있습니다. 이들은직접 비디오 버퍼 액세스

  1. 다이렉트 (또는 XNA)
  2. OpenGL을
  3. Windows 드라이버 키트 및 그래픽 드라이버의 최소한의 구현을 만들기는

나는 다이렉트 X 나 OpenGL을 매우 작은 경험을 가지고,하지만에서 I 파이프 라인 렌더링을 지시하는 픽셀 쉐이더 프로그램을 각 픽셀과 함께 작성해야한다는 것을 알고 있어야합니다. 이 셰이더는 HLSL로 프로그래밍됩니다. 그러나 내가 아는 한, DirectX도 OpenGL도 버퍼에 byte[] 버퍼를 써서 렌더링 할 수있는 메모리 포인터를 반환 할 수 없습니다. 아니면 내가 여기서 착각 한거야? 아무것도 안하지만 RGB 데이터를 기록 할 수있는 메모리에 대한 포인터를 반환 그래픽 드라이버 절대적으로 최소한의 구현을 구현하는 것이 가능하기 때문

WDK는 더 나은 선택이 될 수 있습니다. 따라서 한 손으로 DirectX 나 OpenGL에서 제공하는 추상화를 모두 없앨 수는 있지만 드라이버 개발의 다른 복잡성에서는 시간을 절약하지 못합니다. 이에 대한 자세한 정보를 검색하는 동안 내가 찾은 것과 또한

는 DOS의 옛날 개발자가 화면 버퍼에 직접 그릴 수 주소 0B00 또는 유사한 있었다. 그것은 물론 없어졌고 더 이상 사용할 수 없지만이 메모리 공간이 여전히 예약되어있는 이유에 대해 읽었습니다. 어떻게 든 활용할 수 있습니까?

화면에 직접 쓸 수있는 C#의 비디오 메모리에 액세스하는 가장 쉬운 방법은 무엇입니까? DirectX 또는 OpenGL이 이러한 기능을 제공하므로 바이트 을 직접 복사하고 배열하여을 렌더링 할 수 있습니까? OpenGL은의를 사용하거나 Direct3D에의하여

+0

_draw_을 화면에 표시하거나 _capture_를 화면에 표시하려고합니까? – Aesthete

+0

화면에 그리기, 쓰기 전용 액세스, 화면 메모리의 실제 데이터를 읽을 필요가 없습니다. –

+1

http://gamedev.stackexchange.com에서이 유형에 대해 알고있는 사람이 더 많이 모일 것이므로 더 잘 질문 할 것입니다. – jcoder

답변

0

내장 된 텍스처 렌더링 기능, 당신은 서버 측 메모리에 클라이언트 측 메모리에서 픽셀 데이터를 복사 한 다음이 화면에 텍스처를 렌더링 할 수 있습니다.

참고 : 클라이언트 측 메모리와 I는 메모리 (램는 CPU에와있는) 프로그램에서 액세스 내가 그래픽 카드의 메모리를 의미하는 서버 측 메모리를 의미한다. 네트워크와 관련이 없습니다.

+0

클라이언트/서버 네트워킹에 관한 질문에 아무것도 표시되지 않습니까? – Aesthete

+0

클라이언트 측 메모리를 사용하면 프로그램에서 액세스 할 수있는 메모리 (CPU 및 RAM)와 서버 측 메모리를 통해 그래픽 카드의 메모리를 의미했습니다. 이것은 네트워킹과 관련이 없습니다. – Oskar

+0

잘 그래픽 카드가 _serving_ 아무것도 아니므로 약간의 오해의 소지가 있습니다. – Aesthete