프로그래밍 공부

프로그래밍 700

카테고리 설명
  • 멀티프로세스는 하나의 컴퓨터에서 여러개의 프로세스가 실행되는것 을 의미한다. 각 프로세스는 독립적인 메모리공간을 가지고 있어 서로 영향을 끼치지 않는다. 멀티프로세스, 멀티스레드, 스레드 간의 관계는 멀티 프로세스 > 멀티 스레드 > 스레드 간의 단위차이가 있다고 이해하면 된다. 멀티프로세스는 독립된 메모리 공간을 가지며, 서로간 영향을 끼치지 않는다. 그렇기에 독립메모리를 확보하기 위한 자원소모가 크다.

  • 스레드(Therad) 프로세스 내에서 실행되는 실행 단위를 의미한다. 각 프로세스는 최소한 하나의 스레드, 메인스레드를 가지고있다. 스레드는 각자 독립적인 레지스터 집합을 가지지만, 같은 프로세스 내의 스레드들은 같은 메모리공간을 공유한다. 그리하여, 같은 프로세스 내의 스레드간 통신이 간단해지며, 데이터 공유가 가능해진다. 멀티스레딩(Multithreading) 하나의 프로세스 내에서 여러 스레드가 동시에 실행되는것 을 의미한다. 이로써 프로세스는 여러 작업을 동시에 수행할 수 있게 된다. 멀티스레딩은 병렬성을 활용하여, 작업을 효율적으로 처리할 수 있다. 여러 스레드가 동시에 작업을 처리함으로 전체 시스템의 응답성과 성능을 향상시킬 수 있다. 멀티스레드 = 여러작업을 동시에 수행하는것. 스레드 = 이..

  • 다양한 쉐이더의 Bluer효과를 적용할것 이다. Buffer를 통해 필요한 데이터를 전달하며, RenderTarget을 사용해 이미지를 구축하고. 해당 이미지를 통해 뷰포트에 대한 이미지를 재처리하여. 다양한 효과를 적용한다. 전에 작성하였던 Sepia와 GrayScale을베이스로 나머지를 전개해 나갈것 이다. RenderTargetScene구현 #pragma once class RenderTargetScene : public Scene { public: RenderTargetScene(); ~RenderTargetScene(); // Scene을(를) 통해 상속됨 void Update() override; void PreRender() override; void Render() override; voi..

  • 우리가 카메라로 화면을 비추는것. 화면을 2D리소스로 활용할 수 있다. 이러한 RenderTarget은 화면 뷰에 대한 재처리작업을 통해 더 효율적으로 어둡게 만들거나, 색감을 전체적으로 조정하거나 하는데 사용한다. 외곽선처리또한가능하다. 원래 FrameWork에 추가하여 수정해보자. 우선, RenderTager과 DepthStencil을 정의해주는 함수를 작성한다. #pragma once // RenderTarget 클래스 정의 class RenderTarget { public: // 생성자: 너비와 높이를 매개변수로 받아 기본값으로 초기화 RenderTarget(UINT width = WIN_WIDTH, UINT height = WIN_HEIGHT); // 소멸자 ~RenderTarget(); // ..

  • Trail방식을 활용하면서, UV좌표를 수정하여 애니메이션이 2D형태로 출력되게 해보자. 쉐이더를 먼저 설정한다. #include "../VertexHeader.hlsli" #include "../PixelHeader.hlsli" struct PixelInput { float4 pos : SV_POSITION; float2 uv : UV; }; PixelInput VS(VertexUV input) { PixelInput output; output.pos = mul(input.pos, world); output.pos = mul(output.pos, view); output.pos = mul(output.pos, projection); output.uv = input.uv; return output; } ..

  • 공격 시스템중, 체인라이트닝을 만들것 이다. Trail시스템을 사용하여 표현할것 이다. 일단, 객체가 Monster를 따라다니는 방식을 정의하자. #pragma once class Trail : public GameObject { public: Trail(wstring imageFile, Transform* start, Transform* end, UINT width); ~Trail(); void Update(); void Render(); void SetSpeed(float speed) { this->speed = speed; } private: void CreateMesh(); private: Mesh* mesh; Transform* start, *end; UINT width; float speed ..