2012-10-04 4 views
0

나는 DirectX11을 처음 접하고 학습했다. (저는 OpenGL 배경에서 왔습니다).directx 11에서 getBuffer()와 CreateRenderTargetView의 차이점은 무엇입니까?

I 나는 혼란과 정확히 다음 API 호출을 할 수와 그들 사이의 차이가 무엇 무엇을 이해하려고 노력 :

ID3D11Texture2D* pBackBuffer = NULL; 
hr = g_pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&pBackBuffer); 

hr = g_pd3dDevice->CreateRenderTargetView(pBackBuffer, NULL, &g_pRenderTargetView); 
pBackBuffer->Release(); 

GetBuffer 정말 무엇을 하는가는? CreateRenderTargetViewpBackBuffer을 어떻게 사용하나요? 또한 누군가가 설명하거나 설명 할 수있는 링크를 가르쳐 줄 수 있습니까 렌더 타겟보기? msdn doc은 나에게별로 의미가 없었습니다.

답변

1

내가 기억 하듯이 GetBuffer()은 장치가 사용하는 내부 백 버퍼에 대한 포인터를 반환합니다. 거기에서 대상으로 바인딩 할 수있는 RenderTarget을 만듭니다. 내가 기억하는 방법 pBackbuffer = glBindFramebuffer(GL_FRAMEBUFFER, 0);

이잖아 : 같은 그것의

생각합니다. (얼마 전에 dx11로 이것을했습니다.)

편집 * rendertargetviewframebuffer입니다. 그것은 당신이 읽고 쓸 수 있도록 바인딩 할 수있는 텍스처입니다.

+0

이렇게 올바르게 이해하면'getBuffer'는 실제 버퍼에 대한 포인터를 반환합니다. 'CreateRenderTargetView'는이 버퍼를 렌더링 파이프 라인에서 바인딩 된 렌더 타겟 (일명 Framebuffer)으로 만듭니다. 추 신 : RenderTargetView 다른 버퍼를 만들지 않습니다. – brainydexter

+2

예, int를 반환하는 대신 (예 : OpenGL 용량) 인터페이스를 만들어야합니다. 그들은 단지 멋진 이름으로 그것을 부르는 것을 좋아합니다! – Tordin

+0

하하, 그래 나는 더 동의 할 수 없었다! – brainydexter