목록 전체보기 (198)
공부중
void D3D12HelloTexture::OnInit() { LoadPipeline(); LoadAssets(); } 저번 글에서는 LoadPipeline에 관해서 적었다. 이번 글에서는 LoadAssets안을 살펴보도록 하자. // Load the sample assets. void D3D12HelloTexture::LoadAssets() { // Create the root signature. { D3D12_FEATURE_DATA_ROOT_SIGNATURE featureData = {}; // This is the highest version the sample supports. //If CheckFeatureSupport succeeds, the HighestVersion returned will..
저번 글에서는 크게 바뀐점은 없었고 컬러값을 직접 지정해준것에 비해서 Texture의 값을 가지고 색상을 출력해 주기 때문에 이에 따른 값을 전달해주기 위한 Vertex의 color을 uv로 변경 및 텍스쳐 데이터를 저장하기위한 멤버 변수 선언 등등을 보았다. 이제 Init할때 어떤점이 다른지 살펴보자. 저번 글에서 적었다 싶이 pSample->OnInit( );의 내부를 살펴볼 예정이다. void D3D12HelloTexture::OnInit() { LoadPipeline(); LoadAssets(); } 저번 프로젝트와 다르지 않게 LoadPipeline과 LoadAssets를 콜해주고 끝난다. 먼저 LoadPipeline을 살펴보자. // Load the rendering pipeline depen..
이번 프로젝트는 위와같이 삼각형에 텍스쳐(Texture)를 입히는 프로젝트이다. 역시 이전 프로젝트와 겹치는 부분은 되도록 빠르게 넘어갈 예정이다. 이번에도 해당 프로젝트의 시작인 Main부분 부터 살펴보도록 하자.. #include "stdafx.h" #include "D3D12HelloTexture.h" _Use_decl_annotations_ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow) { D3D12HelloTexture sample(1280, 720, L"D3D12 Hello Texture"); return Win32Application::Run(&sample, hInstance, nCmdShow); } 특별히 다..
아오 근데 내 뇌는 존나 느리고 아오 허리도 존나 ..... ㅠㅜㅠㅜㅜㅠ 시부렁 힘내자 ㅠㅠㅠ
std::shared_ptr은 레퍼런스 카운팅 방식의 스마트 포인터로. 특정 주소를 가리키는 포인터변수가 얼마나 있느냐에 따라서 자동으로 삭제할지 결정해서 자동으로 메모리 해제하는 방식이다.(count가 0일때 메모리 할당 해제) 이 레퍼런스 카운팅 방식의 스마트 포인터 방식은 특정 조건(?)에 따라서 메모리 누수(memory leak)이 발생 할 수가 있는데. 그것에 관련된 글을 써보려고 한다 일단 테스트 하는 코드는 아래와 같다. #include #include struct MyStruct { std::shared_ptr foo; }; int main() { //_CrtSetBreakAlloc(153); auto obj1 = std::make_shared(); auto obj2 = std::make_..
코드는 아래와 같다. #include #include //shared_ptr , make_shared class MyClass { public: MyClass(int val_int = 0, double val_double = 0.0) : value_int(val_int), value_double(val_double) {}; ~MyClass() {}; private: int value_int; double value_double; }; int main() { /* 가능하다면 메모리 리소스를 처음으로 만들 때 make_shared 함수를 사용하여 shared_ptr을 만들것. make_shared는 예외 안전하고 동일한 호출을 사용하여 제어 블록 및 리소스에대한 메모리를 할당하고 생성 오버헤드가 줄어듭니다...
그러고보니 깜빡하고 셰이더 코드를 안적어 놓은것 같다. struct PSInput { float4 position : SV_POSITION; float4 color : COLOR; }; PSInput VSMain(float4 position : POSITION, float4 color : COLOR) { PSInput result; result.position = position; result.color = color; return result; } float4 PSMain(PSInput input) : SV_TARGET { return input.color; } shaders.hlsl 파일의 모든 내용이고 해당 파일 안에 VertexShader와 PixelShader가 같이 있다. 이전글 D3D12He..
// Main message handler for the sample. LRESULT CALLBACK Win32Application::WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { DXSample* pSample = reinterpret_cast(GetWindowLongPtr(hWnd, GWLP_USERDATA)); switch (message) { case WM_CREATE: { // Save the DXSample* passed in to CreateWindow. LPCREATESTRUCT pCreateStruct = reinterpret_cast(lParam); SetWindowLongPtr(hWnd, GWLP_USERDAT..