일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Trie
- Dijkstra
- Hash
- 이진탐색
- SQL
- two pointer
- MYSQL
- Stored Procedure
- String
- binary search
- 다익스트라
- Two Points
- 그래프
- union find
- Brute Force
- 스토어드 프로시저
- DP
- Today
- Total
목록분류 전체보기 (418)
codingfarm
0. 개요 문자열을 입력받을때 쓰이는 에디트 "edit" 윈도우 클래스를 사용하며 아래의 스타일들을 지정 가능하다. 스타일 설명 ES_AUTOHSCROLL 수평 스크롤을 지원한다. ES_AUTOVSCROLL 여러줄 편집시 수직 스크롤을 지원한다. ES_LEFT 왼쪽 정렬한다. ES_CENTER 중앙 정렬한다. ES_RIGHT 오른쪽 정렬한다. ES_LOWERCASE 소문자로 변환하여 표시한다. ES_UPPERCASE 대문자로 변환하여 표시한다. ES_MULTILINE 여러줄을 편집할 수 있도록 한다. ES_NOHIDESEL 포커스를 잃더라도 선택된 영역을 표시한다. ES_READONLY 읽기전용으로 만들어 편집을 금지한다. 자세한 설명은 14장에서 진행 에디트는 자신에게 발생한 변화에 대해 부모 윈도우에..
0. 개요 "button" 윈도우 클래스에 BS_RADIOBUTTON, BS_AUTORADIOBUTTON 둘 중 하나의 스타일을 지정하면 라디오 버튼이 된다. 체크 버튼은 하나의 속성에 대한 참/거짓 속성만을 가지는 반면 라디오 버튼은 그룹에 속한 여러개의 버튼 중 하나만 선택가능하다. 라디오 버튼의 그룹을 구성하는 방법 그룹을 이루는 첫번째 라디오 버튼에만 WS_GROUP 스타일을 주고 나머지 라디오 버튼은 WS_GROUP 스타일을 주지 않으면 된다. 그룹 박스 컨트롤 : 어떤 라디오 버튼들이 같은 그룹에 속하는지 나타내기 위해 사용되는 오브젝트. 그룹 박스는 BS_GROUPBOX 스타일을 가지는 버튼의 일종이지만 화면으로 보여지기만 할 뿐 사용자의 입력을 받아들이거나 어떤 기능을 가지는 것은 아니다...
0. 개요 CreateWindow 함수를 사용하여 버튼 컨트롤 생성시 3번째 매개변수인 dwStyle 를 통해서 버튼의 스타일을 설정할 수 있다. 스타일 속성 BS_PUSHBUTTON 푸시 버튼 BS_DEFPUSHBUTTON 디폴트 푸시 버튼 BS_CHECKBOX 체크 박스 BS_3STATE 3가지 상태를 가지는 체크 박스 BS_AUTOCHECKBOX 자동 체크 박스 BS_AUTO3STATE 3가지 상태를 가지는 자동 체크 박스 BS_RADIOBUTTON 라디오 버튼 BS_GROUPBOX 그룹 박스 푸시버튼은 앞서 살펴보았다. 여기서는 체크박스를 살펴보겠다. 위표에서 보듯이 체크박스는 스타일에 따라 4가지가 존재한다. 3가지 상태의 경우 선택, 비선택 이외에 grayed라는 상태를 의미하는데, 아마 한번..
1. 버튼 CreateWindow를 함수의 원형을 다시 살펴본다. 1 2 3 4 5 6 7 8 9 10 11 12 13 void CreateWindowW( [in, optional] lpClassName, [in, optional] lpWindowName, [in] dwStyle, [in] x, [in] y, [in] nWidth, [in] nHeight, [in, optional] hWndParent, [in, optional] hMenu, [in, optional] hInstance, [in, optional] lpParam ); cs 우리는 윈도우를 생성하기 위해 첫번째 매개변수인 lpClassName에 registerehls WNDCLASS인스턴스의 lpszClassName 필드에 설정했던 문자열..
0. 개요 컨트롤 정의 : 사용자와 인터페이스를 이루는 입,출력 도구 도스나 콘솔환경의 getch, scanf 등의 함수라 볼 수 있음 대표적인 표준 컨트롤러들 버튼, 에디트, 리스트 박스, 콤보 박스, 스크롤 바, 스태틱 컨트롤은 대화상자의 차일드 윈도우로 존재한다. 생성방법 윈도우 : WNDCLASS 형의 구조체를 정의, RegisterClass 함수로 등록, CreateWindow 함수로 생성 컨트롤 : 부팅시 OS에 의해 미리 등록되는 WNDCLASS 구조체를 사용한다. 즉, Register 할 필요없이 CreateWindow 함수를 호출하여 생성 컨트롤을 위한 윈도우 클래스의 종류 윈도우 클래스 컨트롤 button 버튼, 체크, 라디오 static 텍스트 scrollbar 스크롤 바 edit 에..
0. 개요 폰트도 펜이나 브러쉬처럼 GDI 오브젝트이다. 폰트 오브젝트를 만들고 DC로 전송한 후 문자열을 출력하면, DC에 선택된 폰트를 사용하여 문자열이 출력된다. 1. CreateFont 폰트의 생성에 쓰이는 함수 반환되는 핸들을 HFONT형의 변수에 대입한다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 HFONT CreateFontW( [in] int cHeight, [in] int cWidth, [in] int cEscapement, [in] int cOrientation, [in] int cWeight, [in] DWORD bItalic, [in] DWORD bUnderline, [in] DWORD bStrikeOut, [in] DWORD iCharSet, [in] D..
0. GPGPU(범용 GPU, General Purpose GPU) 정의 : 대규모 병렬 처리에 적합한 GPU를 비 그래픽 분야에 응용하는것 장점 : 많은양의 원소에 비슷한 연산을 병렬적으로 처리하는데 적합 ex : 화면에 그려지는 픽셀 단편(pixel fragment), 파티클 시스템(particle system) 단점 : 그래픽 연산과는 달리 GPU의 연산 결과를 다시 CPU로 보내야함 GPU를 통한 연산 속도가 단점을 충분히 보완 다중처리기(Multiprocessor) GPU의 병렬처리를 수행하기 위한 장치 다중처리기는 하나의 스레드를 수행하기 위한 CUDA 코어를 32개 가진다. NVIDIA의 Fermi 아키텍처는 다중처리기를 16개 까지 지원한다. 즉, 최대 512개의 CUDA 코어를 지원한다...
0. 개요 용도 : 특정 픽셀 단편(pixel fragment)들이 back buffer에 기록되지 못하게 한다. 실제 판화를 만들때 쓰이는 스텐실과 같은 역할 depth buffer에도 기록하지 못하게 함 stencil buffer는 back buffer 및 depth buffer와 해상도가 같다 stencil buffer의 $ij$번째 픽셀은 back buffer나 depth buffer의 $ij$번째 픽셀과 대응된다 stencil buffer를 지정 하면 그 버퍼는 depth buffer에 부착된다.(즉, 이후의 작업에서 서로 연관된다) D3D12_DEPTH_STENCIL_DESC 구조체를 채우고 이것을 PSO의 D3D12_GRAPHICS_PIPELINE_STATE_DESC::DepthStencil..
혼합 현재 pipeline에서 래스터화하는 픽셀(PS에서 출력된 픽셀) 이전 pipeline결과 backbuffer에 저장된 pixel 위 2가지 자원을 섞는 기법 주로 반투명 물체의 렌더링에 사용된다. 목표 혼합의 작동 방식과 Direct3D에서 혼합을 사용하는 법을 이해 Direct3D가 지원하는 여러 혼합모드를 배운다. 기본 도형의 투명도를 알파 성분으로 제어하는 법을 파악한다. HLSL의 clip 함수를 이용ㅇ하여 한 픽셀이 후면 버퍼에 아예 그려지지 않게 만드는 법을 배운다. 1. 혼합공식 혼합 : PS에서 출력된 원본 픽셀($C_{src}$)과 이미 back buffer에 저장되어 있는 대상 픽셀($C_{dst}$)의 색상을 혼합하는것 $C_{src}$ : 현재 래스터화 중인 $ij$ 번째 픽..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 // Default.hlsl //*************************************************************************************** // colo..
학습목표 Pixel Shader에서 texture의 표본을 추출 해 pixel의 색상으로 쓸 수 있도록 texture를 shader resource로 binding하여 쓰는 방식을 알아본다. 버퍼 및 텍스처에 대해 배울때 정리한 바 있지만 여기서 다시한번 상세히 설펴본다 텍스처링은 크게 3가지 요소를 통해 이루어진다. 텍스처 자원 텍스처 필터링 좌표 지정 모드 이 중 텍스처 필터링과 좌표 지정 모드에 대한 정보가 표본 추출기 객체에 묶이게 된다. 1. 텍스처(Texture) D3D12_RESOURCE_DESC::Dimension이 D3D12_RESOURCE_DIMENSION_TEXTURE2D 인 IDTD12RESOURCE 로 대표되는 2차원 텍스처 객체 다양한 종류의 data를 담기 위한 저장공간 픽셀 ..
0. 소개 world 좌표계를 기준으로 주어지는 오브젝트들을 화면에 수월하게 그리기 위해선 카메라의 좌표를 기준으로 표현한 후, 화면에 출력하기 위해 view port 좌표계로 다시한번 변환할 수 있어야 한다. 이를 위해 좌표변환에 대해 알아야 한다. 1. 선형 변환 정의 : $\mathbb R^n$에 속하는 임의의 벡터$u$, $v$와 스칼라 $c$에 대하여 1) $T(u+v) = T(u) + T(v)$ 2) $T(cu) = cT(u)$ 위 2개 조건을 만족하는 변환$T: \mathbb R^n \rightarrow \mathbb R^m$ 을 선형변환 이라 한다. 즉, 선형변환 $T$는 $$T(c_1v_1+c_2v_2) = c_1T(v_1) +c_2T(v_2)$$ 위 등식을 만족한다. 1-1. 행렬 표현..
visual studio 2019에서 C++ 프로젝트를 빌드했을때 아래와 같은 에러가 발생 C2664 에러가 발생한 코드 1 HANDLE eventHandle = CreateEventEx(nullptr, false, false, EVENT_ALL_ACCESS); cs C2102 에러가 발생한 코드 1 2 mCommandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(mDepthStencilBuffer.Get(), D3D12_RESOURCE_STATE_COMMON, D3D12_RESOURCE_STATE_DEPTH_WRITE)); cs 다른 환경에서는 잘 빌드되던 프로젝트가 갑자기 안된다. 첫번째 에러의 경우 문자집합 문제때문이며 두번째 에러는..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 12..
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816..
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 // color.hlsl struct VertexIn { float3 PosL : POSITION; float4 Color : COLOR; }; struct VertexOut { float4 PosH : SV_POSITION; float4 Color : COLOR; }; VertexOut VS(VertexIn vin) { VertexOut vout = (VertexOut)0; // Transform to homogeneous clip space. vout.PosH = float4(vin.PosL, 1.0f); // Just pass vertex col..
버퍼 : shader 프로그램에서 참조하는 자료를 담는 GPU 자원(ID3D12Resource)의 예 버퍼의 종류 : 텍스처, 기타 버퍼 자원등 0. 상수 버퍼(Constant Buffer) 정의 : shader가 참조하기 상수 data를 담기 위한 저장 공간 특징 잦은 수정이 필요 default heap이 아닌 upload heap에 만드는것이 이상적 크기가 하드웨어 최소 할당 크기(256 byte)의 배수여야한다. 1. 상수 버퍼 생성 Create Committed Resource 함수로 생성, ID3D12Resource 인스턴스에 할당 2. Data Upload map 함수로 매핑한후 data copy를 해주고, unmap을 진행해준다 3. 상수 버퍼 서술자 D3D12_DESCRIPTOR_HEAP_..
0. 개요 단순히 정점버퍼에 대해 뿐만 아니라, GPU에서 이를 활용하기 위한 여러가지 작업에 대해서도 알아보겠다. vertex buffer : GPU가 접근가능한 버퍼에 저장된 정점정보 정점 버퍼 및 뷰의 생성 앞서 배웠던 리소스의 생성과정과 동일하되. 추가적으로 해야할 작업들이 더있다. 1. 커스텀 정점형식 정의 Vertex 구조체를 정의한다. 입력 배치 서술을 작성한다 2. 버퍼 생성 D3D12_RESOURCE_DESC 구조체를 정의하여 생성될 자원에 대해 서술한다 D3D12_HEAP_PROPERTIES 구조체를 정의하여 자원이 저장될 heap에 대해 서술한다 D3D12_CLEAR_VALUE 구조체를 정의하여 리소스를 초기화할 값을 결정한다 ID3D12Device::CreateCommittedRes..
모니터의 픽셀들이 무한히 작지는 않기 때문에, 모니터 화면에 임의의 선을 완벽하게 나타내는것은 불가능하다. 선을 픽셀들의 배열로 근사할 때 생기는, 계단현상이라고도 하는 앨리어싱(aliasing)의 예가 아래그림에 나타난다. 출처 : https://m.blog.naver.com/PostView.nhn?blogId=rkalstn2&logNo=30187944993&proxyReferer=https:%2F%2Fwww.google.com%2F 위와같은 픽셀을 제거하기 위한 앨리어싱 제거(antialiasing) 기법들이 존재하며, 이를 통해 아래와 같은 개선된 효과를 얻을 수 있다. 출처 : https://m.blog.naver.com/PostView.nhn?blogId=rkalstn2&logNo=3018794..