2023/10 45
-
함수에 전달된 인수는 원본 데이터에 대한 참조(레퍼런스) 로 처리된다. 따라서 함수 내에서 인수를 수정하면 호출자에게도 영향을 미치게 된다. void modifyReference(int &x) { x = x * 2; } int main() { int num = 5; modifyReference(num); // num은 이제 10입니다. return 0; } 매개변수로 받아온 값을 수정하면 결과값 또한 바뀌는걸 볼 수 있다. 장점 메모리 효율 데이터를 복사하지 않고도 데이터 수정이 가능함으로 메모리 사용량을 절약할 수 있다. 성능 향상 데이터를 복사하지 않음으로 복사하는 과정을 생략할 수 있다. 단점 수정가능 함수 내에서 수정을 할때 호출자의 데이터가 수정될 수 있음으로 의도치 않은 데이터변경이 발생할 수..
-
함수에 의해 전달된 인수는 해당 함수에 복사된 값으로 처리된다. 따라서 함수 내에서 인수를 설정하거나 바꾸어도 호출된 매개변수에는 영향을 끼치지 않는다. void modifyValue(int x) { x = x * 2; } int main() { int num = 5; modifyValue(num); // num은 여전히 5입니다. return 0; } 위와같이 처리된다면, x의 값에는 변화가 이루어지지 않는다. 장점 예측가능한 변수 (Predictable Behavior) 함수에서 인수를 수정하더라도 호출자에 영향을 미치지 않기에 예측이 가능. 데이터 보호 호출자의 데이터를 보호하여 실수로 값이 변경되는걸 방지함. 단점 메모리 사용 크기가 큰 데이터 구조를 전달할 경우, 메모리 사용량이 증가할 수 있다..
-
행렬의 기초 이해 행렬 연산 자체는 매우 쉽게 이루어져있다. 말 그대로 1항과 2항의 곱을 행과 열로 수행한다 라고 이해하면 되는데. 가령. XY 행렬이 존재할때. 1번행렬이 파란색 2번행렬이 빨간색 이라고 하자. 그렇다면, 각각의 해당하는 가로줄과 세로줄을 곱해준뒤 더하면 된다. 잘 이해가 안간다면 밑의 이미지로 쉽게 이해하도록 설명해놓았으니 살펴보자. 노란색 이 결과물로 나타나는 결과값이다. 노란색의 위치에 나타나는 행렬은 위치좌표대로 연산하면 될것이다. 행렬연산의 유의점 이런 특성을 가진것이 행렬인데, 행렬곱을 실행할 수 없는 경우도 발생한다. 다음과 같은 예시를 살펴보자. 행렬연산을 진행할 때 1번 행렬의 행과 2번행렬의 열이 같지 않으면 행렬연산을 진행할 수 없다. 반대로 진행할때도 마찬가지로 ..
-
-
Device까지 나누었으니, 이제 Buffer와 Shader를 나누어야 한다. Buffer는 각각 VertexBuffer, IndexBuffer의 각 객체에 사용하는 버텍스와 버텍스 잇는 순서 Buffer로 두개. Shader상수 데이터를 기입하기 위한 ConstantBuffer 한개. ViewPort 변환을 위한 CamaraMatrix용 Buffer 한개. 로. 총 5개의 버퍼가 사용된다. 여기서. Shader상수 데이터가 여러개가 된다면 Buffer 또한 임의의 개수만큼 늘어날 수 있다. Shader는. Vertex의 Color값이 들어가는 VertexShader와 해당 위치좌표의 Pixelcolor값을 결정할 PixelShader로 두개의 Shader가 기입된다. 대강 위와같은 구조로 Shader와..
-
전에 만들었던 기본 예시파일을 기초적인 FrameWork로 나눈다. 휴일동안 직접 해봤는데 객체간 나누기가 너무 시간이 오래걸린다는걸 관과했다. 그래도 바로 다음날 수업에 Framework나누기를 해서 다행이라고 생각한다. 각 객체를 FrameWork로 나누기 위해서는 기초적인 객체 개념을 먼저 보아야 하는데, C에서는 struct로 나누다가. C++에 와서 Class라는 개념으로 바뀌었다. C C++ Struct 객체 함수 Class상속 상속 = 부모 -> 자식 상속관계로 이루어진다. 이러한 Class는 각 int나 char처럼. 객체로 다룰 수 있는데. 이를통해 포인터처럼 사용해서 class def() {}; 라고 한다면, def* CL = new def(); 이런식으로 동적할당을 진행해줄 수 있게 ..