2014-09-05 7 views
2

나는 16 비트 그레이 스케일 이미지를 가지고 있으며 그 위에 주석을 그려야합니다. 처음에 Direct 2d에서 시작하여 나중에 직접 2D에서 16 비트/채널을 렌더링 할 수 없음을 깨달았습니다OpenGl을 사용하여 48 비트 rgb 이미지에서 렌더링

나중에 Open Gl로 이동했는데 이제는 gl 지원 렌더링을 엽니 다. 16 비트/채널 이미지. 프레임 버퍼 객체에 대해서도 공부했다. mesa3d 라이브러리에 대해서도 공부했다.

답변

1

예, OpenGL에서는 컴포넌트 당 16 비트의 렌더링 타겟이 지원된다. 다음은 DX10 레벨 하드웨어를 지원하는 최신 버전 인 OpenGL 3.3 사양입니다.

사양 문서는 www.opengl.org에서 왼쪽 상단 모서리 근처의 "문서"메뉴에서 "OpenGL 레지스트리"항목을 클릭하면 찾을 수 있습니다. 그러면 https://www.opengl.org/registry으로 연결됩니다. 이 페이지에서 모든 사양 문서를 PDF 형식으로보고 다운로드 할 수 있습니다. 3.3 사양에서

는 중요한 정보는 섹션 3.9 (텍스처링)의 페이지 143분의 142에 필수 텍스처 형식을 받고있다. ("renderbuffer"는 형식으로 렌더링 할 수 있다는 것을 의미 임) 텍스처와 renderbuffer 색상 형식의 목록에서 다른 사람의 사이에서 찾을 수 있습니다 :

  • RGBA16
  • RG16
  • R16

4, 2 및 1 구성 요소가있는 16 비트/구성 요소 형식입니다.

질감 전용 컬러 포맷이 바로 아래를 포함 :

  • RGB16

이 3 개 성분과 그 16 비트/컴포넌트 포맷이다.

정확한 48 비트 RGB 형식은 이 아니며은 렌더링 대상으로 유효합니다. 그러나 더 많은 메모리를 사용하는 댓가로 64 비트 RGBA 형식은 잘 작동합니다.

+0

그래서 기본 워크 플로가 있어야합니다. 저는 raw 16 비트 회색 음영 이미지가 있습니다 .. 프레임 버퍼를 먼저 만들고 그레이 스케일 image.making으로 채우십시오. rg에서 동일한 픽셀 값을 복사하여 64 비트 렌더링 대상을 지정하십시오. abd b 및 알파 값을 1로 설정? – user3845376

+0

@ user3845376 : 프레임 버퍼는 그리는 곳입니다. 이미지는 채널 당 16 비트 ** 텍스처 **로 변환됩니다. 그런 다음 삼각형을 그리고 프래그먼트 셰이더의 텍스처에서 가져옵니다. 1 : 1 확대/축소 수준을 사용할 때 이미지 필터링을 피하려면'texelFetch' 함수를 사용하십시오. 다른 확대/축소 레벨의 경우 일반 '텍스처'GLSL 텍스처 액세스 기능을 사용하십시오. – datenwolf

+0

감사합니다 datenwolf 정말 OpenGl 어제 use.do를 사용하여 다른 라이브러리를 사용하여 16 비트 그레이 스케일 이미지를 그리는 데 사용할 수 있습니다. – user3845376