d3d10이 렌더링을 끝내기를 기다리는 API를 구현해야하는 몇 가지 기능을 구현하고 있습니다. 기본적으로 공유 텍스처에 대한 동기화 액세스를 구현하려고합니다. d3d10 이후의 텍스처는 backbuffer에 성공적으로 나타낼 수 있습니다. 이 블랙 박스 API를 호출함으로써 나는 이것이 달성 될 수 있다고 생각하며 glfinish()와 비슷한 것이 될 것이라고 생각합니다. 우리는 ID3D10Query 쿼리를 사용하여 동기화 액세스를 구현할 수 있음을 읽었습니다.d3d10 명령이 완료 될 때까지 기다리는 API 구현
D3D10_QUERY_DESC queryDesc;
... // Fill out queryDesc structure
ID3D10Query * pQuery;
pDevice->CreateQuery(&queryDesc, &pQuery);
pQuery->Begin();
... // Issue graphis commands, do whatever
pQuery->End();
UINT64 queryData; // This data type is different depending on the query type
while(S_OK != pQuery->GetData(&queryData, sizeof(UINT64), 0))
{
}
시작과 종료 사이에 몇 가지 더미 명령을 넣어야합니까? 공공 API로이 기능을 공개하고 싶습니다. waitforgraphiscompletion이라는 이름의 뭔가가 있습니다.
여기에 더미 명령이 있어야합니까?
감사합니다. 이것이 나에게 완벽한 의미입니다. 그것에 대해 한두 가지 의문점이 있습니다. 어떻게 glfinish glFenceSync 다음에 glClientWaitSync 다른가요? D3D10에 대해서는 ID3D10Query (끝이 없다는 뜻)를 끝내고 ID3D10Query가 생성 된 장치에서 모든 명령이 실행될 때까지 기다릴뿐입니다. –
glFinish는 프레임 버퍼에 쓰는 것을 포함하여 모든 OpenGL 작업이 완료 될 때까지 대기합니다. glClientWaitSync는 glFenceSync가 완료되기 전에 발행 된 GL 명령을 보증합니다. 일반적으로 특정 텍스처에 대한 액세스를 동기화하려는 경우에는 일반적으로 필요하지 않습니다. 사용자가 자신의 렌더링 코드에서 읽거나 쓰는 시점을 알아야합니다. – MuertoExcobito
흠, 고마워. –