Computer/C, CPP, MFC

PeekMessage

게임을 만들때 중요한것 중 확인하고 넘어가야 할 부분은 메세지 루프 입니다.일반적으로 message를 가져오는 GetMessage() 함수가 있습니다. 이 함수는 메세지 큐에서 message를 가져와 message구조체에 복사하고 message 큐에 복사한다.message가 없을때는 새로운 message가 들어올 때까지 리턴을 하지 않습니다. 메세지가 들어오기 전까지는 놀고 있게 되는건데,이 놀고 있는 시간을 dead time(데드 타임) 이라고 합니다. (MicroSoft 특허가 있다고 하더라..) 메세지가 없는 시간 또는 구간에 우리가 다른 작업을 할 수 있다면, 메세지 처리 시간과 별개로다른 작업에 영향을 주지 않고 실행해야할 것들을 처리할 수 있겠습니다. 만, GetMessage()의 특성상 메세..

PeekMessage

Computer/ETC

항목4: 객체를 사용하기 전에 반드시 그 객체를 초기화하자

int x; 어떤 상황에서는 x의 값이 확실치 초기화되지만(0으로), 또 다른 상황에서는 그것이 보장되지 않는다. class Point{ int x, y; }; ... Point p; 이렇게 했을 때, p의 데이터 멤버 역시 어떤 상황에서는 초기화가 보장되지만 어쩔때는 또 안된다. 초기화되지 않은 값을 읽도록 내버려 두면 정의되지 않은 동작이 그대로 흘러 나오게 된다. 어떤 플랫폼의 경우에는 미초기화 객체를 읽기만 해도 프로그램이 서 버리기도 합니다. 대체적인 경우에는 적당히 무작위 비트의 값을 읽고 객체의 내부가 이상한 값을 갖게 된다. C++의 객체가 초기화가 중구난방인 것은 절대 아니다. 언제 초기화가 보장되며 언제 그렇지 않은지에 대한 규칙이 명확히 준비되어 있다. 안타까운점은 복잡하다.;;; 가..
Computer/ETC

운영체제의 개요

1. 운영체제의 개요(1) 운영체제의 목적 - 편의성 제공 : 컴퓨터 시스템의 자원을 최대한 효율적으로 관리, 운영함으로써 사용자들에게 편의성을 제공 - 처리능력의 향상 : 단위시간 내에 최대한 많은 양의 일을 처리 - 응답시간의 단축 : 사용자의 요청에 따라 컴퓨터 시스템이 결과를 처리하는 시간 - 사용가능도 향상 : 사용자가 요구할 때 어느정도로 신속하게 시스템 자원을 지원해 줄 수 있는가를 나타내는 것 - 신뢰도 향상 : 주어진 문제를 얼마나 정확하게 해결할 수 있는가를 나타내는 것 (2) 운영체제의 기능부팅, 사용자 인터페이스의 제공, 프로그램 생성, 프로그램 실행, 입출력 동작, 파일 시스템조작, 통신, 오류 발견 및 응답, 자원 할당, 계정관리 2. 운영체제의 구조1계층/ 프로세서 관리 - 동..
Computer/ETC

회선

이산회선은 영상 스무딩, 영상강화, 에지검출 등의 효과를 위해서 빈번하게 사용되는 영상처리 기법이다.회선기법은 원시 화소에서 이웃한 화소들 각가에 가중치를 곱한 합이라고 할수 있다. 가중치는 회선 마스크 혹은 회선 커널이라고 하는 작은 행렬로 결정된다. 일반적으로 행렬의 차원은 원시화소가 중앙에 위치하도록 홀수를 사용한다. 중앙의 위치는 출력 화소의 위치에 대응된다. 회선 윈도우라고 하는 슬라이딩 윈도우는 입력 영상의 각 화소들에 대하여 중앙에 위치하여 새로운 출력 화소들을 생성한다. 새로운 화소 값은 이웃한 화소들이 가진 값과 이에 대응하는 마스트의 가중치를 곱한 후, 곱해진 값들을 더함으로써 만들어진다. 생성된 화소들을 새로운 영상의 적절한 위치에 배정하는 것은 매우 중요한 작업이다. 기존의 화소가 ..

회선

Computer/ETC

포인트 처리_XOR연산, 룩업테이블

