콘텐츠로 바로 가기

NVIDIA GPUDirect for Video#

Basler는 NVIDIA GPUDirect for Video 기술을 지원합니다. Basler Framegrabber API를 통해 NVIDIA GPUDirect for Video 기술의 사용을 액세스하고 제어할 수 있습니다. NVIDIA GPUDirect for Video는 NVIDIA GPU(graphics processing unit)를 사용하는 시스템에 최적화되어 있습니다.

이 기술을 사용하면 낮은 지연 시간으로 비디오 프레임을 NVIDIA GPU memory로 효율적으로 전송할 수 있습니다. 서브프레임 전송 시간 내에 GPU로 비디오를 스트리밍할 수 있도록 완벽한 제어 기능을 제공합니다.

GPUDirect for Video 기술은 다음 환경에서 Windows OS를 사용하는 호스트 PC의 Basler Framegrabber API를 통해 사용할 수 있습니다.

  • OpenGL(Open Graphics Library), 또는
  • NVIDIA의 병렬 프로그래밍 프레임워크인 CUDA(Compute Unified Device Architecture).

NVIDIA GPUDirect for Video는 NVIDIA GPU(graphics processing unit)를 사용하는 시스템에 최적화되어 있습니다. 이 기술을 사용하면 낮은 지연 시간으로 비디오 프레임을 NVIDIA GPU memory로 효율적으로 전송할 수 있습니다. 서브프레임 전송 시간 내에 GPU로 비디오를 스트리밍할 수 있도록 완벽한 제어 기능을 제공합니다.

자세한 내용은 제조업체 사이트의 NVIDIA GPUDirect for Video 기술 및 GPUDirect 기술 개요 섹션을 참조하십시오.

Requirements#

Basler 프레임 그래버와 함께 GPUDirect for Video 기술을 사용하려면 시스템이 다음 요구 사항을 충족해야 합니다.

하드웨어#

지원되는 최신 NVIDIA GPU 목록은 여기에서 확인하십시오.

원하는 Basler 프레임 그래버.

소프트웨어#

  • Basler Framegrabber SDK: 버전 5.10.0 이상
  • 호스트 PC 운영 체제: Windows 10(64비트)
  • 병렬 컴퓨팅 플랫폼/API(참조: 설치):
    • CUDA(Compute Unified Device Architecture) 버전 11.6, 또는
    • OpenGL(Open Graphics Library)
  • 권장 IDE: Visual Studio 15.x 이상

정보

GPUDirect for Video를 실행하려면 추가 DLL 및 헤더 파일이 필요할 수 있습니다. 자세한 내용은 Basler 기술 지원팀에 문의하십시오.

GPUDirect for Video 기술 지원은 Windows 10 환경에서 테스트되었으며 해당 Windows 버전에서 보장됩니다.

설치#

전제 조건#

  • GPU 하드웨어: GPUDirect for Video 기술을 지원하는 NVIDIA GPU가 호스트 PC에 장착되어 있어야 합니다.
  • Parallel Computing Platform/API: 다음 패키지 중 하나가 호스트 PC에 설치되어 있어야 합니다.
    • CUDA(Compute Unified Device Architecture): NVIDIA의 병렬 프로그래밍 프레임워크
    • OpenGL(Open Graphics Library)
  • 프레임 그래버 하드웨어: 선택한 Basler 프레임 그래버가 호스트 PC에 연결되어 있습니다. 프레임 그래버 연결 방법에 대한 자세한 내용은 프레임 그래버 연결을 참조하십시오.
  • Framegrabber SDK: Basler Framegrabber SDK 5.10.0 이상이 설치되어 있습니다. 런타임 소프트웨어 설치 방법에 대한 자세한 내용은 Framegrabber SDK 설치를 참조하십시오.
  • Applet: 선택한 앱릿이 프레임 그래버에 플래싱되어 있으며(marathon 프레임 그래버에만 해당) 활성 앱릿으로 선택되어 있습니다. marathon 프레임 그래버 플래싱 방법에 대한 자세한 내용은 플래싱을 참조하십시오. 앱릿을 활성 앱릿으로 선택하는 방법에 대한 자세한 내용은 활성 앱릿 변경을 참조하십시오.
  • GPUDirect for Video Support Files: Basler에서 제공하는 파일:
    • siso_gpudirect.dll: 라이브러리 파일
    • siso_gpudirect.h: 항상 필요한 일반 함수를 포함하는 헤더 파일
    • siso_gpudirect_cuda.h: CUDA 작업에 필요한 헤더 파일
    • siso_gpudirect_gl.h: OpenGL 작업에 필요한 헤더 파일

