1

SDL 1.2を使用する場合、OpenGL Vertex Buffer Objects (VBO)を使用できるようにするには、何を含める必要がありますか?

現在、私はSDL.h, SDL_opengl.h, SDL_image.h

そしてエラーを取得します:

glGenBuffersARB, glBindBufferARB, glBufferDataARB not declared in this scope

4

4 に答える 4

6

含める前にSDL_opengl.hdefineを使用する場合。GL_GLEXT_PROTOTYPES

#define GL_GLEXT_PROTOTYPES

#include "SDL.h"
#include "SDL_opengl.h"

私は働くかもしれないし、働かないかもしれない。それを「適切な」方法で実行したい場合は、glewのようなものを使用してください。

于 2011-09-23T16:39:35.217 に答える
4

とを含める必要が<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");
于 2011-09-23T16:40:03.923 に答える
1

開発中の1.3バージョンのSDLを入手して、少しの作業でOpenGL3.2コンテキストを開くことができます。

SFMLもチェックする価値があります。SDLに似ていますが、2D向けのハードウェアアクセラレーション、オブジェクト指向C ++であり、はるかに使いやすいです。OpenGLは、特に簡単に使用できます。繰り返しになりますが、OpenGL 3.2コンテキストをサポートするのは開発2.0バージョンです(リリース間近ですが)。

上記のARB以外のバージョンを使用する必要があります。

于 2011-09-24T12:16:41.763 に答える
0

SDL_opengl.hファイルはかなり役に立たないと思います。個人的には、GLEW か GLee の使用をお勧めします。GLee をプロジェクトに追加するのは簡単ですが、OpenGL 3.0 で停止します (SDL は OpenGL 2.1 コンテキストのみを有効にするため、SDL アプリでは通常問題ありません)。GLEW にはもう少し作業が必要ですが、OpenGL 4 までの機能を有効にします。

SDL の VBO に関する同じ問題に遭遇しました。

于 2011-09-23T20:24:04.357 に答える