프로그래밍 282

전문가를 위한 C++ 4판 CHAPTER 5

4챕터 주요 내용 요약  코드 재사용 전략에서 중요하게 볼 것은 기능과 제약사항을 파학하는 것이다.이를 위해서는 코드에 대한 문서와 공개된 인터페이스 또는 API부터 살펴보는 것이 좋다. 라이브러리를 선저할 때 주의해야할 사항 멀티스레드 프로그램에서 사용해도 안전한지 파악한다.라이브러리를 사용하는 코드에 특별히 컴파일러에 설정해야 할 사항이 있는지, 그렇다면 프로젝트 전체에 적용해도 문제가 없는지 확인한다.사용할 라이브러리나 프레임워크에서 의존하는 라이브러리가 있는지 확인한다. 추가적으로 라이브러리에 따라 다음과 같이 좀 더 구체적인 특성을 확인해아 할 수 있다. 초기화나 종료 시 반드시 수행할 작업이 있는지 확인클래스를 상속할 때 어떤 생성자를 호출해야 하고, 어떤 가상 메서드를 오버라이드해야 하는지 ..

취미/개발서적 2024.10.10

Tag를 활용한 Input 값 받아오기

player character class에다음과 같은 함수를 제작해주었다.해당 함수를 제작하기 전에,넣어줄 태그를 미리 다음과 같이 만들어두었다.  이후 플레이어 캐릭터 cpp에서 다음과 같이인력 값에 맞게 제작한 함수를 바인딩 해주었다.  마지막은 gas와 관련되었기 때문에,각 직업에 맞는 gasComponent에똑같은 GASInput함수 작업을 해준다. 현재 제작하고 있는 HeroCharacter는 전사이다.따라서 warrior직업에 맞는 GASComponent에 해당 함수를 제작한 것이다. 이렇게되면 HeroCharacter.cpp에서는 직접적으로 함수를 구현하기보단,해당 GAS를 통해서 구현하여 각 직업에 맞는GASComponent를 불러와 작업을 수행할 수 있다.(코드의 재사용성 多)GetAct..

[백준 실버5] 수들의 합5 2018

https://www.acmicpc.net/problem/2018   투포인터 쓰기처음에 무지성 포문 생각했는데조금 생각해보니 포문으론 안되는 걸 알았다.  #include #include #include #include #include using namespace std;int main(void){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, count = 1, startIdx = 1, endIdx = 1, sum = 1; cin >> n; while (endIdx != n) { if (sum == n) { count++; endId..

DX11 HongLap Part2 - 2차원 변환(VertexShader작업)

일반적으로 우리가 머리 속으로 생각하는 형상을 그래픽으로 표현한 것을 모델이라고 한다.이러한 것을 3차원으로 표현하기 위해 우리는 메쉬라는 작은 삼각형을 이용해서 모델을 만든다. 그렇다면 이번에는 뭘 만드는 것이 중점이냐면,2차원 환경에서 삼각형으로 이루어진 물체를 시계 방향과 반시계 방향으로 회전시키고비율을 줄여보고 늘려볼 수 있다.또한 중점을 중심으로 회전하는 것과 자기 자신을 회전하는 것 등이동과 관련에 대한 실습을 해보는 것이 해당 강의의 목표이다.   1. 모델의 이동 모델을 이동시키기 위해서는 각 정점의 현 위치에서 이동시키고자 하는 거리까지 더해주면 된다.  2. 모델의 회전 2차원 회전에서는 어떤 점에 대해서 회전하는 지가 중요하고3차원 회전에서는 어떤 축에 대해서 회전하는 지가 중요하다...

그래픽스/DX11 2024.10.03

DX11 HongLap - 원 그리기

