전체 글 89

상수버퍼 패딩

문제: Constant Buffer create에 실패함 시간에 흐름에 따라 흐르는 셰이더를 구현하기 위해서 시간을 상수버퍼에 넘겨줄 일이 생겼다. 이쪽에서 계속 FAILED해서 레지스터 번호를 바꿔도 보고 고민했는데 원인은 CreateBuffer가 16바이트를 요구한다는 것이다. 실제로 필요한 값은 4byte이므로 C++코드 쪽에서 12byte를 패딩해줌. 이제 텍스처가 흐르는것을 확인할 수 있다. HLSL 코드 상수버퍼

2020 이전/DirectX 2019.02.07

C++ std::function 콜백

개요 콜백: 현재 작업공간의 함수를 외부로 전달하여 외부에서 현재 작업공간의 함수를 호출하게 하는 법을 콜백이라고 부른다. 함수포인터와 콜백: 전역함수는 code영역에 저장된다. 이때 전역함수의 이름은 주소가 되기때문에 함수 포인터로 해당 함수의 이름을 넘겨주는 것으로 함수포인터에 등록이되고 함수포인터를 통해 호출이 가능한다. 즉 함수를 인자로 쓸 수 있다. 하지만 일반 함수포인터로는 클래스의 멤버함수를 등록할 수 없다(용법이 다르다). 하지만 std::function을 이용하면 클래스의 멤버함수를 콜백할 수 있다. 멤버함수포인터로 콜백 호출하는 예 일반함수포인터와는 다르게 멤버함수포인터를 외부에서 선언, 사용할때는 클래스 소속을 명시해야한다. 그리고 실제로 호출할 때는 클래스의 인스턴스를 통해서 호출해..

2020 이전/C++ 2019.02.06

Git 제대로 써보기2

1. 이미 존재하는 프로젝트를 내 로컬 repository에 가져오기git clone https://github.com/git/git.git git log --reverse 로그를 거꾸로 출력하기 git checkout [버전 주소(=hash 주소)] 2. 우리가 작업한 프로젝트를 github에 올리는 방법git remote add [별명] [ https://깃주소 ]git remote add [기본원격저장소라면 origin이라는 이름을 통상적으로 쓴다] [깃주소] 중간에 문제생겨서 git remote remove로 keukdongDX를 한뒤에 새로 git remote add origin 주소 써서 해결 올라간 것을 확인할 수 있다. 3. 파일 수정후 git push 파일 수정한 뒤 git commit ..

Git 제대로 써보기

오픈 튜토리얼스 : https://opentutorials.org/course/2708/15129 1. Git 설치 깃은 분산관리버전 시스템으로 코드가 충돌할때, 이전 버전으로 돌아가야할때에 막강한 장점을 발휘한다. 깃 설치: https://git-scm.com/download/win 2. 깃 저장소 설치 이미 만들고있는 코드가 있기때문에 해당 폴더에 git init으로 깃 저장소를 만든다 .git/ 이 만들어진것을 확인할 수 있다. .git은 버전관리 정보를 가지고 있기때문에 지우면 안된다!! 3. git add깃이 버전관리를 하기위해 파일 상태를 추적하게끔 하려면 해당 파일이나 폴더를 git에 add 해줘야한다.git status로 어떤 파일이 추적되고 있는지 확인할 수 있다. 4. 아차 잘못했다. ..

DirectX input 시스템

다이렉트X에서 지원해주는 input 라이브러리 dinput.h을 이용한다. fucntional은 c++11부터 추가된 표준 라이브러리이다. 전역함수 기준으로 함수명은 그 자체가 주소가 되므로 함수명을 쓰고 인자를 넘겨주면 함수가 호출이된다. 이것이 함수포인터의 개념인데 멤버함수를 함수포인터로 호출하기는 까다로웠다. c++11부터는 functional을 지원하여 같은 interface로 전역과 멤버함수에 접근 가능하게끔 해준다. 이를 통해 멤버클래스의 멤버함수를 bind하여 키가 입력되면 호출할 수 있도록 한다. 키를 얻어오는 방법에는 GetAsyncKeyState도 있지만 GetAsyncKeyState는 윈도우 메세지를 후킹하는 방법이라 시간 효율이 썩 좋지않아 DirectX Input을 사용한다. 다이..

2020 이전/DirectX 2019.01.22