[완료] mmap()으로 할당받은 영역(fb)에 memcpy
글쓴이: vyoz / 작성시간: 금, 2008/05/30 - 11:05오전
안녕하세요, 지금 mmap()으로 할당한 fb영역을 검정색으로 칠하는 코드를 연습중입니다.
unsigned char* back_buf = (unsigned char*)m_pFrameBufferMappedAddr; memset(back_buf, 0xFF, m_nXResolution * m_nYResolution * m_nBitsPerPixel/8); //<<-- 이렇게 하면 화면이 하얗게 칠해진다. (의도한바) /************************************************************** unsigned char ulBlack = 0xFF; int i,j; for( i=0; i<m_nXResolution; i++) { for( j=0; j<m_nYResolution; j++); { memcpy((unsigned char*)(back_buf+i+(j*m_nBitsPerPixel/8)), &ulBlack, sizeof(unsigned char)); } } //**************************************************************/ //<<- 위 주석처리된 부분은 memset()과 같은 역할을 해야 된다고 생각하는데 그렇지 않다. 화면에 변화가 없다.
위 코드처럼 memset()으로는 화면이 의도한대로 흰색으로 채워집니다. 밑에 for loop으로 구현한 memcpy()도 같은 역할을 해야 맞다고 보는데 그렇지 않네요. 그냥 아무것도 없습니다.
도무지 감이 안오네요. 조언 부탁드립니다.
Forums:
0xff로 칠한 곳을
0xff로 칠한 곳을 또다시 0xff로 칠하니 화면이 변화가 없을수밖에요...
그리고 (틀린 건 아니지만) char pointer로 그냥 *(back_buf+......) = ulBlack; 하면 될 걸 memcpy를 하면 훨씬 비효율적이죠.
하하...
계산을 잘못하고 있었습니다. -_-;;
jick 님 답변 감사합니다.
댓글 달기