전체 글 115

[DirectX] 포함디렉토리, 라이브러리 디렉토리

대부분 외부 라이브러리 (DirectX) 에 대한 경로를 입력 할때 폴더 그대로 입력하면 링크 에러가 난다. 정확히 말하자면 어떨때는 나고 어떨때는 안나기도 한다. 하지만 된다고 할지라도 나중에 어떤 문제가 발생할지 모름으로 정확하게 해두는 것이 좋다. 만약 DirextX의 include 경로를 폴더경로 그대로인 C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include 라고 입력하면 링크문제가 생긴다. (F7을 눌러 현재 보이지 않는다 할지라도 나중을 위해 vs에서 직접경로를 선택하는 창을 띄워 C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Include 와 같은 %로 연결된 ..

DirectX 2021.12.24

[MFC] MAX_PATH

path(경로)를 얻기 위해, 변수 배열을 선언하고 그 크기를 MAX_PATH 를 해준다. TCHARszFullPath[MAX_PATH] = L""; MAX_PATH는 260으로 우리가 지정하는 경로의 최대범위는 MAX_PATH크기 내에서 설정이 가능하다. 드라이브면 폴더구분문자 파일 확장자 등을 포함하는 경로 전체 길이를 말한다. 경로의 이름은 260 이하로, 경로를 문자열 형태에서 배열로 저장하기 위한 수단이다.

MFC 2021.12.23

[MFC] MessageBoxW

윈도우즈는 멀티바이트코드와 유니코드를 지원한다. 문자열을 인자로 받는 api함수들은 멀티바이트 버전과 유니코드 버전이 따로 있다. MFC 메시지 박스 함수는 내부적으로 api 함수의 메시지 박스 함수를 사용한다. MessageBox 함수는 매크로 함수인데 멀티바이트 환경에서는 MessageBoxA함수가 되고, 유니코드 환경에서는 MessageBoxW함수가 된다. (문자열을 인자로 받는 APi 함수는 멀티바이트 함수이면 끝에 A가 붙고 유니코드 환경이면 w가 붙는다. ) 멀티바이트는 char로 선언된는 1바이트 문자 유니코드는 unsigned short로 선언되는 2바이트 문자이다. 프로젝트 환경을 바꿔주는 방법은 메뉴 - 프로젝트 - 속성 - 구성속성 - 일반 - 문자집합 - 멀티바이트 문자집합사용 을 ..

MFC 2021.12.22

[C++] 람다식

C++람다식 사용이유와 사용 방법 기본문법 [] () -> int {} [] : 캡쳐블록 ( 사용시 외부변수를 캡쳐해 람다의 몸통에서 사용가능하다.) () : 전달인자 -> 반환타입 {} : 함수 몸통 여기서 캡쳐블록 [] 와 전달인자. ()와 리턴 타입{}을 생략할 수 있다. 사용 이유 함수객체와 다르게 클래스 선언을 할 필요가 없다. 함수포인터와는 다르게 인라인화가 가능하다. 람다의 캡쳐부분 기본적으로 클래스의 멤버 변수를 람다의 바디 안에서 사용했다면, 이는 this->가 생략되어 있다. & : 모든 외부변수 참조 &, initialize : 모든 외부변수 참조 및 초기화 가능 = : 모든 외부변수 복사 ( =, intiailize : 모든 외부변수 복사 및 초기화 가능 [localVar] : 특정..

프로그래밍/C++ 2021.12.22

[DirectX] 벡터 3

벡터의 덧셈 연산을 하려면 벡터의 합을 해주는 함수를 이용 : D3DXVECTOR# * D#DXVec3Add(_inout D3DXVECTOR3 *pOut, _in const D3DXVECTOR# * pV1, _in const D3DXVECTOR# *pV2); ->헤더 D3dx9math.h 라이브러리 : D3dx9.lib 포함 벡터의 연산자 오버로딩을 이용 벡터의 뺄셈을 하려면 벡터에서의 부호는 방향은 반대고 크기는 같은 벡터를 의미 한다. 벡터의 뺼셈을 해주는 함수를 이용 : D3DXVec3Subtract(_inout D3DXVECTOR3 *pOut, _in const D3DXVECTOR# * pV1, _in const D3DXVECTOR# *pV2); 벡터는 공간상의 한 점을 나타낸다. 점을 옮기고 싶..

DirectX 2021.12.19

[DirectX] 벡터의 내적2

내적은 방향을 나란하게 맞춰서 곱해주는 것 벡터 v와 단위벡터 n이 주어졌을때 내적을 이용해서 p를 구하기. p = kn 을 만족하는 스칼라 k 가 존재한다. ||n||은 1이므로 ||p|| = ||kn|| = |k| ||n|| = |k| 이다. 삼각 함수 법칙을 이용하면 k = ||v||cosΘ 이다. 따라서 p = k n = (||v||cos Θ)n = (||v|| ||n|| cos Θ)n = ( v ● n ) n 이다. 특히 이공식에 따르면 k = v ● n 이다. 이는 p를 n에 대한 직교투영(정사영) 이라고 부른다. v를 하나의 힘으로 간주한다면 p는 힘v중에서 방향 n으로 작용하는 부분이라고 할수 있다. p = projn(v)라고 한다. 이와 비슷하게 벡터 w는 w = prepn(v) = v ..

DirectX 2021.12.19

[DirectX] 벡터의 내적

벡터의 크기와 방향에 대한 표현 : v = (2, 1) 라는 벡터가 있다. v와 - 1 /2 v 를 비교해보면 방향은 반대 크기는 절반 인 벡터를 나타낸다. 즉 벡터는 크기와 방향을 나타낼 수 있다. 벡터 : 벡터는 방향과 벡터의 길이를 구할떄 쓴다. 크기와 방향 그리고 위치값을 저장하기 위한 구조체로 사용한다. 벡터 2,2 는 위치가 아니고 방향을 의미한다. 벡터의 크기는 벡터의 길이이고 스칼라 값을 가진다. 벡터의 상등 : 크기와 방향이 같으면 같은 벡터이다. 즉, 벡터의 위치는 무관하다. 크기와 방향만 같으면 같은벡터. 벡터의 덧셈 뺄셈 : 벡터는 덧셈 뺄셈만 있다. 벡터의 덧셈 벡터의 뺄셈 두 벡터의 합은 한 벡터의 꼬리에 다른 벡터의 머리를 일치시켜준 것을 말한다. 두 벡터의 뺄셈은 v- u 는..

DirectX 2021.12.18

[DirectX] 기본 개념 이해하기 1

왼손좌표계 : 다이렉트 3차원 좌표계는 왼손좌표계 벡터와 스칼라 : 벡터 가속도나 속도 등의 크기와 방향을 정확히 표현할 수 있는 수치 스칼라 기압, 크기 등의 단일한 숫자로서 표기 정점(vertex) : 공간상의 위치에 해당 Q(x, y, z)가 정점이다. 폴리곤의 구성요소이다. 변환(transform) : 이동(transition), 회전(rotation), 크기(scale), 전단(shear) 변환이 있고, 모두 행렬로 표현 아핀변환(affine transform, 어파인 변환) : 이동, 회전, 전단만으로 이루어진 행렬 -> 시스템을 유지하는 특성이 있다. 행렬(matrix) : 주로 변환을 할때 행렬이라는 도구를 사용한다. 폴릭곤(polygon) : 3개의 버텍스가 모여서 만들어진 삼각형을 폴리..

DirectX 2021.12.18