GPUDirect for Video 지원 설치#

호스트 PC에 GPUDirect for Video 지원을 설치하려면:

  1. 라이브러리 파일 siso_gpudirect.dll을 Basler Framegrabber SDK 설치 디렉터리의 하위 폴더인 bin(C:\Program Files\Basler\FramegrabberSDK_5.XX.X\bin 등)에 복사합니다.
  2. 헤더 파일을 Basler Framegrabber SDK 설치 디렉터리의 하위 폴더인 include(C:\Program Files\Basler\FramegrabberSDK_5.XX.X\include 등)에 복사합니다.

설치 폴더의 언급된 하위 폴더에 파일을 복사한 후, Basler Framegrabber API를 통해 GPUDirect for Video 기능을 사용할 수 있습니다.

함수 레퍼런스#

Basler Framegrabber API를 통해 GPUDirect for Video를 제어하려면 CUDA 또는 OpenGL을 사용합니다.

CUDA 사용을 위한 사전 요구 사항#

  • 라이브러리 파일 siso_gpudirect.dll이 Framegrabber SDK 설치의 bin 하위 폴더로 복사되었습니다.
  • 헤더 파일 siso_gpudirect.h 및 siso_gpudirect_cuda.h가 Framegrabber SDK 설치의 include 하위 폴더로 복사되었습니다.

OpenGL 사용을 위한 사전 요구 사항#

  • 라이브러리 파일 siso_gpudirect.dll이 Framegrabber SDK 설치의 bin 하위 폴더로 복사되었습니다.
  • 헤더 파일 siso_gpudirect.h 및 siso_gpudirect_gl.h가 Framegrabber SDK 설치의 include 하위 폴더로 복사되었습니다.

사용 가능한 함수#

Basler Framegrabber API를 통해 GPUDirect for Video 기술을 제어하기 위한 함수는 CUDA와 OpenGL 모두 동일합니다. Basler Framegrabber API는 다음과 같은 함수를 제공합니다.

기능 GDInitLib
설명 전역 초기화입니다. 초기화를 위해 다른 함수보다 먼저 이 함수를 호출하십시오.
Parameters
  • [in] Fg_Struct* iFgHandle:
    유효한 프레임 그래버 인스턴스의 핸들입니다. 라이브러리 문서 참조 fglib Framegrabber API Manual을 참조하십시오.
  • [in] GD_CONTEXT iFlag:
    여기에서 사용할 기술을 정의합니다. 가능한 값 (GD_CTX_LIST):
    • GD_CTX_CUDA: CUDA 사용을 나타냅니다.
    • GD_CTX_OPENGL: OpenGL 사용을 나타냅니다.
    • GD_CTX_D3D9: 지원되지 않음
    • GD_CTX_D3D11: 지원되지 않음
기능 GDCloseLib
설명 라이브러리의 어떠한 함수도 더 이상 필요하지 않은 경우, 이 함수를 호출하여 다음에서 리소스를 해제해야 합니다. GDInitLib 함수 호출. 각 호출은 다음 함수에 대응해야 합니다. GCCloseLib 다음 함수 호출이 선행되어야 합니다. GDInitLib.
Parameters None
기능 GDGetContextInfo
설명 현재 컨텍스트에 대한 정보를 가져오려면 이 함수를 사용하십시오.
Parameters
  • [in] GD_CONTEXT_INFO_CMD iInfoCmd:
    가져올 정보를 지정하려면 이 파라미터를 사용하십시오. 사용 가능한 유일한 값: GD_CONTEXT_STRIDE_LENGTH. :
    Stride length는 다음과 같이 정의됩니다. 비디오 이미지가 메모리에 저장될 때 메모리 버퍼에는 각 픽셀 행 뒤에 추가 패딩 바이트가 포함될 수 있습니다. 패딩 바이트는 이미지의 메모리 저장 방식에는 영향을 미치지만 이미지 표시 방식에는 영향을 미치지 않습니다. Stride는 메모리의 한 픽셀 행에서 다음 픽셀 행까지의 바이트 수입니다. Stride는 피치(pitch)라고도 합니다. 패딩 바이트가 있는 경우, 다음 그림과 같이 Stride가 이미지의 너비보다 더 넓습니다. 크기가 같은 비디오 프레임을 포함하는 두 버퍼는 서로 다른 Stride를 가질 수 있습니다. 비디오 이미지를 처리할 때는 Stride를 고려해야 합니다.Stride Length:
    소스: https://msdn.microsoft.com/en-us/library/windows/desktop/aa473780(v=vs.85).aspx:
    정의한 이미지 크기가 패딩 제약 조건을 충족하는지 확인하십시오.
  • [out] void * pBuffer<:/br>The information provided (i.e. input value), for example, the value of the stride length, is written into this buffer. If pBuffer = NULL, piSize 정보(즉, 출력 값)를 저장하는 데 buffer에 필요한 크기를 제공합니다.
  • [in/out] size_t * piSize:
    이 함수를 호출할 때는 다음의 크기를 정의해야 합니다. pBuffer 이 Property에서 크기가 너무 작은 경우(전달된 buffer의 길이에 비해), 다음의 값은 size buffer의 크기에 맞게 자동으로 조정됩니다. 호출된 후 이 Property에는 에 기록된 바이트 수가 유지됩니다. pBuffer.
