728x90

전체 글 715

2. 윈도우 메뉴, 단축키와 비트맵, 대화상자 컨트롤

윈도우 메뉴 리소스 - 윈도우 프로그램에서 화면을 통해 사용자에게 입력받고 출력하는 코드 외의 부분 메뉴항목에서 WM_COMMAND메시지 발생 → iMsg에 저장되어 WndProc()에 전달 tchar_t *_fgetts(tchar_t *str, int n, FILE *fPtr) - fPtr파일에서 한 줄을 읽어와 str에 저장. 파일의 끝을 만나면 NULL반환 int *_fputts(const tchar_t *str, FILE *fPtr) - str문자열을 fPtr파일에 출력함 errno-t _tfopen_s(FILE** fPtr, const tchar_t *filename, const tchar_t *mode) - 열고자하는 filename으로 파일을 연후 fPtr에 연 파일 포인터저장 int _st..

Computer/WINAPI 32 2023.01.18

가시성 판단(Visibility Detection)

가시성 판단 (후면제거 - 절단 - 은면제거) 벡터 후면제거(Backface Culling) 후면제거 후면을 판단하고 제거하는 과정 void glEnable(GL_CULL_FACE); void glCullFace(GLenum mode); void glDisable(GL_CULL_FACE); Front face, Back face void glFrontFace(GLenum mode) : Front face, Back face를 설정 void glPolygonMode(GLenum face, GLenum mode) : Front face, Back face를 그리는 방식을 구분할 때 사용 절단(Clipping) Cohen-sutherland 알고리즘 장점 : 상대적으로 간단한 계산에 의해 많은 선분이 제거됨 ..

1. 윈도우 프로그래밍, 기본 입출력, 제어 메시지

윈도우 프로그래밍 윈도우 SDK - 윈도우 API로 구현한 라이브러리나 헤더파일 윈도우 프로그램 특징 GUI기반 프로그램 이벤트 기반 프로그램 - 윈도우가 이벤트를 감지하고 메시지를 보내면 윈도우 프로그램이 수신한 메시지에 따라 반응한다. 멀티쓰레드 기반 프로그램 윈도우 프로그램 메시지 처리과정 이벤트 발생 이벤트 감지 이벤트 전송 - 정수값 메시지가 큐에 쌓인다. 윈도우 프로그램 - 큐에서 메시지를 꺼내고 메시지 처리함수로 보낸다. 메세지 처리 - 메시지를 받아 반응 윈도우 프로그램의 기본구조 메인부분에서 윈도우 클래스를 생성 및 등록, 등록된 윈도우 클래스를 기반으로 윈도우 생성 윈도우에서 발생한 메시지는 메시지 큐에 저장되고 메시지 처리 부분이 하나씩 처리 메시지 처리부분은 처리할 메시지에 대해서만..

Computer/WINAPI 32 2023.01.17

투상변환과 뷰포트변환

투상(Projection) 투상(Projection), 가시변환(Viewing Transformation) - 모델좌표계, 전역좌표계, 시점좌표계를 순차적으로 거친 다각형 정점 좌표를 2차원 투상면(View Plane)으로 사상시키는 과정 정사투상 원근투상 GL의 투상변환(Projection Transformation) void glGetFloatv(GLenum pname, GLfloat* params); - 현 투상행렬 값을 검색하여 params배열로 저장 GL의 직교투영 일반적인 직교투영( 정규화 변환 - Normalization Transformation) void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdou..

5. 연산자 다중정의

연산자 함수 연산자를 이용하듯 호출할 수 있는 메서드 산술 연산자 operator int () - 형 변환 연산자 a operator +(const a &b) - 덧셈 연산자 a& operator=(const a &b) - 단순 대입 연산자 대입 연산자 = 복합 대입 연산자 += 배열 연산자 [] 관계 연산자 ==, ≠ 보통 strcmp 로 구현 단항 증감 연산자 ++, -- 전위 연산자 ++a - 바로 return 증가한 뒤 그 값을 리턴 후위 연산자 a++ - 값을 증가시키기전 백업 후 증가. 백업 값을 리턴

언어/C++ 2023.01.17

4. 복사 생성자 & 임시객체

복사 생성자 객체의 복사본을 생성할때 호출되는 생성자 복사될 원본에 const를 붙여서 원본이 손상되는 일 방지 깊은 복사 , 얕은 복사 깊은 복사 - 복사에 의해 두개의 값 생성 얕은 복사 - 대상의 값은 하나 접근 포인터만 2개 얕은 복사의 경우 이미 삭제된 메모리를 한번 더 삭제하려 하면 오류 발생 대입 연산자 단순 대입 → 얕은 복사 실행 대입 연산자 다중정의로 깊은 복사 수행하도록 작성 변환 생성자 explicit 예약어로 차단 가능 이름없는 임시 객체 객체를 return 하는 경우 임시 객체가 복사생성자로 생겼다 사라짐 r-value 참조 연산에 따라 생성된 임시객체 기본 자료형 말고, 클래스에 적용될 때 필요 이동 시맨틱 이동 생성자 + 이동 대입 연산자