원은 여러 개의 삼각형을 쪼개어 만든다. 얘를 들어 삼각형을 그린다고 했을 땐,삼각형0은 vertex 0 2 1삼각형1은 vertex 0 3 2...이런 식으로 사용할 것이다. 이럴 때 vertex의 순서가 중요하다.해당 엔진에서는 Vertex 순서가 시계 방향으로 가면 화면에 그려지지만,반시계 방향으로 그린다면 화면에 제대로 그려지지 않는다. 이러한 방향은 사실 원하는 대로 바꿀 수 있다.하지만, dx에서는 전통적으로 시계 방향으로 렌더하는 것이 앞면이라고 여긴다. 이러한 삼각형을 원처럼 보이도록 여러개를 쪼개어,sin과 cos을 이용하여 애둘러쌓아 둔다면원처럼 보인다. 이러한 방식으로 원을 그리면 모든 삼각형이 0번을 공유한다.하지만 마지막 삼각형은 1번 정점으로 다시 돌아오기 때문에다음과 같이 예외..

그래픽스/DX11 2024.10.02

퐁라이팅

lighting은 물체와 빛 사이의 상호작용을 말한다. 사실적인 그래픽을 위해서 lighting이 매우 중요하다. 이러한 linghting 기법 중 하나인 퐁라이팅은 빛을 반사하는 것을 ambient, diffuse, specular, emissive 4가지로 나누어서 표현한다.diffuse는 난반사를 의미하며, 광원으로부터, 광원으로부터 점P까지의 벡터를 l, (normal vector 법선 벡터는 해당 직선이나 평면에서 수직인 벡터를 말한다) 점 P의 normal을 n으로 표현한다. 두 벡터 사이의 각이 작으면 작을수록 점 P는 더 많은 조명을 받게 될 것이다. 점 P로 들어오는 빛의 양은 두 벡터의 내적 값이라고 정의할 수 있다. 즉, 조명의 위치에 따라서 표면이 얼마나 밝아질 지를 정할 수 있다...

그래픽스/DX11 2024.09.30

힙 메모리 영역 특징

사용자가 메모리를 관리해야하는 영역이다.이러한 메모리 관리를 생명주기 관리라고도 한다. 힙은  동적으로 메모리를 관리하는 영역이다.즉 따라서 힙은 크기가 유동적이다.  지우는 건 빠른데 할당하는 건 스택보다 느리다.힙 메모리에 할당과 해제가 잦으면 메모리 단편화의 문제가 발생할 수 있다.

* const 와 reference

레퍼런스도 이제 어셈수준에서는 포인터와 똑같이 작동한다. c는 어셈블리어를 제외하면,가장 기계어와 가까운 고급언어이다. c에 없는 기능이 어떠한 언어에 추가되었다면,이는 사용자의 편의성에 의해 고급 (엔지니어 or) 프로그래머가 제작한 것이다. 그렇다면 c에 없는 c++에 있는 레퍼런스를 만드려 한다면 어떻게 만드는 것이 좋은가? * const 를 쓰면 된다. * const는 선언과 동시에 초기화해줘야하며,실제로 레퍼런스와 * const의 초기화 오류는 똑같이 작동된다.  다음과 같이 초기화 한 후에, 값을 바꿀 수 없다는 점, 포인터로 해당 기능을 만들 수 있다는 점은* const를 쓰면 C++의 레퍼런스와 같이 사용할 수 있다.

TSubclassOf와 TSoftObjectPtr의 차이점, 그리고 FSoftObjectPaths

비동기 애셋 로딩에 사용되는 TSoftObjectPtr, FSoftObjectPaths  FSoftObjectPaths 와 TSoftObjectPtr는 아티스트 혹은 디자이너가 하드 포인터와 같은UI를 사용해서 특정 애셋에 대한 레퍼런스를 만들되, 항상 로드되지 않도록 사용하기 위한 것이다.(= 좀 더 가볍게 쓰기 위한 것) FSoftObjectPaths는 UObject* 프로퍼티와 비슷하게 쓰는 것이고TSoftObjectPtr은 기본적으로 FSoftObjectPaths 를 감싸는 TWeakObjectPtr입니다.  TSubclassOf와 TSoftObjectPtr의 차이점 TSubclassOf와 TSoftObjectPtr는 즉UE에서 애셋과 클래스를 참조하는 데 사용되는 두 가지 서로 다른 방법입니다...

UE5 2024.09.26