기능 GDRevokeBuffer
설명 수집 엔진(acquisition engine)에서 등록된 버퍼를 제거합니다. 이 함수는 이 버퍼와 연결된 내부적으로 할당된 모든 리소스를 해제합니다. 버퍼는 어떤 큐에도 대기 중이지 않은 경우에만 취소할 수 있습니다.
Parameters [in] BUFFER_HANDLE:
버퍼를 참조하는 핸들입니다. 버퍼 자체는 다음 함수를 통해 등록되었습니다. GDAllocateSourceBuffer, GDAnnounceCUDAArray, GDAnnounceTextureGL, 또는 GDAnnounceBufferGL.
기능 GDStartAcquisition
설명 수집 엔진을 시작합니다.
Parameters None
기능 GDStartAcquisitionEx
설명 수집 엔진을 시작합니다.
Parameters
  • [in] unsigned int apcTimeout:
    수집 엔진의 시간 초과 지속 시간(초 단위)을 설정합니다.
    Default: 5초.
  • [in] unsigned int apcFlags:
    수집 엔진의 특정 기능을 활성화하거나 비활성화하기 위한 플래그입니다.
    참조: 비동기 모드를 위한 콜백 함수 등록 (플래그 목록은 다음을 참조하십시오).
    Default: GD_ACQUISITION_DEFAULT_FLAGS
    → 다음으로 평가됨: FG_APC_IGNORE_TIMEOUTS | FG_APC_DELIVER_ERRORS.
    플래그 세부 정보:
    • FG_APC_DELIVER_ERRORS: 정상적으로 작동하려면 다음이 필요합니다. GDGetLastError .
    • FG_APC_IGNORE_TIMEOUTS: 지정된 시간 내에 이미지 데이터가 수신되지 않더라도 Acquisition 엔진이 계속 실행되도록 보장합니다. apcTimeout.
기능 GDStopAcquisition
설명 수집 엔진을 중지합니다.
Parameters None
기능 GDAllocateSourceBuffer
설명 이 함수는 단일 소스 버퍼용 메모리를 할당하고, 이 버퍼를 수집 엔진에 등록한 후, 해당 단일 버퍼를 참조하는 버퍼 핸들을 반환합니다.
Parameters
  • [in] uint32_t width: 이미지 너비
  • [in] uint32_t height: 이미지 높이
  • [in] GDBufferTypes type: Pixel Format을 정의하려면 이 Property를 사용합니다. 허용되는 값:
    • GD_UNSIGNED_BYTE
    • GD_BYTE
    • GD_UNSIGNED_SHORT
    • GD_SHORT
    • GD_UNSIGNED_INT
    • GD_INT
    • GD_FLOAT
    • GD_HALF_FLOAT
    • GD_UNSIGNED_BYTE_3_3_2
    • GD_UNSIGNED_BYTE_2_3_3_REV
    • GD_UNSIGNED_SHORT_5_6_5
    • GD_UNSIGNED_SHORT_5_6_5_REV
    • GD_UNSIGNED_SHORT_4_4_4_4
    • GD_UNSIGNED_SHORT_4_4_4_4_REV
    • GD_UNSIGNED_SHORT_5_5_5_1
    • GD_UNSIGNED_SHORT_1_5_5_5_REV
    • GD_UNSIGNED_INT_8_8_8_8
    • GD_UNSIGNED_INT_8_8_8_8_REV
    • GD_UNSIGNED_INT_10_10_10_2
    • GD_UNSIGNED_INT_2_10_10_10_REV
  • [out] BUFFER_HANDLE*: handle
