문제

내가 원하는 기능을 사용하기 위해 아래에 노출되자.나는 윈도우에서,어떻게 해야 하나요?

도움이 되었습니까?

해결책

쉽고 솔루션:사 GLEW.시는 방법 .

하 솔루션:이 있는 경우 정말 강력한 이유 를 사용하지 않 GLEW,여기에 달성하는 방법이 없이 동일한다:

를 식별하 OpenGL 확장 extension Api 를 사용은 필요하지 않습니다.자에 나열 OpenGL 의 Extension 레지스트리.

예제:내가 원하는 기능을 사용하의 EXT_framebuffer_object 장.Api 내에서 사용하고자하는 이 확장은:

glGenFramebuffersEXT()
glBindFramebufferEXT()
glFramebufferTexture2DEXT()
glCheckFramebufferStatusEXT()
glDeleteFramebuffersEXT()

체크인의 경우 그래픽 카드로 지원하는 확장자를 사용 하고자 합니다.않는 경우,다음의 작업이 거의 끝났어!다운로드 및 설치가 최신 드라이버와 소프트웨어 그래픽 카드입니다.

예제:그래픽 카드에 내 PC NVIDIA6600GT.그래서 나는 방문 NVIDIA OpenGL 확장 명세 웹페이지를 찾을 수 있는 EXT_framebuffer_object 확장을 지원합니다.나는 다음드 NVIDIA OpenGL SDK 하고 설치합니다.

그래픽 카드 제조업체에 제공 glext.h 헤더 파일(이나 마찬가지로 명명된 헤더 파일)모든 선언을 사용하는 데 필요한 지원자.(주는지 확장을 지원할 수 있습니다.) 어느 장소가 이 헤더 파일 어딘가에 당신의 컴파일러를 선택할 수 있습니하거나 포함되는 디렉터리에서 귀하의 컴파일러를 포함 디렉토리 목록입니다.

추가 #include <glext.h> 라인의 코드를 포함한 헤더 파일의 코드입니다.

오픈 glext.h, 을 찾 API 를 사용하고 싶을 잡아당 추-고 선언입니다.

예제:검색에 대한 상기 프레임 버퍼 Api 을 찾아 그에 해당하는게 찾고 선언:

typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers); for GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei, GLuint *);

이 모든 방법은 당신의 헤더 파일이 있는 API 를 선언으로 2 가지 형태입니다.중 하나입니다 wgl 같은 추한 함수 포인터 선언입니다.다른 사람은 제정신을 보는 기능은 선언입니다.

각 extension API 를 사용하고 싶고,추가 코드에서는 선언 함수의 이름으로 입력의 보이는 문자열입니다.

예제:

PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT;
PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT;
PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT;
PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT;
PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT;

하지만 그것을 못생긴 외모,우리가 하고 있는 것입 선언 함수 포인터의 유형에 해당하는 extension API.

이러한 초기화 함수 포인터와 그들의 정당한 기능입니다.이러한 기능은 노출 라이브러리에 의해 또는 드라이버입니다.우리가 사용할 필요가 wglGetProcAddress() 기능니다.

예제:

glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC) wglGetProcAddress("glGenFramebuffersEXT");
glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC) wglGetProcAddress("glBindFramebufferEXT");
glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) wglGetProcAddress("glFramebufferTexture2DEXT");
glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) wglGetProcAddress("glCheckFramebufferStatusEXT");
glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC) wglGetProcAddress("glDeleteFramebuffersEXT");

을 확인하는 것을 잊지 마세요 기능에 대 한 포인터 NULL.면 wglGetProcAddress() 을 찾을 수 없는 확장 기능,영국인의 산책로 및 살레야 광장을 초기화한 포인터 NULL 입니다.

예제:

if (NULL == glGenFramebuffersEXT || NULL == glBindFramebufferEXT || NULL == glFramebufferTexture2DEXT
    || NULL == glCheckFramebufferStatusEXT || NULL == glDeleteFramebuffersEXT)
{
    // Extension functions not loaded!
    exit(1);
}

즉,우리가 수행!당신은 지금 사용할 수 있습니다 이러한 함수 포인터로 경우에는 함수 호출 존재했다.

예제:

glGenFramebuffersEXT(1, &fbo);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, colorTex[0], 0);

참고: 을 넘어 이동의 OpenGL1.1Windows 데이브 Astle—문서트가 필요한 모든 정보를 이해하는 이유이 한심한 상황이 존재하기에 윈도우와 그것의 주위에 얻는 방법.

다른 팁

는'매우 강력한 이유'가 사용하지 않는 GLEW 수 있는 라이브러리에서 지원하지 않는 컴파일러/IDE.E.g:Borland C++작성기입니다.

는 경우에,당신은 당신할 수 있습을 재건하에서 라이브러리 소스입니다.그것이 작동하는 경우,좋은,그렇지 않으면 수동으로 확장을 로드 밤로 만들어하는 소리입니다.

@Kronikarz:의 모습에서 그것은, GLEW 방법이 있을 것 같습니다.NVIDIA 는 이미 배송과 함께 그것의 OpenGL SDK.고 최신 릴리즈 되었 2007 년에 비교하는 기쁨을 거두었던 대회는 2006 년 도하.

하지만,사용은 라이브러리의 거의 동일한다.(GLEW 가 init() 해야 호출하기 전에 다른 아무것도 하지만입니다.) 그래서,당신은 필요가 없는 스위치지 않으면 당신이 찾을 수 있 일부 확장되고 있지 않에서 지원되는 기쁨.

GL3W 은 공개하는 스크립트를 만듭하는 라이브러리 로드 유일한 핵심 기능에 대한 OpenGL3/4.그것을 찾을 수 있습니다 github 에서:

https://github.com/skaslev/gl3w

GL3W 필요 Python2.6 를 생성하는 라이브러리 및 헤더를 위한 OpenGL;그것은 필요하지 않습 Python 습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top