버텍스버퍼에서 Lock 을 했을때 얻은 포인터의 유효성

버텍스버퍼에서 Lock 을 했을때 얻은 포인터의 유효성은 Unlock을 하는 시점에서 사라진다고 보는것이 좋다.(당연한 말이지만 나는 혹시나 값을 변경하지 않고 읽는것만 이라면 괜찮지 않을까 라고 생각했다.) 라고 영천이형이 가르켜주셨다.

값이 무효화 하는 이유는 Unlock을 하는 시점에 시스탬 메모리에 잡혀있던 버퍼값들이 AGP나 비디오 메모리로 전송될수 있기 때문이라고 한다. 즉 일반적으로 볼때 Lock을 하기 직전의 시점에 리소스가 비디오 메모리에 있었다면 Lock을 하면 시스탬메모리로 전송되고 이 버퍼의 포인터를 리턴하게 된다고 한다. 그럼 이 포인터로 주물럭 거리고 Unlock을 하면 이 값이 다시 비디오 메모리로 전송된다고 한다. 혹시 리소스가 D3DMANAGED 으로 선언되었다면 Lock을 하건 Unlock을 하건 시스탬메모리에 있는 값을 변경하는 것이고 이것을 언제 비디오메모리로 전송할지는 D3D에서 결정한다고 한다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다