기능 GDRegisterEvent
설명 이벤트 객체를 특정 iEventID.
Parameters
  • [in] EVENT_TYPE iEventID:
    가능한 값:
    • EVENT_ERROR: 모듈 오류에 대한 알림.
    • EVENT_COPY_FINISHED: 새로 채워진 buffer에 대한 알림. 이벤트 데이터는 다음 곳에 저장됩니다. EVENT_NEW_BUFFER_DATA. 또는 다음 함수를 사용할 수 있습니다. GDMemcpy.
  • [out] EVENT_HANDLE* phEvent:
    이 핸들을 사용하여 다음 함수를 통해 이벤트를 가져옵니다. GDEventGetData.
기능 GDEventGetData
설명 이벤트 핸들과 연결된 이벤트 데이터 큐에서 다음 이벤트 데이터 항목을 가져옵니다.
Parameters
  • [in] EVENT_HANDLE phEvent:
    이미 해당 함수를 통해 이 핸들을 생성했습니다. GDRegisterEvent.
  • [out] void * pBuffer:
    제공된 정보(즉, 출력 값)가 이 버퍼에 기록됩니다. 만약 pBuffer = NULL, piSize 정보(즉, 출력 값)를 저장하는 데 buffer에 필요한 크기를 제공합니다.
  • [in/out] size_t * piSize:
    이 함수를 호출할 때는 다음의 크기를 정의해야 합니다. pBuffer 이 Property에서 크기가 너무 작은 경우(전달된 buffer의 길이에 비해), 다음의 값은 size buffer의 크기에 맞게 자동으로 조정됩니다. 호출된 후 이 Property에는 에 기록된 바이트 수가 유지됩니다. pBuffer.
  • [in] uint64_t iTimeout<:/br/> The function doesn't deliver any output until the time-out is over (in this case, the function returns state GD_ERR_TIMEOUT ), 또는 지정된 이벤트가 발생할 때까지입니다.
기능 GDMemcpy
설명 프레임 그래버가 전달한 다음 프레임을 GPU로 복사합니다. 복사 프로세스를 트리거하려면 이 함수를 사용하십시오. 결과는 다음과 같이 전달됩니다. EVENT_NEW_BUFFER_DATA 유형입니다.
Parameters
  • [out] void * pBuffer:
    값이 이 버퍼에 기록됩니다. 만약 pBuffer = NULL, piSize 데이터를 저장하기 위해 버퍼에 필요한 크기를 제공합니다. EVENT_NEW_BUFFER_DATA 유형입니다.
  • [in/out] size_t * piSize:
    이 함수를 호출할 때는 다음의 크기를 정의해야 합니다. pBuffer 이 Property에서 크기가 너무 작은 경우(전달된 buffer의 길이에 비해), 다음의 값은 size buffer의 크기에 맞게 자동으로 조정됩니다. 호출된 후 이 Property에는 에 기록된 바이트 수가 유지됩니다. pBuffer.
기능 GDBufferUnblock
설명 이 함수는 복사 프로세스를 위해 버퍼의 차단을 해제합니다. 의 멤버로 수신한 각 버퍼는 EVENT_NEW_BUFFER_DATA 이 함수를 통해 차단 해제해야 합니다(예: 새로운 복사 프로세스를 위한 버퍼를 확보하기 위함). 버퍼의 차단을 해제하기 전에 버퍼 콘텐츠에 대한 작업이 완료되었는지 확인하십시오.
Parameters [in] BUFFER_HANDLE phBuffer
기능 GDBufferGetDataPtr
설명 이 함수는 버퍼의 메모리 위치 시작점에 대한 포인터를 반환합니다. 버퍼는 다음을 사용하여 생성되어야 합니다. GDAllocateSourceBuffer 함수와 함께 직접 사용할 수 있습니다.
Parameters
  • [in] BUFFER_HANDLE phBuffer
  • [out] void** mDataPtr :
    이 버퍼에서 관리하는 원시 데이터(raw data)를 가리키는 포인터를 포함합니다.
