본문 바로가기

All250

LNK 1104: cannot open file ~~~ for writing 전날까지 잘되던 실행이 갑자기 저런 링크 에러가 떴음. 찾아보니 프로그램이 디버그 모드에서 이미 실행 중일 경우 뜰 수 있다함. 이미 이러한 부분은 확인해서 다른 문제인줄 알았는데 혹시나 해서 작업 관리자에서 실행 중인 프로그램 찾아보니 있었음. 종료하고 실행해보니 잘됨. 아마 어제 실행 시켜놓은 상태로 노트북을 닫아서 메모리 상에 남아있었던 듯함. 2020. 9. 7.
UpdateWindow()와 InvalidateRect()와 WM_PAINT 메세지 UpdateWindow() 함수는 윈도우에 WM_PAINT 메세지를 전송함으로써 무효화된 영역을 다시 그려주는 함수이다. 이와 비슷하게 InvalidateRect()라는 함수가 있는데, 이 함수는 Rect를 통해 특정 영역을 지정하여 그 영역을 무효화된 영역으로 만들어주고 WM_PAINT 메세지를 발생시킨다. 두 함수의 차이 점은 InvalidateRect() 함수는 단순히 무효화 영역을 지정함으로써 시스템이 WM_PAINT 메세지를 발생시키도록 하는 것이고, UpdateWindow() 함수는 WM_PAINT 메세지를 강제로 발생시킨다. 원래 무효화 영역이 발생함으로써 생기는 WM_PAINT 메세지는 메세지 큐로 들어가며 다른 메세지들이 처리된 후 처리된다. 즉 우선순위가 낮다. 반면 UpdateWind.. 2020. 9. 6.
[C++] std::vector 컨테이너의 반복자를 통해 포인터(주소) 얻기 vector 컨테이너의 반복자를 통해 해당 반복자가 가리키는 요소의 주소를 얻을 수 있다. 우선 벡터는 연속적인 배열이기 때문에 다음과 같이 첫 번째 원소의 주소를 통해 배열의 시작 주소를 구할 수 있다. 그리고 포인터의 특성을 이용해 모든 요소에 접근할 수 있다. void main() { vector v1 {1, 2, 3, 4, 5}; int* beginAddrOfV1 = &v1[0]; for(size_t i = 0; i < v1.size(); ++i) { cout 2020. 8. 29.
멀티 스레드 잠금 순서 문제 풀어보기 https://blog.naver.com/imays/221501238012 멀티스레드 잠금 순서의 규칙 (그리고 책 광고) 안녕하세요, 배현직입니다. 멀티스레드 프로그래밍에서 교착상태(deadlock)는 중요한 주제입니다. 얼마전 ... blog.naver.com 내가 푼 방법이 맞는진 모르겠지만.. 나머지 문제는 이해가 가는데 마지막 문제는 잘 모르겠다. 2020. 8. 18.
5 - 출력 병합(Output merging) 책을 보며 개인적으로 공부하는 내용이므로 틀린 부분이 있을 수 있습니다. 자료 및 내용 출처 출력 병합(Output merging) 출력 병합 단계는 렌더링 파이프라인의 마지막 단계이다. 이전 단계인 프래그먼트 처리에서는 프래그먼트의 색상을 결정하여 RGB 값을 결과로 출력했다. 여기엔 사실 불투명도를 나타내는 알파(A), 깊이를 나타내는 Z 값도 포함되어 있다. 그래서 RGBAZ 프래그먼트로 부르기도 한다. 해당 단계에서는 프래그먼트별로 불투명도와 깊이를 추가로 비교하여 최종적으로 화면에 보일 프래그먼트를 생성한다. Z-버퍼링(Z-Buffering) 래스터화 단계에서 수행되는 Z-컬링을 이해하려면 Z-버퍼링을 알아야 한다고 했다. Z-버퍼링은 Z-버퍼(깊이 버퍼)를 이용한 일종의 알고리즘이다. 3차원 .. 2020. 8. 13.
4 - 프래그먼트 처리(Fragment processing) 책을 보며 개인적으로 공부하는 내용이므로 틀린 부분이 있을 수 있습니다. 자료 및 내용 출처 프래그먼트 처리 이전 단계인 래스터화 단계의 출력은 정점별 속성이 보간된 프래그먼트였다. 그리고 현재 단계인 프래그먼트 처리 단계는 프래그먼트 하나를 입력으로 받는다. 프래그먼트 처리는 프래그먼트 프로그램(셰이더)에 의해 수행되며, 다양한 처리를 통해 프래그먼트의 색상을 결정한다. 프래그먼트 처리 단계는 완전 프로그래밍 가능한 단계이기 때문에 우리가 직접 셰이더를 만든다. 셰이더의 출력은 색상을 나타내는 RGB값이다. 픽셀 셰이더는 프래그먼트 셰이더와 같은 의미로 사용되지만, 프래그먼트 셰이더가 더 정확한 단어이다. 프래그먼트 처리 단계에서 수행하는 중요한 2가지는 텍스쳐링(texturing)과 라이팅(light.. 2020. 8. 10.