XOR 연산배타적 OR (XOR) 함수는 피연산자가 동일한 경우에는 0을 출력하고 동일하지 않는 경우에는 1을 출력한다. XOR 함수는 특정한 값을 가진 화소를 발견하는 데 사용될 수 있다.이것은 각 화소에서 지정된 값으로 XOR 연산을 수행함으로써 행해진다. 즉, 지정된 값을 가진 모든 화소는 검정색으로 설정되고 나머지 화소는 검정색 이외의 색으로 설정될 것이다. XOR 함수는 마우스를 표시하는 커서를 그리기 위해 그래픽 시스템에서 종종 사용된다. 스크린 포인터는 커서 마스크에 일정한 모양의 1 값을 지정함으로써 생성된다. 커서 마스크와 스크린 상의 화소를 XOR하면 대응하는 화소의 컬러는 변하지만 커서 아래에 놓인 영상의 모양은 보여질 수 있다. 최상위 비트(MSB)만 XOR함으로써 중간 범위 화소값..
Computer/ETC

블러링 & 샤프닝

블러링이나 저주파 공간적 필터링은 한 영상의 세세한 부분들을 제거한다. 이 기법은 여러 응용에 상당히 많이 쓰이고 있으며, 때로는 카메라의 초점을 흐리게 하거나 배경을 약화시키고자 할 때 사용한다. 이것은 인물 사진을 찍을 때 사용되는 일반적인 기법으로서, 사진 작가들은 이 같은 효과를 위해 카메라 필터를 사용하며 컴퓨터 아티스트들은 디지털 필터를 사용한다. 블러링은 회선을 통하여 수행된다. 일반적인 블러이 마스크에서의 모든 회선계수들은 같은 값을 가진다. 3X3 마스트에서의 모든 원소들은 1/9의 값을 가지며, 5X5 마스트에서는 1/25로 같은 값을 가진다. 블러링은 이웃 화소들과 평균한 결과라는 것을 회선 마스크가 가진 가중치로부터 쉽게 알 수 있다. 3X3 마스크를 사용할 경우, 9개의 원소들을 ..
Computer/ETC

RGB 변환 YCbCr

RGB -> YCbCr 변환Y = 0.257*R+0.504*G+0.098*B+16;Cb = -0.148*R-0.291*G+0.439*B+128; Cr = 0.439*R-0.368*G-0.071*B+128; YCbCr -> RGB 변환R = 1.164*(Y-16)+1.596*(Cr-128);G = 1.164*(Y-16)-0.813*(Cr-128)-0.392*(Cb-128);B = 1.164*(Y-16)+2.017*(Cb-128);

RGB 변환 YCbCr

Computer/ETC

DIB

DIB현재 시스템의 디스플레이 등록 정보와 독립적으로 색상을 표현하는 비트맵을 장치 독립적인 비트맵, 즉 DIB(Device Independent Bitmap)라고 합니다. 일반적으로 JPEG, GIF, TIF, PCX, BMP등 그래픽 포멧으로 파일에 저장되어 있는 비트맵은 모두 DIB 입니다.따라서, 이미지를 파일로부터 읽어오거나, 파일에 저장하기 위해서는 DIB를 사용해야 합니다. 파일 포멧과 메모리 포멧비트맵 데이터는 데이터량이 많기 때문에 대부분의 파일 포멧이 데이터를 압축하여 저장하고 있습니다. 비트맵을 저장하는 여러가지 파일 포멧중 가장 간단한 것이 BMP파일입니다. BMP 파일은 윈도우에서 사용하는 표준 DIB 파일 포멧입니다. DDB를 화면에 출력시키기 위해서는 CBitmap 클래스에 비..

DIB

Computer/C, CPP, MFC

Printf 함수에 대해서 알아보자

Printf 함수에 대해서 알아보자 #include int main(void) { printf("Hello, world\n"); return 0; } 위의 코드를 실행해 봅시다. 코드를 실행하면 Hello, world 라는 화면이 나올것입니다. 맞습니다. printf 라는 함수는 화면에 내용을 출력하는 함수입니다. printf("---") 의 --- 이 부분의 내용을 출력합니다. printf 함수는 문자열을 출력하는 기능을 제공한다. Hello, world의 끝 부분에 보면 '\n'과 같은 문자가 있습니다. 이런 문자를 가르켜 이스케이프 시퀀스(escape sequence)라 부르거나 특수문자라고 부르기도 합니다. 이는 단순히 출력되는 문자가 아니라 다른 의미로 해석이 되는 별도의 기능을 제공하는 문자입..
EIGHTBOX
EIGHTBOX
hwaya.

programmer

🍋일상의 소소한 순간들부터 큰 꿈까지, 호기심을 만족시킬 다양한 카테고리를 담은 블로그 입니다. 그리고, 소소한 행동에 감동하며 기뻐하고 하루하루에 감사하는 사람🌵

Today Yesterday Total
최신글