전체 글(58)
-
C++ 문자열 parsing
C++ 문자열 parsing을 위해 3가지 메서드를 소개한다. 1) substr 메서드 2) find 메서드 3) getline 메서드 1) substr 예시 code string str = "stringParse"; string result = str.substr(0, 6); // result : string 0 ~ 5의 인덱스에 해당하는 문자열을 가져오게 된다. 2) find 예시 code string str = "get stringhind"; int num = str.find("stringhind"); //num : 4 stringbind의 시작 위치를 반환한다. 3) getline 예시 cin 이용 시 공백 문자를 입력하면 공백 문자 전까지만 읽어들이게 된다. getline을 이용하면 공백을 포함..
2023.08.22 -
복사 생성자와 소멸자
c++에서 동적 할당을 하려면 new, delete가 있어야한다고 했다. 그런데 클래스에서 동적할당을 하고 있는 것이 있다면 (ex 생성자에서) delete를 해주어야 하는데 해줄 수가 없다. 이것들은 delete로 꼭 해제를 해주어야 하는데 그것을 소멸자에서 해준다. classname::~classname() { if(this->dynamicValue != NULL) { delete dynamicValue; //if dynamicValue is array delete[] dynamicValue } } 소멸자는 객체가 사라질 때 호출된다. 복사 생성자는 객체 a가 있을 때 다른 객체에서 객체 a를 상수 레퍼런스로 받아오는 것이다. 복사 생성자의 문제는 원본 객체에서 동적 할당 받은 변수가 소멸자에 의해 ..
2023.07.15 -
normal mapping, 환경 mapping
7장은 normal mapping에 대한 내용이다. 어떻게 물체의 울퉁불퉁한 정도를 polygon을 더 넣지 않고 나타낼 수 있을까? 울퉁불퉁한 정도를 texture을 이용하여 조명 계산을 통해 울퉁불퉁하게 나타낼 수 있다. 이것들은 pixel shader에서 나타내줄 것이다. 여태껏 해왔던 표현과 울퉁불퉁한 표현 우리가 이런 울퉁불퉁함을 나타내기 위해서 쓸 것은 normal vector들이다. 이런 normal vector들은 모델링 과정에서 다 가져오게 될 것이다. 즉 normal texture에서 가져오게 된다. normal vector들은 그런데 normalize 되어 있는 벡터들이므로 -1 ~ 1 의 범위를 갖는다. 그러나 texture 상에서는 rgb 값들을 저장하는데 rgb의 범위는 0 ~ ..
2023.07.14 -
재질에 따른 반사양 조절, toon shading
앞의 specular, diffuse를 이용하여 빛을 표현했는데 이제는 물체의 재질마다 빛이 정반사, 난반사 하는 양이 다른 것을 생각해봐야 한다. 고려할 것 난반사광이 반사하는 빛, 정반사광이 반사하는 빛의 스펙트럼이 다른 경우 각 픽셀이 반사하는 정반사광의 정도를 조절하는 경우 (ex. 사람의 얼굴) 이때 diffuse map(난반사광에 이용), specular map(정반사광에 이용)을 이용하여 표현합니다. diffuse map은 실제 물체를 지각할 때는 난반사광으로 인식하므로 diffuse map에는 텍스쳐를 적용하는 것으로 끝난다. specular는 빛이 나올 곳 안나올 곳을 텍스쳐로 보여준다. 즉 반사하는 정반사광의 양이므로 검은색일 경우 빛을 전혀 반사하지 않는다. 그래서 난반사광으로 표현한..
2023.07.14 -
explicit 키워드, mutable 키워드
c++ - C++의 explicit 키워드는 뭘 하는 건가요? | 프로그래머스 커뮤니티 (programmers.co.kr) C++의 explicit 키워드는 뭘 하는 건가요? 제가 인터넷을 돌아다니다가 어떤 답변에서 밑에 C++ 코드를 봤는데 이 explicit은 무슨 일을 해주는 건가요? 소스코드 class String { public: explicit String (int n); //allocate n bytes String(const char *p); // initializ qna.programmers.co.kr 형변환을 모두 명시적으로 해주도록 하는 것이다. mutable 키워드 const 함수는 멤버변수의 값들을 바꿀 수 없다고 배웠는데, 멤버변수를 mutable로 선언하였다면 const 함수에..
2023.07.11 -
함수 포인터
int add(int n1, int n2) { return n1 + n2; } add함수에 대한 주소를 저장하여 이용할 수 있다. int (*p)(int,int); // 함수 포인터 선언 p = &add; int value = (*p)(3,4); int add(int n, int b) { return n + b; } int main() { int (*p) (int, int); p = &add; cout
2023.07.09