2015-01-31 4 views
1

MacBook Pro (13-inch, Mid 2010)를 사용하고 있으며 OpenGL과 함께 작업하고 있습니다. 일부 기능이 라이브러리에서 누락되었습니다. 내 하드웨어에 관한 인터넷 사양을 찾았습니다. "OpenGL 3.3"을 지원합니다. 이상한 일로 OpenGL 버전을 인쇄했고 IT 2.1, NO 3.3입니다!. (그런 다음 최신 맥북 (2014)은 동일한 OpenGL 버전 2.1, WTF를가집니다.)OpenGL - ARB 확장자

그런 다음 나는 창문에서 거의 뛰어 올랐습니다. (JK)

나는 약간의 확장자를 가지고 약 2.1302를 검색했다. 그러나 어떤 문서도없고, 사용법도없고, 아무도 그것을 사용하지 않는다. 누가 제발 설명해 줄 수 있어요, 그게 뭐죠? 사용 방법? 그 차이점은 무엇입니까?

새로운 OpenGL 3.X 대신 비슷한 (또는 무엇인가) ARB 확장이 있습니다. 버전 3.3을 지원하는 사양을 작성하면 ARB가 동일해야합니다 (적어도 동일한 기능).

누가 어떤 일이 일어나고 있는지 나에게 설명하면 기쁠 것입니다.

질문 :

나는 FBO 그리기에 대한 멀티 텍스처에 문제가 있습니다. 매개 변수 GL_TEXTURE_2D_MULTISAMPLE 인 함수 glTexImage2DMultisample으로 만들 수 있습니다. 버전 3.2 이상입니다.

그래서 무엇을 사용해야합니까, 아니면 ARB로 할 수 있습니까?

라이브러리에서 GL_ARB_multisample이 발견되었습니다. 그게 뭐야? 어떤 사용법? 인터넷에서 찾은 모든 기능이 누락되었습니다. 헤더에는 GL_MULTISAMPLE_ARB과 같은 몇 가지 정의가 있습니다. glEnable (GL_MULTISAMPLE도 정의 됨)을 사용 설정하려고했으나 작동하지 않습니다.

도와주세요. :(

편집 :

당신이이 문제를 해결하기 위해 다른 방법을 알고 있다면, 나는 행복 할 것

원래 질문 :.OpenGL - FBO and alpha blending

+4

OS X은 생성 된 모든 OpenGL 컨텍스트의 기본값으로 레거시 프로필을 사용하며 2.1입니다. 핵심 프로필 (3.2 이상)을 사용하고 싶다고 알려야합니다. 내 [답변] (http://stackoverflow.com/a/20932820/1960455) [Shader를 컴파일 할 수 없다] 질문 (http://stackoverflow.com/q/20931528/1960455) –

+1

추가 정보 [OpenGL 기능에서 ARB는 무엇을 의미합니까?] (http://stackoverflow.com/q/2033514/1960455) : OpenGL의 다음 릴리스에있을 가능성이 높은 기능을 지원하기 위해 드라이버 제작자가 사용합니다 . 함수 및 상수는 사용중인 실제 OpenGL 버전의 일부가 아니라는 것을 나타 내기 위해 접두사 ARB가 붙습니다. 그 접두사 옆에는 일반적으로 공식 문서간에 차이점이 없습니다. –

+0

좋아요, 이제 함수를 사용할 수 있지만 모든 것이 손상된 것 같습니다. 'glBindTexture','glTexImageMultisample'을 사용하거나'GL_MAX_COLOR_TEXTURE_SAMPLES' 번호를 얻으려고하면'glGetError' 오류'GL_INVALID_ENUM' 또는'GL_INVALID_OPERATION'을 얻습니다. 당신의 대답을 읽고 GLUT 라이브러리를 사용했습니다. GLUT을 사용하지 않으면 어떻게 될까요? 그것을 올바르게 사용/포함하는 방법? 감사. – eSeverus

답변

1

당신은 레거시에서의 OpenGL 컨텍스트를 전환해야 코어 프로파일 : 코어 프로파일은 코드에 약간의 변경이 필요합니다. OpenGL과 GLSL의 새로운 버전이기 때문에 코드와 쉐이더를 마이그레이션해야합니다. 공식 비디오, 함수를 마이그레이션하고 재 작성하여 새로운 코드를 검증하는 방법을 확인하십시오. ersion. Apple Developer Site - OpenGL (오른쪽에있는 비디오).

중요한 것은 수행해야 할 일은 #import <OpenGL/gl3.h>을 추가하면 모든 기능을 사용할 수있게됩니다.

작동시키고 디버그 쉐이더를 얻으려면 NSOpenGLPixelFormat을 설정해야합니다. NSOpenGLPixelFormatAttribute 배열에 NSOpenGLProfileVersion3_2CoreNSOpenGLPFAOpenGLProfile 키를 추가합니다 : 이것은 당신이 당신의 코드를 디버깅하는 데 도움이

NSOpenGLPixelFormatAttribute attribs[] = { 
    // ... 
    NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core, 
    // ... 
}; 

.

도움을 많이 주셔서 감사 드리며, 귀하에게 도움이됩니다.