나는 내 directx 11 응용 프로그램에 통합하려고하는 다음과 같은 기능을 가지고 있습니다. directx9를 사용할 때 모든 것이 잘 작동하지만 directx 11로 변환 할 때 Bitblt 라인에서 파란 화면이 나옵니다 (HDC의 문제가있을 것입니다). 이 코드를 HDC 대신 directx 11 호환 표면으로 변환하는 최선의 방법이 무엇인지 궁금합니
나는 GDI 기능으로 화면을 캡처하는 코드를 다음 사용 // Prologue:
int iScreenWidth = GetSystemMetrics(SM_CXSCREEN);
int iScreenHeight = GetSystemMetrics(SM_CYSCREEN);
HDC hScreenDC = GetDC(0);
HDC hCaptureDC = Create
Win32에서 C++로 프로젝트를 수행하면서 그려지는 이미지를 이중 버퍼링하려고했지만 정확한 비트 맵이 그려진 검은 색 화면이 나타납니다. 이것은 또한 내 WM_MOUSEMOVE 조건을 유발하여 비트 맵을 그리지 않도록 커서와 함께 비트 맵을 드래그합니다. 페인트 코드는 아래와 같습니다 : paint()는 WM_PAINT 아래의 wndproc에서 호출됩니다
수정 : 그래픽 개체 및 비트 맵 (b.gethbitmap 사용)에 대한 호환되는 DC를 만든 다음 GDI 내의 SelectObject 함수를 사용하여이 두 가지를 선택합니다. BitBlt 함수에서 hDc 대신 compatibleDC를 사용했습니다. BitBlt를 사용하여 그래픽을 복사 할 때 문제가 발생했지만 화면 (장치 0)에 비트 맵을 그리려고했습니다
다음 코드 (C++ Win32)를 사용하여 게임 창 화면을 캡처하고 이미지에서 픽셀 색상 배열을 가져 왔습니다. autoB() 함수는 작업을 수행합니다. 그런 다음 결과 배열을 내 창에 그려서 내가 가진 것을 시각적으로 확인합니다. 문제는 컴퓨터를 시작한 후 처음으로 게임에서 가져온 첫 번째 스크린 샷을 "캐시"한 다음이 프로그램이 항상 한 번만 작동한다는
그래픽 객체의 내용을 비트 맵으로 복사하려고합니다. 내가 비트 맵의 내용이 포함이 Graphics g = button1.CreateGraphics();
var bmp = GraphicsBitmapConverter.GraphicsToBitmap(g, Rectangle.Truncate(g.VisibleClipBounds));
같은 메도를 사용하는 경우
검색을 통해 확실한 답을 얻지 못하는 것 같습니다. Win32 blitting 작업 하드웨어가 가속화됩니까 (GDI가 아닌 GDI +). 나는이 기능이 그래픽 드라이버와 어떻게 인터페이싱하는지 모른다. 이 기능을 확인하기위한 함수 호출이 있습니까? GetCaps? 특정 그래픽 장치 (win32 그래픽 장치)가 이러한 기능이 하드웨어 가속을 수신하는지 확인하
이 코드는 창 주위에 100x100 크기의 상자에 그려진 이미지를 커서 주위로 캡처하려고합니다. BitBlt 여기에 어느 위치에 0을 반환하지 않습니다, 그리고 난 문제가 BitBlt의 첫 번째 함수 호출, 내가 전역으로 선언 된 HDC입니다 메타로 창 배경에서 이미지를 복사하려고하는 중이 야 꽤 확신 해요. . 메모리에 전체적으로 HDC를 만들려고 노력하