프로그래밍 공부

프로그래밍 700

카테고리 설명
  • DirectX의 3D연산에서는 대부분 행렬연산을 사용한다. Local좌표와 World좌표로 객체를 움직이기 위해 행렬연산을 사용하는데, 4X4 행렬을 이용해서 연산하게되면 데이터값의 연산이 빠르게 이루어지고 쉽게 판별할 수 있기 때문이다. 어떠한 Vertex의 위치좌표를 원하는대로 변경하는 함수를 만들어보자. 위와같은 방식의 함수들을 제작하여 입력된 객체를 이동시키거나, 조절하거나, 회전시키는것이 목표이다. #pragma once class Vector3 { public: Vector3(float x = 0.0f, float y = 0.0f, float z = 0.0f) : value(XMVectorSet(x, y, z, 0)) {} Vector3(Float3 value) : value(XMLoadFlo..

  • 함수에 전달된 인수는 원본 데이터에 대한 참조(레퍼런스) 로 처리된다. 따라서 함수 내에서 인수를 수정하면 호출자에게도 영향을 미치게 된다. 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번행렬의 열이 같지 않으면 행렬연산을 진행할 수 없다. 반대로 진행할때도 마찬가지로 ..

  • 입력된 행렬값을 그대로 돌려주는 행렬을 의미한다. 컴퓨터 공학쪽에서는 Float3같은 XYZ축 데이터를 행렬로 변환할때 주로 이용한다. 예를들면. X축의 위치이동에 어느정도를 더할지 행렬로 바꾸려면 엄청 애매해지는데. 그냥 단위행렬에 이용되는 위치값에 더해버리면 X축의 위치이동에 사용할 수 있다.

  • Device까지 나누었으니, 이제 Buffer와 Shader를 나누어야 한다. Buffer는 각각 VertexBuffer, IndexBuffer의 각 객체에 사용하는 버텍스와 버텍스 잇는 순서 Buffer로 두개. Shader상수 데이터를 기입하기 위한 ConstantBuffer 한개. ViewPort 변환을 위한 CamaraMatrix용 Buffer 한개. 로. 총 5개의 버퍼가 사용된다. 여기서. Shader상수 데이터가 여러개가 된다면 Buffer 또한 임의의 개수만큼 늘어날 수 있다. Shader는. Vertex의 Color값이 들어가는 VertexShader와 해당 위치좌표의 Pixelcolor값을 결정할 PixelShader로 두개의 Shader가 기입된다. 대강 위와같은 구조로 Shader와..