[GPG 2 글 5.2] Surface 복사에 관한 질문입니다.

각 게시판의 주제에서 벗어나는 게시물을 삭제 전에 임시로 보관하는 곳입니다. 읽기 전용이나, 자신의 글을 삭제, 수정하는 것은 가능합니다.
Post Reply
jin00521
Posts: 3
Joined: 2012-07-18 20:25

Surface 복사에 관한 질문입니다.

Post by jin00521 »

궁극적인 목표는 Surface회전에 있습니다.

CreateOffscreenPlainSurface를 이용하여 서피스를 하나 만든 후 Lock하여 이미지데이터를 넣고 StretchRect함수를 이용해서 화면에 디스플레이하는 것까지 완료하였습니다.

제가 하고자 하는 것은 Sprite를 이용하여 이 장면을 회전하여 디스플레이 하고싶습니다.

그러려면 Sprite의 Draw함수에서 써야할 텍스쳐가 필요합니다.

결국 !

텍스쳐를 생성(D3DXCreateTexture) -> 텍스쳐의 서피스를 얻어옴( GetSurfaceLevel) ->서피스의 Lock걸어서 이미지데이터 쓰고 (LockRect,UnlockRect) -> Draw 하면 될거라고 간단하게 생각하고

D3DXLoadSurfaceFromSurface 함수를 이용하여 앞서생성하였던 OffScreenPlainSurface의 내용을 제가 생성한 텍스처의 서피스에다가 복사하여 넣으려고 하였습니다.

하지만 에러가 나네요. ㅜㅜ (E_FAIL 리턴..)

직접 텍스쳐의 서피스에 Lock을 걸어서 확인해보니

CreateOffscreenPlainSurface 하여 얻은 포면의 피치값과
D3DXCreateTexture하여 생성한 텍스쳐에서 GetSurfaceLeve하여 얻은 서피스의 피치값이 다르더라구요.
물론 이 텍스쳐와 서피스는 같은 width * Height 값, 픽셀포맷 으로 생성하였습니다.

텍스쳐의 서피스 피치값이 plainsurface의 피치값의 네배가 되어버려요 ㅜㅜ 이거 왜그런가요? 같은 크기의버퍼를 할당하지 못하는이유라도 있는건가요 ? 이런이유로 직접 lock을하여 데이터를 넣는것이 안됨은 물론이며 LoadSurfaceFromSurface함수도 실패를 하는지요 ㅜ 정말 여기저기 찾아보다가 여기에 글을 남깁니다. 도와주세요~!

물론 텍스쳐는 Lock을 걸기위해 다이나믹으로 생성하였습니다. 생각보다 그리간단한게 아닌가보네요 ㅠ 조언부탁드립니다.!!!!
류광
Posts: 3805
Joined: 2001-07-25 09:00
Location: GPGstudy
Contact:

Post by 류광 »

독자 게시판 취지와 맞지 않는 질문이라서 임시보관소로 옮깁니다.
(참고: viewtopic.php?t=25095 )
Post Reply