목록언어 (28)
개발하는 리프터 꽃게맨입니다.
스텐실 버퍼는 몇 가지 특수 효과를 구현하기 위해 사용할 수 있는 off-screen 버퍼이다.스텐실 버퍼는 백 버퍼와 깊이 버퍼와 동일한 해상도를 가지며, 스텔실 버퍼의 ij 번째 픽셀은 백 버퍼와 깊이 버퍼의 ij번째 픽셀과 대응된다. ID3D11DepthStencilView.. 등의 이름에서 보았다시피 스텐실 버퍼와 깊이 버퍼와 함께 동작한다.스텐실 버퍼는 스텐실처럼 작동하여 특정 픽셀 조각이 백버퍼로 렌더링되는 것을 차단한다. 예를 들어, 거울을 구현할 떄, 거울의 평면을 기준으로 객체를 반사해야 하지만, 반사된 이미지는 거울 안에만 그려져야 한다. 스텐실 버퍼를 사용하여 반사가 거울에 그려지는 경우가 아니면 렌더링을 차단할 수 있다. 스텐실 버퍼는 ID3D11DepthStencilState ..
most vexing parse 이하 성가신 파싱은 선언으로 해석할 수 있는 것은 선언으로 해석해야 한다.는 규칙이다.예를 들어 아래같은 코드를 보자. 여기서 MyClass a() 를 생각해보자.이 구문은 2가지로 해석될 여지가 있다. 1. 함수 선언2. 객체의 생성 (기본생성자 호출) 그런데 '성가신 파싱'에 의해 무조건 '선언'으로 해석된다. 분명 생성자는 호출했다고 생각했는데생성자가 호출이 안된 것을 볼 수 있다. 따라서 '성가신 파싱'을 회피하기 위해서 객체를 선언하고 싶다면 언제나 중괄호 초기화를 사용하는 것을 권장한다.
스스로 공부한 내용을 정리없이 구어적으로 풀어쓴 포스팅입니다.오로지 제가 볼 기준으로 정리한 글이기에참고하는 것을 추천하지 않습니다. [객체 지향이란?]객체란 속성과 기능을 가진 구체적은 인스턴스를 말합니다.속성과 기능을 C#코드로 표현할 수 있을까요?속성은 데이터로, 기능은 메소드로 표현하면 됩니다. 객체지향 프로그래밍에서 가장 중요한 역할을 하는 것은 클래스입니다.클래스는 객체를 만들기 위한 청사진인데, 객체를 만들기 위해서 어떤 속성과 기능을 가져야하는지명시된 설게도라고 생각할 수 있습니다. 클래스는 객체가 가지게 될 속성과 기능을 정의하지만 실체를 가지지 않습니다.이런 클래스로 만든 객체가 실체를 가지고 독립적인 메모리 공간을 차지합니다. 모든 클래스는 복합 데이터 형식입니다.복합 데이터 형..
C#에서 call by refence로 매개변수를 날려주는 방법은 2가지 입니다. ref 키워드와 out 키워드를 사용하는 것이죠. 이 2개의 키워드는 90% 동일한 기능을 수행합니다. 그런데 out은 보통 한 개 이상의 매개변수를 출력받고 싶은 경우에사용하는 키워드입니다. 그리고 out 키워드를 이용해서 넘긴 매개변수는 반드시 함수 내부에서 쓰기 동작이 발생해야 합니다.쓰기 동작이 발생하지 않으면 컴파일 오류가 발생합니다. ref 를 이용해서 out의 기능을 구현할 수는 있지만,out을 사용하는 것이 더욱 가독성이 좋습니다. call by reference 를 할 경우 가급적이면 ref을 사용하고다수의 리턴 값을 저장하고 싶은 경우에는 out 키워드를 사용하도록 합시다.
switch문은 특정 정수형 변수에 대해서분기 처리를 하여 코드의 흐름을 제어하는 문법입니다. C++에서는 switch 문에서 사용할 수 있는 변수는 '정수'로 제한되었습니다.(int, char 등.. 만 사용할 수 있고 float, const char* 등.. 은 사용할 수 없죠) 그러나 C#에서는 다양한 조건식이 허용되는 모습을 보입니다. 이런 식으로 문자열로 분기 처리를 할 수도 있고가장 신기했던 것은 Type 에 대한 분기 처리를 수행할 수 있다는 것이었습니다. 정말 신기합니다! [케이스 가드]switch문의 case 절의 패턴을 더 구체적으로 만들어주는 추가적인 조건 검사라고 할 수 있습니다.case 절 뒤에 when 절을 붙여 사용합니다.when 절은 if 문처럼 true/false 로..