SDL 1.2を使用する場合、OpenGL Vertex Buffer Objects (VBO)を使用できるようにするには、何を含める必要がありますか?
現在、私はSDL.h, SDL_opengl.h, SDL_image.h
そしてエラーを取得します:
glGenBuffersARB, glBindBufferARB, glBufferDataARB not declared in this scope
SDL 1.2を使用する場合、OpenGL Vertex Buffer Objects (VBO)を使用できるようにするには、何を含める必要がありますか?
現在、私はSDL.h, SDL_opengl.h, SDL_image.h
そしてエラーを取得します:
glGenBuffersARB, glBindBufferARB, glBufferDataARB not declared in this scope
含める前にSDL_opengl.h
defineを使用する場合。GL_GLEXT_PROTOTYPES
#define GL_GLEXT_PROTOTYPES
#include "SDL.h"
#include "SDL_opengl.h"
私は働くかもしれないし、働かないかもしれない。それを「適切な」方法で実行したい場合は、glewのようなものを使用してください。
とを含める必要が<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");
開発中の1.3バージョンのSDLを入手して、少しの作業でOpenGL3.2コンテキストを開くことができます。
SFMLもチェックする価値があります。SDLに似ていますが、2D向けのハードウェアアクセラレーション、オブジェクト指向C ++であり、はるかに使いやすいです。OpenGLは、特に簡単に使用できます。繰り返しになりますが、OpenGL 3.2コンテキストをサポートするのは開発2.0バージョンです(リリース間近ですが)。
上記のARB以外のバージョンを使用する必要があります。
SDL_opengl.h
ファイルはかなり役に立たないと思います。個人的には、GLEW か GLee の使用をお勧めします。GLee をプロジェクトに追加するのは簡単ですが、OpenGL 3.0 で停止します (SDL は OpenGL 2.1 コンテキストのみを有効にするため、SDL アプリでは通常問題ありません)。GLEW にはもう少し作業が必要ですが、OpenGL 4 までの機能を有効にします。
SDL の VBO に関する同じ問題に遭遇しました。