[英]Vertex Buffer Objects with SDL
使用SDL 1.2時 ,我需要包括什么才能使用OpenGL 頂點緩沖對象 (VBO)?
當前,我僅包含SDL.h, SDL_opengl.h, SDL_image.h
並得到錯誤:
glGenBuffersARB, glBindBufferARB, glBufferDataARB not declared in this scope
您應該包括<GL/gl.h>
和<GL/glext.h>
。 有時,OpenGl擴展功能不直接可用,必須使用SDL_GL_GetProcAddress加載(這將返回功能指針,如果擴展不可用,則返回0)。 您可能有興趣查看libglew,它會加載擴展功能。
這是您可能的操作方式(如果不使用glew):
extern PFNGLGENBUFFERSARBPROC glGenBuffers; // Function pointer declaration, in a header file.
// Function pointer initialization
glGenBuffers = 0;
// Get the function (you should have checked that extension is available)
glGenBuffers = (PFNGLGENBUFFERSARBPROC)SDL_GL_GetProcAddress("glGenBuffersARB");
可以通過一些工作來獲取SDL的1.3開發不足版本, 以打開OpenGL 3.2上下文 。
還值得檢查SFML,它類似於SDL,但在2D東西,面向對象的C ++方面是硬件加速的,並且更易於使用。 OpenGL使用起來特別簡單。 再次是支持OpenGL 3.2上下文的Development 2.0版本(盡管它即將發布)。
您可能需要將非ARB版本與上述功能結合使用。
我發現SDL_opengl.h
文件相當無用。 就個人而言,我建議使用GLEW或GLee。 GLee更容易添加到項目中,但是在OpenGL 3.0處停止(在SDL應用程序中通常很好,因為SDL僅啟用OpenGL 2.1上下文)。 GLEW需要做更多的工作,但是可以通過OpenGL 4進行填充。
關於SDL中的VBO,我遇到了同樣的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.