기능 GGDGetBufferInfo
설명 이 버퍼 핸들과 연결된 버퍼 모듈에 대한 정보를 조회하려면 이 함수를 사용하십시오.
Parameters
  • [in] BUFFER_HANDLE hBuffer
  • [in] GD_BUFFER_INFO_CMD iInfoCmd:
    가능한 값:
    • GD_BUFFER_TIMESTAMP:버퍼의 마지막 변경 타임스탬프입니다.
    • GD_BUFFER_TIMESTAMP_FREQUENCY:타임스탬프의 주파수입니다.
    • GD_BUFFER_PICNUMBER:버퍼 내용의 인덱스입니다.
    • GD_BUFFER_DATA_PTR:버퍼에서 관리하는 원본 데이터(raw data)에 대한 포인터입니다.
  • [out] void * pBuffer:
    값이 이 버퍼에 기록됩니다. 만약 pBuffer = NULL, piSize 데이터를 저장하는 데 버퍼에 필요한 크기를 제공합니다.
  • [in/out] size_t * piSize :
    이 함수를 호출할 때는 다음의 크기를 정의해야 합니다. pBuffer 이 파라미터에 전달된 크기가 (전달되는 버퍼 길이에 비해) 너무 작을 경우, size 값은 버퍼 크기에 맞게 자동으로 조정됩니다. 호출된 후, 이 파라미터는 에 기록된 바이트 수를 유지합니다. pBuffer.
기능 GDGetLastError
설명 발생한 마지막 오류와 연결된 메시지를 조회하려면 이 함수를 사용하십시오.
Parameters
  • [out] char * pMsgBuffer:
    값이 이 버퍼에 기록됩니다. 만약 pMsgBuffer = NULL, piSize 오류 메시지를 저장하는 데 버퍼에 필요한 크기를 제공합니다.
  • [in/out] size_t * piSize :
    이 함수를 호출할 때는 다음의 크기를 정의해야 합니다. pMsgBuffer 이 파라미터에 전달된 크기가 (전달되는 메시지에 비해) 너무 작을 경우, 다음의 값이 size 은(는) 메시지 크기에 맞게 자동으로 조정됩니다. 호출된 후, 이 파라미터는 에 기록된 바이트 수를 유지합니다. pBuffer.
기능 GDAnnounceTextureGL
설명 이 함수는 대상 객체를 복사 작업의 목적지로 등록하고 단일 버퍼를 참조하는 버퍼 핸들을 반환합니다.
Parameters
  • [in]GLuint texture:
    openGL로 생성한 텍스처의 ID입니다.
  • [out]BUFFER_HANDLE* handle:
    이 버퍼를 가리키는 핸들입니다.
기능 GDAnnounceBufferGL
설명 이 함수는 대상 객체를 복사 작업의 목적지로 등록하고 단일 버퍼를 참조하는 버퍼 핸들을 반환합니다.
Parameters
  • [in]GLuint buffer:
    openGL로 생성한 텍스처의 ID입니다.
  • [out]BUFFER_HANDLE* handle:
    이 버퍼를 가리키는 핸들입니다.
기능 GDAnnounceCUDAArray
설명 이 함수는 대상 객체를 복사 작업의 목적지로 등록하고 단일 버퍼를 참조하는 버퍼 핸들을 반환합니다.
Parameters
  • CUarray array:
    CUDA로 생성한 버퍼를 참조하는 핸들입니다.
  • BUFFER_HANDLE* handle:
    이 버퍼를 가리키는 핸들입니다.

데이터 형식#

STRUCT의 이름 EVENT_NEW_BUFFER_DATA
설명 이벤트가 소스 버퍼의 콘텐츠를 타겟 버퍼로 복사했습니다.
Parameters
  • BUFFER_HANDLE SourceBufferHandle:
    다음 함수를 통해 이 버퍼를 생성했습니다. GDAllocateSourceBuffer.
  • BUFFER_HANDLE TargetBufferHandle:
    다음 함수를 통해 이 버퍼를 생성했습니다. GDAnnounceCUDAArray (CUDA) 또는 다음 함수를 통해 GDAnnounceTextureGL 또는 PGDAnnounceBufferGL (OpenGL).

Enumerations#

