Объекты буфера вершин с SDL - PullRequest
       17

Объекты буфера вершин с SDL

1 голос
/ 23 сентября 2011

При использовании SDL 1.2 , что мне нужно включить, чтобы использовать OpenGL Объекты буфера вершин (VBO)?

В настоящее время я включаюSDL.h, SDL_opengl.h, SDL_image.h

И получите ошибки:

glGenBuffersARB, glBindBufferARB, glBufferDataARB not declared in this scope

Ответы [ 4 ]

6 голосов
/ 23 сентября 2011

Если вы хотите использовать SDL_opengl.h, определите GL_GLEXT_PROTOTYPES перед его включением.

#define GL_GLEXT_PROTOTYPES

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

Я могу или не могу работать.Если вы хотите сделать это «правильным» способом, используйте что-то вроде glew .

4 голосов
/ 23 сентября 2011

Вы должны включить <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 голос
/ 24 сентября 2011

Возможно получить версию SDL для слаборазвитой версии 1.3 , чтобы открыть контекст OpenGL 3.2 с небольшим трудом.

Также стоит проверить SFML, он похож на SDL, но с аппаратным ускорением для 2D-объектов, объектно-ориентированным C ++ и намного проще в использовании. OpenGL особенно прост в использовании с ним. И снова это версия для разработчиков 2.0, которая поддерживает контексты OpenGL 3.2 (хотя она близка к выпуску).

Возможно, вам придется использовать версии без ARB с вышеприведенным.

0 голосов
/ 24 сентября 2011

Я считаю файл SDL_opengl.h довольно бесполезным.Лично я рекомендую использовать GLEW или GLee.GLee легче добавить в ваш проект, но останавливается на OpenGL 3.0 (обычно хорошо в приложениях SDL, поскольку SDL включает только контекст OpenGL 2.1).GLEW требует чуть больше работы, но позволяет работать через OpenGL 4.

Я столкнулся с той же проблемой, связанной с VBO в SDL.

...