2010-07-28 7 views
2

셰이프를 그리는 응용 프로그램을 만들고 있는데 다른 곳에서 그리려면 카메라를 사용합니다. 기본적으로 4x3 사각형이 있고 glgetpixels를 사용하여 1024x768 크기의 모든 픽셀을 얻으려고한다고 가정 할 때 모니터가 해당 해상도를 지원하지 않을 수 있습니다. 모니터보다 더 큰 것을 어떻게 렌더링 할 수 있습니까? 이렇게하면 사용자가 임의의 해상도로 도형의 그림을 저장할 수있게됩니다. glviewport를 사용하면 프레임을 넘어서 확장 할 수 있습니까? 그렇다면 glgetpixels를 사용할 수 있습니까?OpenGL에서이 작업을 수행 할 수 있습니까?

감사

+0

Windows에서이 작업을 수행했습니다. IIRC, 기본적으로 렌더링 컨텍스트 (RC)를 오프 스크린 비트 맵 (임의의 크기)으로 설정합니다. –

답변

3

FBO (프레임 버퍼 객체)를 정의하고 텍스처를 첨부하여 RTT (렌더링 - 투 - 텍스처)를 할 수 있습니다. glBindFramebufferEXT()를 확인하십시오.

씬을 그린 후에는 glGetTexImage()를 실행하고 픽셀을 검색 할 수 있습니다.

RTT는 잘 정의되고 문서화 된 기술입니다.

2

내가는 OpenGL 개발자 모르지만 당신은 확실히 화면보다 큰 크기를 가질 수있는 텍스처로 렌더링을 수행 할 수 있습니다.

Google 검색이 날이 준, 아마도 유용합니다 : http://developer.nvidia.com/attach/6725

2

이 철저한 대답은 아니지만 유용합니다. RTT, Render to Texture를하고 있습니다. 새로운 renderbuffer를 설정하고 렌더 타겟으로 설정 한 다음 glGetPixels를 사용하여 값을 가져옵니다. 렌더 버퍼를 만들 때 :

void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); 

화면의 크기와 일치시킬 필요가없는 크기를 설정할 수 있습니다. 바라기를 이것은 도움이된다!

0

실제로 달라집니다. 나는 FBO가 문제를 해결하지 못할 것이라고 생각한다.

3D 장면의 고해상도 버전을 만들려고합니다. 예를 들어 300dpi로 인쇄하는 것이 좋습니다. 아마도 최대 FBO 해상도 (괜찮은 그래픽 카드에서는 4096 * 4096) 이상이 필요할 것이므로 타일 렌더링을 사용해야합니다.

아이디어는

이 Mesa3d의 저자는이, TR 않는 좋은 라이브러리를 작성했습니다 (타일) 서브 이미지의 집합으로 최종 이미지를 렌더링하는 것입니다. 사용법은 매우 간단합니다.

관련 문제