GD_CTX_LIST
GD_CTX_CUDA CUDA 컨텍스트의 이름
GD_CTX_OPENGL OpenGL 컨텍스트의 이름
GD_CTX_D3D9 지원되지 않음
GD_CTX_D3D11 지원되지 않음
GD_CONTEXT_INFO_LIST
GD_CONTEXT_STRIDE_LENGTH Stride Length:
소스: https://msdn.microsoft.com/en-us/library/windows/desktop/aa473780(v=vs.85).aspx
GDBufferTypes
GD_UNSIGNED_BYTE
GD_BYTE
GD_UNSIGNED_SHORT
GD_SHORT
GD_UNSIGNED_INT
GD_INT
GD_FLOAT
GD_HALF_FLOAT
GD_UNSIGNED_BYTE_3_3_2
GD_UNSIGNED_BYTE_2_3_3_REV
GD_UNSIGNED_SHORT_5_6_5
GD_UNSIGNED_SHORT_5_6_5_REV
GD_UNSIGNED_SHORT_4_4_4_4
GD_UNSIGNED_SHORT_4_4_4_4_REV
GD_UNSIGNED_SHORT_5_5_5_1
GD_UNSIGNED_SHORT_1_5_5_5_REV
GD_UNSIGNED_INT_8_8_8_8
GD_UNSIGNED_INT_8_8_8_8_REV
GD_UNSIGNED_INT_10_10_10_2
GD_UNSIGNED_INT_2_10_10_10_REV
EVENT_TYPE_LIST
EVENT_ERROR 모듈 오류에 대한 알림.
EVENT_COPY_FINISHED 새로 Fill된 버퍼에 대한 알림. 이벤트 데이터는 다음 항목에 저장됩니다. EVENT_NEW_BUFFER_DATA.
GD_BUFFER_INFO_LIST
GD_BUFFER_TIMESTAMP 버퍼 내 타임스탬프 최종 변경
GD_BUFFER_TIMESTAMP_FREQUENCY 타임스탬프 주파수
GD_BUFFER_PICNUMBER 버퍼 콘텐츠 인덱스
GD_BUFFER_DATA_PTR 버퍼에 의해 관리되는 원시 데이터에 대한 포인터

예제#

전제 조건#

  • Basler로부터 받은 예제 폴더를 사용할 수 있습니다.
  • PC에 Visual Studio 15.x 이상이 설치되어 있습니다.
  • PC에 CMake가 설치되어 있습니다.
  • 해당 라이브러리가 PC에 설치되어 있습니다.

예제 사용 방법#

Basler가 제공하는 예제를 사용하려면:

  1. Basler로부터 받은 예제 폴더를 호스트 PC의 하드 드라이브로 복사합니다.

    CUDA 예제

    CUDA 예제의 경우, PC에 이미 설치된 라이브러리 외에 cuda.lib와 cudart.lib만 필요합니다.

    OpenGL 예제: CMake에서 glew를 찾을 수 있어야 합니다.

    CMake가 glew를 찾을 수 있는지 확인하십시오. 그렇지 않으면 프로젝트가 올바르게 빌드되지 않습니다.

    CMake는 사용자 상호 작용 없이도 glew를 찾을 수 있어야 합니다. 그러나 찾지 못하는 경우:

    1. 해당 환경 변수를 설정합니다:

      GLUT_ROOT_PATH 예를 들어 D:\libs\freeglut-2.8.1\win32

      GLEW_ROOT_PATH 예를 들어 D:\libs\glew-1.13.0\glew-1.13.0\Win32

    2. CMake에서 여전히 GLEW를 찾지 못하는 경우, CMake 프로젝트 변수를 수동으로 설정하십시오.

      GLEW_INCLUDE_DIR 예를 들어 D:/libs/glew-1.13.0/glew-1.13.0/x64/include

      GLEW_LIBRARY 예를 들어 D:/libs/glew-1.13.0/glew-1.13.0/x64/lib/glew32.lib

      OPENGL_gl_LIBRARY 예를 들어 opengl32

      OPENGL_glu_LIBRARY 예를 들어 glu32

  2. examples\gpudirect\cuda 또는 examples\gpudirect\opengl을 소스 디렉토리로 사용하여 CMake로 프로젝트를 생성합니다.

  3. 예제를 실행합니다.

예제를 실행하는 동안 applet을 선택하라는 메시지가 표시됩니다. 예를 들어 marathon frame grabber의 경우 Acq_SingleCXP6X4AreaGray.dll과 같은 흑백 applet을 선택하십시오. 이름이 일부 잘려서 끝부분만 보입니다.

marathon Frame Grabbers용: 예제에 Grayscale Applet 사용

Basler NVIDIA GPUDirect for Video 지원은 컬러 포맷뿐만 아니라 그레이스케일 포맷에서도 작동합니다.

그러나 두 예제 모두 흑백 applet과 함께 사용하도록 설계되었으므로 예제를 사용할 때 흑백 applet(예: marathon frame grabber 전용 Acq_SingleCXP6X4AreaGray.dll)을 선택해야 합니다.