2012-03-21 3 views
-1

저는 DirectX 기술을 처음 사용하는 사용자입니다.ID3D10Texture2D 스크롤 내용

ID3D10Texture2D의 내용을 어떻게 스크롤 할 수 있습니까? bitblt를 사용합니다. src와 dst hdc가 같은 GDI 장치 컨텍스트에서 BitBlt와 같은 것입니다.

IDXGISurface의 ID3D10Texture2D에서 스크롤하는 것이 실제 목표이지만 dxgi API에서 아무 것도 찾을 수 없습니다.

답변

0

스크롤링이 매우 쉽습니다. 전체 텍스처를 그리려면 텍스처를 0, 0에서 1,1로 만듭니다. 이제 대신 다음을 얻을 수 있도록 x 좌표 각 0.5을 추가

0.5, 0.0----------------1.5, 0.0 
    |      | 
    |      | 
    |      | 
    |      | 
    |      | 
0.5, 1.0----------------1.5, 1.0 

이제 텍스처가 오른쪽 절반 폭 srolled있다 찾을 수 있습니다.

희망 하시겠습니까?

편집 : 위의 작업을 수행 할 수없는 경우 동일한 텍스처에서 읽고 쓸 수 없으므로 약간 걸릴 수 있습니다 (일부 드라이버에서는 가능하지만 정의되지 않은 동작 임). 따라서 2 가지 옵션이 있습니다.

1) 렌더 타겟 텍스처를 생성 한 다음 오프셋을 사용하여 원래 텍스처를 새로운 렌더 타겟에 렌더링합니다 (위와 같음). 그런 다음 렌더링 타겟 텍스처로 텍스처링합니다.

2) 텍스처를 잠그고 (맵핑) 개별 바이트를 새로운 위치로 복사합니다 (PCIe 버스 복사로 인해 속도가 매우 느려짐).

이상적으로는 1에서 제안한대로 할 수 있습니다. 그러나 최상의 성능을 위해 스크롤 양을 상수로 설정 한 다음 "버텍스 당 텍스처 좌표"를 오프셋하는 "스크롤 텍스처 버텍스 쉐이더"를 설정하십시오 원래 설명했다. 이것은 가장 뛰어난 수행 방법 일 것입니다.

+0

텍스쳐 내용을 스크롤하는 법을 물어 보았습니다. 다른 위치에 그리는 방법이 아닙니다. – Roman

+0

@Roman ... 그렇다면 정확히 무엇을 의미합니까? 위의 설명은 텍스처를 너비의 절반만큼 오른쪽으로 스크롤 할 것입니까? 텍스처를 랩핑 모드로 설정하면 오른쪽으로 떨어지는 데이터가 왼쪽으로 "랩"됩니다 ... 실제 텍스처 데이터를 스크롤하려면 그 반대로 조언해야합니다. PCIe 버스를 통해 그래픽 카드에서 데이터를 복사하거나 그래픽 카드에 데이터를 복사해야하므로 끔찍한 파이프 라인 버블이 발생합니다. – Goz

+0

@Roman : 글쎄요, 제 대답을 업데이트 해 봤지만 원래 설명했듯이 가장 좋은 방법은 아직도 많이 있습니다. – Goz