백 버퍼를 픽셀 배열에 집어 넣으려는 작은 조각의 코드를 작성하려고합니다. 저는 OpenGL 팬이 더 많기 때문에 간신히 directX를 사용했습니다. 내 목표는 BitBlt와 DC를 사용하여 백 버퍼를 잡는 프로젝트의 코드를 실제로 대체하는 것입니다.이 코드는 매우 느립니다.
이것은 모든 컴퓨터에서 작동하기로되어 있으며 directx7을 선택한 이유입니다.
내 질문은 .. 어떻게 그럴 수 있습니까?
감사합니다.DirectX 7을 사용하여 백 버퍼 가져 오기
0
A
답변
0
내가하는 일은 아래처럼 잠금/잠금 해제를하기 위해 도우미 클래스를 사용하는 것입니다. 그런 다음과 같이 사용 :이 범위를 벗어나면
mBackBuffer->Flip(DDFLIP_WAIT);
{
DDSURFACEDESC2 ddsd;
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ReadLock r(mBackBuffer, ddsd, NULL /* for whole surface */);
if (r)
{
// ddsd.lpSurface contains the void* pointer to the bytes
// ddsd.lPitch contains the byte count of each horizontal line
}
이} // ReadLock가 잠금 해제
class ReadLock
{
public:
ReadLock(IDirectDrawSurface7* surface, DDSURFACEDESC2& ddsd, LPRECT pRect = 0) : surface_(surface), mpRect(pRect), hr(S_OK)
{
hr = surface_->Lock(mpRect, &ddsd, DDLOCK_SURFACEMEMORYPTR | DDLOCK_NOSYSLOCK | DDLOCK_WAIT | DDLOCK_READONLY, 0);
}
HRESULT getResult() const { return hr; }
bool operator!() const { return FAILED(hr); }
operator bool() const { return SUCCEEDED(hr); }
~ReadLock()
{
if (surface_ && SUCCEEDED(hr))
surface_->Unlock(mpRect);
}
private:
HRESULT hr;
RECT* mpRect;
IDirectDrawSurface7* surface_;
};
0
TBH 다이렉트 X 9는 고대 카드에서도 작동합니다. 사용할 수있는 기능이 전부는 아니지만 SHED에서 더 유용한 정보를로드해야합니다. 나는 당신이 승리 95/9/me 지원에 조금 기진 맥진하고 2K를이기는 것 같지만. 마음에 NT4는 결코 DirectX의 적당한 버전을 가지지 않았다.
아아 나는 어디서나 DX7 문서를 가지고 있지는 않지만 꽤 뒤쪽의 버퍼 표면을 얻은 다음 데이터를 얻기 위해 잠글 수 있다고 확신한다. 비록 당신이 명심할 필요가 있지만, 백 버퍼를 잡는 것이 얼마나 느린지, 특히 오래된 카드의 경우. PCI 또는 AGP 버스를 통해 로컬 비디오 메모리에서 시스템 메모리로 백 버퍼를 복사하는 것은 대단히 느립니다.
달성하려는 목표는 무엇입니까? 당신이하고있는 것을 이루기 위해 더 나은 방법이 있어야합니다. ...
관련 문제
- 1. DirectX Z 버퍼 문제
- 2. QGLPixelBuffer에서 깊이 버퍼 가져 오기
- 3. 포스트 백 트리거 가져 오기
- 4. WPF에서 VNC 이미지 버퍼 가져 오기?
- 5. 쉐이더 프레임 버퍼 리드 백
- 6. OpenGL에서 백 버퍼 크기를 얻는 방법은 무엇입니까?
- 7. DirectX 8.1 서페이스의 텍스처
- 8. GLSL에서 FBO 데이터 가져 오기
- 9. URL 뒤로 가져 오기
- 10. PageRequestManager endRequest 이벤트에서 포스트 백 컨트롤 가져 오기
- 11. dll 경로에서 백 슬래시가 끝나는 ms 액세스 가져 오기 dll
- 12. 변수 가져 오기 및이 질문에 관련 포스트 백
- 13. DirectFB 가져 오기
- 14. jQuery를 사용하여 simpleXMLElement 가져 오기
- 15. mysqli를 사용하여 데이터 가져 오기
- 16. jQuery를 사용하여 $ 데이터 가져 오기
- 17. Jquery를 사용하여 링크 가져 오기
- 18. DLLImport를 사용하여 개체 가져 오기
- 19. WebRequest를 사용하여 데이터 가져 오기
- 20. 값을 사용하여 링크 가져 오기
- 21. GM_xmlhttpRequest를 사용하여 XML 가져 오기
- 22. 정규식을 사용하여 문자열 가져 오기
- 23. PHP를 사용하여 json을 가져 오기
- 24. PHP를 사용하여 Mysql 가져 오기
- 25. window.getSelection을 사용하여 문자열 가져 오기
- 26. Structuremap을 사용하여 리포지토리 가져 오기
- 27. 가져 오기 배열 가져 오기
- 28. 최신 DirectX SDK를 사용하여 DirectX 9 앱을 개발할 수 있습니까?
- 29. OpenGL (FBO)에서 보통의 백 버퍼 + 깊이 텍스처로 렌더링
- 30. Editpad Lite 7을 사용하여 Regex로 중복 제거하기