프로그래밍 공부

프로그래밍 700

카테고리 설명
  • 색상 혼합 및 투명도 조절을 제어하기 위한 기술이다. 이런 연산은 2D및, 3D그래픽에서 색연산시 다양한 효과를 만들기 위해 사용된다. 다음은 블렌딩 기술에 대한 종류이다. Alpha 연산(Alpha Blending) 투명도(알파 채널)을 사용하여 픽셀의 색상을 혼합하는 연산이다. 픽셀의 알파값은 투명도를 나타내며, 알파값이 0에 가까울 수록 픽셀은 투명하고, 1에 가까울수록 불투명하다. 주로 블렌딩 모드에서 사용되며, 알파 블렌딩은 다른 픽셀과 혼합에 사용된다. 에디팅 연산(Additive Blending) 투명도를 고려하여 색상을 혼합하는 연산이다. 픽셀의 색상을 더해서 밝은 효과를 만들어낸다. 겹치는 두 색상이 더해짐으로 원래색상보다 더 밝아지게 된다. 주로 빛이나 불광 효과를 시뮬레이션 할때 사용..

  • Direct3D상에서의 ObjectColiision을 구현해보자. 충돌처리는 A객체와 B객채가 존재할 때, A객체와 B객체의 vertices가 겹치는 경우가 생길 경우, 충돌했다고 판정한다. 각 vertice를 검사할 수 없음으로. 최외각선 또는 지름을 기준으로 측정하게 된다. 우선 3차원상의 충돌처리를 구현 하기전, 2차원상의 충돌처리를 확인하고 3차원을 살펴보자. 원의 충돌처리 원은 충돌처리 상 가장 연산이 조금 들어가는 방법이다. 빨간색 이 A원, 초록색이 B원 이라고 할때, A->B의 스칼라값 > A반지름 + B반지름 위 항목이 true면 충돌하지 않음, false이면 충돌한다 라고 이해하면 된다. 같을경우 충돌로 처리하든 아니든 은 취향이다. 2차원상에서의 충돌처리가 이렇다면, 3차원상에서는 어..

  • DirectX에서 사용되는 3D그래픽을 2D화면에 투영하기 위한 변환행렬이다. Proejction행렬은 카메라의 시점, 시야각, 화면의 종횡비를 고려하여 3D좌표를 화면좌표로 변환하는데 사용되는데, 이러한 행렬은 원근투영, 직교투영의 두가지 유형으로 나뉜다. 원근 투영 (Perspective Projection) 3D공간의 객체를 화면에 투영할 때 원근감을 반영하는 투영방식이다. 멀리있는 객체가 작게 나타나고 가까이있는 객체가 크게 나타나는 효과를 가진다. 화면에서의 시야각(Fov)와 종횡비를 고려한다. 가까운 객체와 멀리 있는 객체는 깊이(Depth)를 고려하여 원근효과를 적용한다. DirectX에서는 D3DXatrixPerspectiveForLH 함수를 사용하여 행렬을 생성한다. D3DXatrixPe..

  • 머티리얼을 조정하면서 조정된 데이터를 TinyXML2로 저장하고, 로드해보자. TinyXml2는 데이터를 Xml형태로 내보내거나, Xml형태의 데이터를 읽어오는 C++의 라이브러리이다. 라이브러리리의 설치는 엄청 간단한데, https://github.com/leethomason/tinyxml2 GitHub - leethomason/tinyxml2: TinyXML2 is a simple, small, efficient, C++ XML parser that can be easily integrated into other p TinyXML2 is a simple, small, efficient, C++ XML parser that can be easily integrated into other programs..

  • 지금까지 작성했던 노말맵, 스펙컬맵 디퓨즈맵을 관리하는 ImGui를 작성해보자. 우선 머티리얼에서 데이터를 전부 관리함으로. Buffer를. MaterialBuffer를 따로 만들어주어야 할것이다. 전역에서 사용하는 MaterialBuffer을 작성하자. class MaterialBuffer : public ConstBuffer { public : struct Data { Float4 diffuse = { 1, 1, 1, 1 }; Float4 specular = { 1, 1, 1, 1 }; Float4 ambient = { 1, 1, 1, 1 }; float shininess = 24.0f; float hasNormalMap = 0; float padding[2]; }; public: MaterialBu..

  • 구체 Object를 생성해보자. 정20각형을 사용해 구체 Object를 생성할 수도 있고, 아니면 원을 깎아가면서 구체를 생성할 수 있다. 두가지 다 진행해보자. 원의 둘레를 돌면서 생성하기 대부분의 사람이 알고있는 원을 그려보자. 그 원의 중심을 기준으로 선을 한개 그리게되면. 중심점을 기준으로 양분해주는 선이 생길것이다. 이걸 중심선이 아니라 옆에서 바라보았을 때의 원 한개, 위에서 바라보았을 때의 원 한개로 생각해보자. 그러면 머리속으로 그려보았을 때 대강, 십자형태로 원이 두개가 겹쳐있는 모습이 떠오를것이다. 이제 이 원 두개를 계속해서 슬라이스하면서 돌려보자. 이것이 옆에서도, 위에서도 같이 생성되었다고 하면, 구체가 체크무늬를 구성한체로 생성된다고 이해하면 된다. 그림으로 그려보았다면, 이제 ..