전체 글

컴공과 학부생의 이야기
·C++
Virtual이란 무엇인가?Virtual의 정의는 '가상의' 이라는 의미를 포함한다. 부모를 상속받은 자식 클래스에서 재정의 할 것으로 기대하고 정해놓은 함수라고 이야기한다.그렇다면, 가상함수로 정의한것과 정의하지 않은 것은 명확한 차이를 보일까?컴파일러는 함수를 호출할 때 매우 복잡한 과정을 거치게 됩니다. 그렇기에 컴파일러는 함수를 호출하는 코드는 컴파일 타임에 고정된 메모리 주소로 변환시킵니다. 이것을 정적바인딩이라고 합니다.하지만 일반 함수를 오버 로딩하게 되면 정적바인딩으로 인해 문제가 될 수 있습니다. 가상함수가 아닌 보통의 경우 부모 클래스형 포인터로 멤버 함수를 호출할때, 컴파일러는 정적타입을 보고 이 타입에 맞는 멤버함수를 호출하기 때문입니다.정적바인딩으로 인해(컴파일 당시 호출될 함수의..
·C++
C++에서 &을 이용하여 참조로 전달할 수 있다. 이렇게 되면 데이터를 복사하는 것이 아닌 해당 메모리에 있는 데이터를 그대로 사용하게 된다.참조로 전달하는 것이 재미있는 것은 포인터가 하지 못하는 것을 할 수 있다는 것이다. 포인터를 통해서 주소를 전달하는 것도 데이터 복사를 하지 않는다. 왜냐하면 주소 자체를 전달하는 것이므로 함수에서는 주소를 접근하기 때문이다.하지만, 함수 내에서 해당 주소를 변경하게 되면 기존 파라미터로 전달한 주소는 변경되지 않는다는 점이다.  기존에 한 주소에 두 개의 포인터가 연결되었는데, 그 중 한 포인터가 새로운 주소에 연결되었다고 이해하면 된다.이렇기 때문에 참조가 필요하다. 주소를 전달해서 원본 주소도 변경하고 싶을 때에는 포인터를 참조로 전달하면 되기 때문이다.#i..
·D3D11
필요한 준비물환경맵 텍스쳐를 그려줄 육면체환경맵 텍스쳐육면체 그리기먼저, 육면체를 그리기기 위해서는 사각형을 그려줘야 한다. 사각형이란 면으로써 점이 선을 이루어 그리는 것이다. 특히, rasterize환경에서는 사각형은 삼각형 두 개의 모습으로써 구성된다.사각형을 그릴 때 중요한 특징은 해당 면의 왼쪽 아래부터 그린다는 점이다. 이는 D3D가 왼손좌표계인 것도 이지만, 더욱 중요한 것은 NDC가 왼쪽아래부터 시작한다는 점이다. 이러한 영향으로 인해 그림을 그릴 때 왼쪽 아래 좌표부터 그리는 것이 자연스러운 것이 되었다고 이야기 한다.사각형은 면이 하나이므로 왼쪽 아래 부터 시계방향으로 삼각형을 그리는 것을 가정하면 그리기 간단하다.글로 쓴다면, 왼쪽 아래 -> 왼쪽 위 -> 오른쪽 위 -> 오른쪽 아래..
Koala Jung
koala-tech-blog