언어/C++ 2023.01.17

모델 변환과 시점 변환

좌표계 3차원 물체의 표현 메쉬 표현 벡터 공간 주어진 벡터로부터 파생되는 모든 벡터의 집합 어파인 공간 점을 마치 벡터의 동족처럼 취급함으로써 벡터공간을 확장한 것 좌표축 / 좌표계 기저 벡터끼리는 선형 독립이여야 한다 차원 - 점의 위치를 표현하기 위한 기저 벡터의 수 좌표 - 각각의 기저 벡터에 곱해지는 계수 좌표계 - 원점과 기저 벡터로 구성되는 프레임 동차 좌표 기하변환 기하변환 물체의 이동, 회전, 크기조절 작업 Translation Rotaion 하나의 객체를 x, y, z축 주위로 각각 ∮라디안만큼 회전시킨다. Scaling 균등, 차등이 존재 쉬어 변환 복합변환 효율을 높이기 위함 Reflection 특정 좌표 부호를 반대로 한다 구조 왜곡(Structure Deforming) 테이퍼링(..

3. 클래스

객체 지향 프로그래밍 클래스 기본 문법 생성자 / 소멸자 생성자는 다중정의 가능 소멸자는 불가능 만들어놓지 않더라도 컴파일러가 디폴트 생성자, 소멸자를 만들어 놓음 접근 제어 지시자 클래스 - 기본 Private 구조체 - 기본 Public 전역변수로 선언한 클래스의 생성자는 main보다 먼저 호출 동적 객체의 생성과 소멸 new[]로 생성한 것은 delete[]로 삭제해야 한다 ( 안할시 메모리 릭 ) 참조 형식 멤버 초기화 참조자는 선언과 동시에 초기화 해야한다. 그래서 생성자 초기화 목록을 써야한다. 생성자 다중 정의 C++11 부터 생성자 위임 가능 생성자 위임 - 생성자 초기화 목록에서 다른 생성자 추가로 호출 같은일을 하는 코드가 여러번 있을 필요 X 명시적 디폴트 생성자 선언과 정의를 한번에..

언어/C++ 2023.01.16

2. C++ 함수와 네임스페이스

디폴트 매개변수 호출자만 보고 함수 원형 추측 불가 반드시 오른쪽 매개변수부터 기술 함수 다중정의 오버로딩( 함수의 매개변수가 달라지는 등 ) 다형성을 제공한다. 함수 템플릿 오버로딩 VS 함수 템플릿 오버로딩 - 유지보수 측면에서 문제. 불필요한 코드 작성시 메모리 낭비. 함수 템플릿 - 컴파일러가 생성. 컴파일 시간 UP 인라인 함수 함수 호출로 인한 오버헤드 극복 오버헤드 - 스택메모리 UP ,매개변수 때문에 메모리 복사 최적화 옵션을 켜두면 컴파일러가 알아서 결정해준다. 네임스페이스 협업중, 다른 개발자와 변수명이 겹치는 문제 해결 using 선언 자주 사용하는 네임스페이스 생략 네임 스페이스 중첩 네임 스페이스 안에 또 다른 네임스페이스 속할 수 있다. A::B::C 와 A::D 이런식으로 구별..

언어/C++ 2023.01.16

1. C와 C++ 차이

C++ 객체지향 프로그래밍 C++에서는 사용자 정의 헤더가 아닌, 표준 헤더들은 .h 생략 _tmain은 유니코드를 지원하기 위해 재선언 됨 인스턴스 변수와 같은 의미 ex) int a → int 자료형에 대한 인스턴스 a 자료형 C와 기본적으로 같다 auto, decltype(expr) 추가 auto 초기값 형식에 맞추어 선언하는 인스턴스 형식이 자동으로 결정 범위 기반 for문에서 활용 컴파일 시점에 항을 보고 변수의 타입을 결정. 그래서 초기화가 의무적이다. 메모리 동적 할당 new와 malloc 차이(메모리 크기 지정 안해도 됨) new[]로 생성한건 delete[]로 삭제 (동적 할당 객체와 객체의 배열은 구조가 다르기 때문에 메모리누수(Memory Leak)가 발생할 수 있다 참조자 형식 포인..

언어/C++ 2023.01.16
728x90