使用 SDL 的顶点缓冲区对象
使用SDL 1.2时,我需要包含什么才能使用OpenGL顶点缓冲区对象(VBO)?
目前,我只包含 SDL.h、SDL_opengl.h、SDL_image.h
并收到错误:
glGenBuffersARB、glBindBufferARB、glBufferDataARB 未在此范围内声明
When using SDL 1.2, what do I need to include to be able to use OpenGL Vertex Buffer Objects (VBOs)?
Currently, I only include SDL.h, SDL_opengl.h, SDL_image.h
And get the errors:
glGenBuffersARB, glBindBufferARB, glBufferDataARB not declared in this scope
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您想在包含
SDL_opengl.h
之前定义GL_GLEXT_PROTOTYPES
。我可能工作也可能不工作。如果您想以“正确”的方式执行此操作,请使用类似 glew 的内容。
If you want to use
SDL_opengl.h
defineGL_GLEXT_PROTOTYPES
before including it.I may or might not work. If you want to do it the "proper" way, use something like glew.
您应该包含
和
。有时 OpenGL 扩展函数不能直接使用,必须使用 SDL_GL_GetProcAddress 加载(如果扩展不可用,则返回函数指针或 0)。您可能有兴趣查看加载扩展函数的 libglew。以下是您可以执行的操作(如果不使用 glew):
You should include
<GL/gl.h>
and<GL/glext.h>
. Sometimes OpenGl extension functions are not directly available and must be loaded using SDL_GL_GetProcAddress (this returns the function pointer or 0 if extension is not available). You may be interested to have a look to libglew which loads the extension functions.Here is how you may do it (if not using glew):
可以获取正在开发的 1.3 版本的 SDL 来打开 OpenGL 3.2 上下文 需要做一些工作。
SFML 也值得一试,它与 SDL 类似,但针对 2D 内容、面向对象的 C++ 进行了硬件加速,并且更易于使用。 OpenGL 使用起来特别简单。再次是支持 OpenGL 3.2 上下文的开发 2.0 版本(尽管它即将发布。)
您可能需要使用上述的非 ARB 版本。
It is possible to get the underdevelopment 1.3 version of SDL to open a OpenGL 3.2 context with a bit of work.
It's also worth checking out SFML, it's similar to SDL but is hardware accelerated for the 2D stuff, object orientated C++ and is much easier to use. OpenGL is particularly simple to use with it. Once again it's the development 2.0 version that supports OpenGL 3.2 contexts (although it's close to being released.)
You will probably need to use the non-ARB versions with the above.
我发现
SDL_opengl.h
文件相当无用。就我个人而言,我建议使用 GLEW 或 GLee。 GLee 更容易添加到您的项目中,但仅限于 OpenGL 3.0(通常在 SDL 应用程序中很好,因为 SDL 仅启用 OpenGL 2.1 上下文)。 GLEW 只需要多一点工作,但可以通过 OpenGL 4 实现功能。我在 SDL 中的 VBO 方面遇到了同样的问题。
I find the
SDL_opengl.h
file to be fairly useless. Personally, I recommend using GLEW or GLee. GLee is easier to add to your project but stops at OpenGL 3.0 (usually fine in SDL apps since SDL only enables an OpenGL 2.1 context). GLEW requires just a bit more work but enables stuff up through OpenGL 4.I ran into this same problem regarding VBOs in SDL.